on: push: tags: - "v**" permissions: # Same as deploy2.yml contents: "write" pages: "write" id-token: "write" jobs: update-versions: runs-on: "ubuntu-latest" outputs: skip: "${{ steps.check_recursive.outputs.skip || 'false' }}" # Default to false if not set steps: - uses: "actions/checkout@v5" with: # Ensure we are not in a detached HEAD state ref: "master" token: "${{ secrets.GH_PAT }}" # Check that the tag commit is the latest master commit - id: check_recursive run: | git fetch --tags tag_commit=$(git rev-parse ${{ github.ref }}) master_commit=$(git rev-parse master) if [ "$tag_commit" != "$master_commit" ]; then echo "::warning ::The tag commit $tag_commit does not match the latest master commit $master_commit. This is probably a recursive tag push that will be ignored." echo "skip=true" >> $GITHUB_OUTPUT fi - run: "echo 'CLEAN_VERSION=${{ github.ref }}' | sed 's,refs/tags/v,,g' >> $GITHUB_ENV" # Write the new version to package.json - uses: "actions/setup-node@v6" - run: "yarn version --new-version $CLEAN_VERSION --no-git-tag-version" # Write the new version to pyproject.toml - run: "pipx install poetry" - uses: "actions/setup-python@v6" with: python-version: "3.13" cache: "poetry" - run: "poetry version $CLEAN_VERSION" # Commit the changes and move the tag! - if: "steps.check_recursive.outputs.skip != 'true'" run: | git config --global user.email "yeicor@users.noreply.github.com" git config --global user.name "Yeicor" if git commit -am "Automatically update version to $CLEAN_VERSION"; then git push # Move the tag to the new commit git tag -f -a "v$CLEAN_VERSION" -m "v$CLEAN_VERSION" git push -f --tags # Force push the tag to GitHub # The tag move will NOT trigger a new workflow else echo "No source change detected on version update (did you repeat a release tag??)" exit 1 fi deploy: # Makes sure all artifacts are updated and use the new version for the next deployment steps needs: "update-versions" if: "needs.update-versions.outputs.skip != 'true'" # Only run if the update-versions job did not skip uses: "./.github/workflows/deploy2.yml" secrets: "inherit" # Inherit the secrets from the parent workflow with: ref: "master" # Ensure we are cloning the latest version of the repository