jscutlery / semver

Nx plugin to automate semantic versioning and CHANGELOG generation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Error Finding Base Tag 'last-release' During GitHub Action Execution

mohijalili opened this issue · comments

commented

Description

I am encountering an issue when running the semver for the first time and subsequently when triggered by GitHub Actions. Initially, I receive the following message:

[lib1] 🟠 No previous version tag found, fallback to version 0.0.0.
New version will be calculated based on all changes since first commit.
If your project is already versioned, please tag the latest release commit with lib1_x.y.z and run this command again.

After removing the tags and running the action again, I encounter this error:

Run npx nx affected --base=last-release --target=version --baseBranch=main --trackDeps=true --allowEmptyRelease=true --dry-run=true

fatal: ambiguous argument 'last-release': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
nx affected
Run target for affected projects
...
Error: Command failed: git diff --name-only --no-renames --relative "last-release" "HEAD"
fatal: ambiguous argument 'last-release': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
...

GitHub Action Configuration

Below is the configuration of my GitHub Action for semantic release:

name: Semantic Release

on:
  push:
    branches: ['main']
  workflow_dispatch:

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: Use Node.js
        uses: actions/setup-node@v4.0.2
        with:
          node-version: 18.10.0
      - name: Setup Git
        run: |
          git config --global user.email ${{ secrets }}
          git config --global user.name ${{secrets }}
          git config --global credential.helper store
      - run: npm ci
      - name: Version
        shell: bash
        run: npx nx affected --base=last-release --target=version --baseBranch=main --trackDeps=true --allowEmptyRelease=true --dry-run=true
      - name: Tag last-release
        shell: bash
        run: |
          git tag -f last-release
          echo "https://${{ secrets }}:${{ secrets }}@github.com/${{ github.repository }}.git" > .git/credentials
          git push origin last-release --force

Each project has the following config:

    "version": {
      "executor": "@jscutlery/semver:version",
      "options": {
        "preset": "angular",
        "baseBranch": "HEAD:main",
        "tagPrefix": "lib1_",
        "push": true,
        "trackDeps": true,
        "commitMessageFormat": "feat({projectName}): release version {version} [skip ci]"
      }
    }

Additional Context

  • Node.js version: 18.10.0
  • "@nx/storybook": "16.10.0"
  • "@jscutlery/semver": "^5.2.2",
commented

Hey @edbzn , Can you help me out?

Hey, @mohijalili have you tried creating a light weight “last-release” tag based on a specific commit and pushing it from your local to your remote before running your workflow?

For example, create a tag based off the commit you want to start from on your local “git tag last-release COMMIT_HASH”. Then, push it to your remote “git push origin last-release” and start your release on GitHub.

Side note, you should remove the baseBranch, allowEmptyRelease, and dry-run flags from your version job in your workflow before running if you want to create a release.