name: Semantic Release on: push: branches: - main workflow_dispatch: permissions: contents: write issues: write pull-requests: write packages: write env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true jobs: release: name: Semantic Release runs-on: ubuntu-latest if: github.repository == 'christianlouis/DocuElevate' steps: - name: Checkout Code uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.GITHUB_TOKEN }} - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' cache: 'pip' - name: Install dependencies run: | python -m pip install --upgrade pip pip install python-semantic-release - name: Configure Git run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" - name: Run Semantic Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | semantic-release version --print semantic-release version semantic-release publish - name: Update changelog if no new version was released env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | if git diff --name-only HEAD~1 2>/dev/null | grep -q CHANGELOG.md; then echo "CHANGELOG.md was already updated by semantic-release version" else semantic-release changelog if ! git diff --quiet CHANGELOG.md; then git add CHANGELOG.md git commit -m "docs(changelog): update changelog [skip ci]" git push fi fi - name: Update build metadata files if changed run: | for f in VERSION BUILD_DATE GIT_SHA RUNTIME_INFO; do if [ -f "$f" ]; then git add -f "$f" fi done if ! git diff --staged --quiet; then git commit -m "chore(release): update build metadata files [skip ci]" git push fi