post-commit #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Step 2 | |
| on: | |
| repository_dispatch: | |
| types: | |
| - post-commit | |
| permissions: | |
| contents: write | |
| actions: write | |
| issues: write | |
| env: | |
| STEP_3_FILE: ".github/steps/3-step.md" | |
| jobs: | |
| find_exercise: | |
| name: Find Exercise Issue | |
| uses: skills/exercise-toolkit/.github/workflows/find-exercise-issue.yml@v0.7.0 | |
| check_step_work: | |
| name: Check step work | |
| runs-on: ubuntu-latest | |
| needs: [find_exercise] | |
| env: | |
| ISSUE_REPOSITORY: ${{ github.repository }} | |
| ISSUE_NUMBER: ${{ needs.find_exercise.outputs.issue-number }} | |
| # Don't check unless at least 3 commits have been made | |
| if: ${{ github.event.client_payload.branch_commit_count >= 3 }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Get response templates | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: skills/exercise-toolkit | |
| path: exercise-toolkit | |
| ref: v0.7.3 | |
| - name: Find last comment | |
| id: find-last-comment | |
| uses: peter-evans/find-comment@v3 | |
| with: | |
| repository: ${{ env.ISSUE_REPOSITORY }} | |
| issue-number: ${{ env.ISSUE_NUMBER }} | |
| direction: last | |
| - name: Update comment - checking work | |
| uses: GrantBirki/comment@v2.1.1 | |
| with: | |
| repository: ${{ env.ISSUE_REPOSITORY }} | |
| issue-number: ${{ env.ISSUE_NUMBER }} | |
| comment-id: ${{ steps.find-last-comment.outputs.comment-id }} | |
| file: exercise-toolkit/markdown-templates/step-feedback/checking-work.md | |
| edit-mode: replace | |
| # START: Check practical exercise | |
| - name: Check for initial commit | |
| id: check-for-initial-commit | |
| continue-on-error: true | |
| uses: actions/github-script@v6 | |
| env: | |
| commit_messages: ${{ toJson(github.event.client_payload.branch_commit_messages) }} | |
| keyword: "initial" | |
| with: | |
| script: | | |
| // Load commit messages and keyword | |
| const commitMessages = JSON.parse(process.env.commit_messages || "[]"); | |
| let keyword = process.env.keyword || ""; | |
| keyword = keyword.toLowerCase(); | |
| // Check commit messages for keyword | |
| for (const commit of commitMessages) { | |
| const message = commit.message.toLowerCase(); | |
| if (message.includes(keyword)) { | |
| return; | |
| } | |
| } | |
| throw new Error(`No commit message contains the keyword '${keyword}'`); | |
| - name: Check for game docs commit | |
| id: check-for-game-docs-commit | |
| continue-on-error: true | |
| uses: actions/github-script@v6 | |
| env: | |
| commit_messages: ${{ toJson(github.event.client_payload.branch_commit_messages) }} | |
| keyword: "game" | |
| with: | |
| script: | | |
| // Load commit messages and keyword | |
| const commitMessages = JSON.parse(process.env.commit_messages || "[]"); | |
| let keyword = process.env.keyword || ""; | |
| keyword = keyword.toLowerCase(); | |
| // Check commit messages for keyword | |
| for (const commit of commitMessages) { | |
| const message = commit.message.toLowerCase(); | |
| if (message.includes(keyword)) { | |
| return; | |
| } | |
| } | |
| throw new Error(`No commit message contains the keyword '${keyword}'`); | |
| - name: Check for developer docs commit | |
| id: check-for-developer-docs-commit | |
| continue-on-error: true | |
| uses: actions/github-script@v6 | |
| env: | |
| commit_messages: ${{ toJson(github.event.client_payload.branch_commit_messages) }} | |
| keyword: "developer" | |
| with: | |
| script: | | |
| // Load commit messages and keyword | |
| const commitMessages = JSON.parse(process.env.commit_messages || "[]"); | |
| let keyword = process.env.keyword || ""; | |
| keyword = keyword.toLowerCase(); | |
| // Check commit messages for keyword | |
| for (const commit of commitMessages) { | |
| const message = commit.message.toLowerCase(); | |
| if (message.includes(keyword)) { | |
| return; | |
| } | |
| } | |
| throw new Error(`No commit message contains the keyword '${keyword}'`); | |
| - name: Update comment - step results | |
| uses: GrantBirki/comment@v2.1.1 | |
| with: | |
| repository: ${{ env.ISSUE_REPOSITORY }} | |
| issue-number: ${{ env.ISSUE_NUMBER }} | |
| comment-id: ${{ steps.find-last-comment.outputs.comment-id }} | |
| edit-mode: replace | |
| file: exercise-toolkit/markdown-templates/step-feedback/step-results-table.md | |
| vars: | | |
| step_number: 2 | |
| results_table: | |
| - description: "Created initial commit" | |
| passed: ${{ steps.check-for-initial-commit.outcome == 'success' }} | |
| - description: "Created game docs commit" | |
| passed: ${{ steps.check-for-game-docs-commit.outcome == 'success' }} | |
| - description: "Created developer docs commit" | |
| passed: ${{ steps.check-for-game-docs-commit.outcome == 'success' }} | |
| # END: Check practical exercise | |
| - name: Fail job if not all checks passed | |
| if: contains(steps.*.outcome, 'failure') | |
| run: exit 1 | |
| post_next_step_content: | |
| name: Post next step content | |
| needs: [find_exercise, check_step_work] | |
| runs-on: ubuntu-latest | |
| env: | |
| ISSUE_REPOSITORY: ${{ github.repository }} | |
| ISSUE_NUMBER: ${{ needs.find_exercise.outputs.issue-number }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Get response templates | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: skills/exercise-toolkit | |
| path: exercise-toolkit | |
| ref: v0.7.3 | |
| - name: Create comment - step finished | |
| uses: GrantBirki/comment@v2.1.1 | |
| with: | |
| repository: ${{ env.ISSUE_REPOSITORY }} | |
| issue-number: ${{ env.ISSUE_NUMBER }} | |
| file: exercise-toolkit/markdown-templates/step-feedback/step-finished-prepare-next-step.md | |
| vars: | | |
| next_step_number: 3 | |
| - name: Create comment - add step content | |
| uses: GrantBirki/comment@v2.1.1 | |
| with: | |
| repository: ${{ env.ISSUE_REPOSITORY }} | |
| issue-number: ${{ env.ISSUE_NUMBER }} | |
| file: ${{ env.STEP_3_FILE }} | |
| - name: Create comment - watching for progress | |
| uses: GrantBirki/comment@v2.1.1 | |
| with: | |
| repository: ${{ env.ISSUE_REPOSITORY }} | |
| issue-number: ${{ env.ISSUE_NUMBER }} | |
| file: exercise-toolkit/markdown-templates/step-feedback/watching-for-progress.md | |
| - name: Disable current workflow and enable next one | |
| run: | | |
| gh workflow disable "${{github.workflow}}" | |
| gh workflow enable "Step 3" | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |