Skip to content

Initial commit

Initial commit #1

Workflow file for this run

name: Step 3
on:
push:
branches:
- main
paths:
- ".github/prompts/**"
- "**/*.prompt.md"
- "config.json"
- "assignments/**"
permissions:
contents: read
actions: write
issues: write
env:
STEP_4_FILE: ".github/steps/4-step.md"
jobs:
find_exercise:
name: Find Exercise Issue
if: github.run_number != 1
uses: skills/exercise-toolkit/.github/workflows/[email protected]
check_step_work:
name: Check step work
needs: [find_exercise]
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.0
- 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/[email protected]
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 if new-assignment.prompt.md exists
id: check-file-exists
continue-on-error: true
uses: skills/exercise-toolkit/actions/[email protected]
with:
file: ".github/prompts/new-assignment.prompt.md"
- name: Check for new assignment directory created
id: check-new-assignment-dir
continue-on-error: true
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const knownAssignments = ['python-basics', 'games-in-python', 'python-classes', 'data-analysis'];
const dirs = fs.readdirSync('assignments', { withFileTypes: true })
.filter(dirent => dirent.isDirectory())
.map(dirent => dirent.name);
const newDirs = dirs.filter(dir => !knownAssignments.includes(dir));
if (newDirs.length > 0) {
const message = `Found new assignment directory`;
core.setOutput('STEP_MESSAGE', message);
} else {
const message = 'No new assignment directory found in assignments/ folder';
core.setOutput('STEP_MESSAGE', message);
core.setFailed(message);
}
- name: Check that new assignment was added to config.json
id: check-config-updated
continue-on-error: true
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
const assignments = config.assignments || [];
if (assignments.length > 4) {
const message = `Found ${assignments.length} assignments in config.json (expected more than 4)`;
core.setOutput('STEP_MESSAGE', message);
} else {
const message = `Found ${assignments.length} assignments in config.json (expected more than 4)`;
core.setOutput('STEP_MESSAGE', message);
core.setFailed(message);
}
- name: Update comment - step results
uses: GrantBirki/[email protected]
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: 3
results_table:
- description: "Created new-assignment.prompt.md file"
passed: ${{ steps.check-file-exists.outcome == 'success' }}
- description: ${{ steps.check-new-assignment-dir.outputs.STEP_MESSAGE }}
passed: ${{ steps.check-new-assignment-dir.outcome == 'success' }}
- description: ${{ steps.check-config-updated.outputs.STEP_MESSAGE }}
passed: ${{ steps.check-config-updated.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.0
- name: Create comment - step finished
uses: GrantBirki/[email protected]
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: 4
- name: Create comment - add step content
uses: GrantBirki/[email protected]
with:
repository: ${{ env.ISSUE_REPOSITORY }}
issue-number: ${{ env.ISSUE_NUMBER }}
file: ${{ env.STEP_4_FILE }}
- name: Create comment - watching for progress
uses: GrantBirki/[email protected]
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 4"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}