Initial 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 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/find-exercise-issue.yml@v0.7.0 | |
| 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/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 if new-assignment.prompt.md exists | |
| id: check-file-exists | |
| continue-on-error: true | |
| uses: skills/exercise-toolkit/actions/file-exists@v0.7.0 | |
| 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/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: 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/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: 4 | |
| - 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_4_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 4" | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |