mirror of
https://github.com/yeicor-3d/yet-another-cad-viewer.git
synced 2025-12-19 14:14:13 +01:00
66 lines
2.6 KiB
YAML
66 lines
2.6 KiB
YAML
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@v6"
|
|
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.14"
|
|
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
|