Skip to content

Fix package publishing (#4) #3

Fix package publishing (#4)

Fix package publishing (#4) #3

name: Release and publish
on:
push:
branches: [main]
jobs:
release-and-publish:
runs-on: ubuntu-latest
permissions:
contents: write
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
sparse-checkout: .
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
registry-url: 'https://registry.npmjs.org'
- name: Get last release
run: |
COMMIT_NAME=$(git log -n 1 --pretty=format:%s)
LAST_RELEASE_VERSION=$(curl -L https://api.github.com/repos/$GITHUB_REPOSITORY/releases | jq -r '.|=sort_by(.name|ltrimstr("v")|split(".")|map(tonumber)|[.[0],.[1],-.[2]])|.[-1].name' | sed 's|v||')
echo "Last release version: ${LAST_RELEASE_VERSION}"
MAIN_COMMIT=$(git rev-parse origin/main)
echo "Main commit: ${MAIN_COMMIT}"
LAST_RELEASE_BRANCH="release-${LAST_RELEASE_VERSION}"
LAST_RELEASE_COMMIT=$(git rev-parse "origin/$LAST_RELEASE_BRANCH")
echo "Last release commit: ${LAST_RELEASE_COMMIT}"
echo "COMMIT_NAME=$COMMIT_NAME" >> "$GITHUB_ENV"
echo "LAST_RELEASE_VERSION=$LAST_RELEASE_VERSION" >> "$GITHUB_ENV"
- name: Make new release version number
run: |
npm version "$LAST_RELEASE_VERSION" --no-git-tag-version --allow-same-version
TAG_NEW_VERSION=$(npm version minor --no-git-tag-version --allow-same-version)
NEW_VERSION=$(echo $TAG_NEW_VERSION | sed 's|v||')
echo "NEW_VERSION=$NEW_VERSION" >> "$GITHUB_ENV"
echo "TAG_NEW_VERSION=$TAG_NEW_VERSION" >> "$GITHUB_ENV"
- name: Create new release branch
run: |
NEW_BRANCH="release-$NEW_VERSION"
git checkout -b "$NEW_BRANCH"
echo "Created new release branch: $NEW_BRANCH"
echo "NEW_BRANCH=$NEW_BRANCH" >> "$GITHUB_ENV"
- name: Commit package version
run: |
git config user.email "" && git config user.name "GitHub Release"
git add package.json && git add package-lock.json && git commit -am "Bump version to $NEW_VERSION [release]"
git push --set-upstream origin "$NEW_BRANCH"
- uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.TAG_NEW_VERSION }}
release_name: ${{ env.TAG_NEW_VERSION }}
commitish: ${{ env.NEW_BRANCH }}
body: ${{ env.COMMIT_NAME }}
draft: false
prerelease: false
- name: Install Packages
run: npm ci
- name: Build
run: npm run build
- name: Publish
run: npm publish --access=public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}