name: Post-merge # Runs on every push to master. A single workflow with conditional jobs # replaces the previous 4 separate workflows (release.yml, post-merge.yml, # sync-wiki.yml, and the badges job from ci.yml). # # Job dependency graph: # # detect-type ──┬── release (skip if release commit) # ├── sync-wiki (skip if release commit) # ├── badges (skip if release commit) # └── vikunja (skip if release commit) # # When release.py creates a "release: vX.Y.Z" commit, all jobs skip # because it's a release commit. The tag push triggers publish.yml. on: push: branches: [master] jobs: detect-type: runs-on: docker timeout-minutes: 10 outputs: is-release: ${{ steps.check.outputs.is-release }} steps: - uses: actions/checkout@v4 with: fetch-depth: 1 - name: Check if this is a release commit id: check run: python3 scripts/ci/detect_release_commit.py release: needs: [detect-type] if: needs.detect-type.outputs.is-release == 'false' runs-on: docker timeout-minutes: 10 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.REPO_TOKEN }} - name: Set up environment run: make setup - name: Configure git run: | git config user.name "grm-ci-bot" git config user.email "grm-ci-bot@oblachno.fyi" - name: Run release env: PYTHONPATH: . run: | . .venv/bin/activate export PATH="$HOME/.local/bin:$PATH" python3 scripts/ci/release.py - name: Notify on failure if: failure() env: REPO_TOKEN: ${{ secrets.REPO_TOKEN }} PYTHONPATH: src run: | python3 scripts/ci/notify_failure.py \ --repo "${{ github.repository }}" \ --run-id "${{ github.run_id }}" \ --workflow "post-merge/release" \ --commit "${{ github.sha }}" sync-wiki: needs: [detect-type] if: needs.detect-type.outputs.is-release == 'false' runs-on: docker timeout-minutes: 10 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up environment run: make setup - name: Sync documentation to wiki env: REPO_TOKEN: ${{ secrets.REPO_TOKEN }} PYTHONPATH: src run: | . .venv/bin/activate python3 scripts/ci/sync_wiki.py --repo "${{ github.repository }}" --strict - name: Notify on failure if: failure() env: REPO_TOKEN: ${{ secrets.REPO_TOKEN }} PYTHONPATH: src run: | python3 scripts/ci/notify_failure.py \ --repo "${{ github.repository }}" \ --run-id "${{ github.run_id }}" \ --workflow "post-merge/sync-wiki" \ --commit "${{ github.sha }}" badges: needs: [detect-type] if: needs.detect-type.outputs.is-release == 'false' runs-on: docker timeout-minutes: 10 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 token: ${{ secrets.REPO_TOKEN }} - name: Set up environment run: make setup - name: Generate and push badges env: PRE_COMMIT_ALLOW_NO_CONFIG: "1" run: | . .venv/bin/activate python3 scripts/ci/push_badges.py - name: Notify on failure if: failure() env: REPO_TOKEN: ${{ secrets.REPO_TOKEN }} PYTHONPATH: src run: | python3 scripts/ci/notify_failure.py \ --repo "${{ github.repository }}" \ --run-id "${{ github.run_id }}" \ --workflow "post-merge/badges" \ --commit "${{ github.sha }}" vikunja: needs: [detect-type] if: needs.detect-type.outputs.is-release == 'false' runs-on: docker timeout-minutes: 10 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install dependencies run: python3 -m pip install --break-system-packages requests python-dotenv click - name: Update Vikunja task env: VIKUNJA_TOKEN: ${{ secrets.VIKUNJA_TOKEN }} PYTHONPATH: src run: python3 scripts/ci/post_merge.py --from-git - name: Notify on failure if: failure() env: REPO_TOKEN: ${{ secrets.REPO_TOKEN }} PYTHONPATH: src run: | python3 scripts/ci/notify_failure.py \ --repo "${{ github.repository }}" \ --run-id "${{ github.run_id }}" \ --workflow "post-merge/vikunja" \ --commit "${{ github.sha }}"