Skip to content

post-commit

post-commit #1

Workflow file for this run

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 }}