Fix package publishing (#4) #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |