feat: initial version of the work with workflow artifacts exercise #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/workflows/** | |
| permissions: | |
| contents: read | |
| actions: write | |
| issues: write | |
| env: | |
| STEP_4_FILE: ".github/steps/4-step.md" | |
| jobs: | |
| find_exercise: | |
| if: github.run_number != 1 | |
| name: Find Exercise Issue | |
| uses: skills/exercise-toolkit/.github/workflows/find-exercise-issue.yml@v0.9.1 | |
| 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 }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Get response templates | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: skills/exercise-toolkit | |
| path: exercise-toolkit | |
| ref: v0.9.1 | |
| - name: Find last comment | |
| id: find-last-comment | |
| uses: peter-evans/find-comment@v4 | |
| 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 workflow file exists | |
| id: check-workflow-file | |
| continue-on-error: true | |
| uses: skills/exercise-toolkit/actions/file-exists@v0.9.1 | |
| with: | |
| file: .github/workflows/build-deploy.yml | |
| - name: Check for exact workflow name | |
| id: check-workflow-name | |
| continue-on-error: true | |
| uses: skills/action-keyphrase-checker@v1 | |
| with: | |
| text-file: .github/workflows/build-deploy.yml | |
| keyphrase: '^name:\s*Build and Deploy' | |
| case-sensitive: true | |
| - name: Check for build job | |
| id: check-build-job | |
| continue-on-error: true | |
| uses: skills/action-keyphrase-checker@v1 | |
| with: | |
| text-file: .github/workflows/build-deploy.yml | |
| keyphrase: "build:" | |
| - name: Check for dev job | |
| id: check-dev-job | |
| continue-on-error: true | |
| uses: skills/action-keyphrase-checker@v1 | |
| with: | |
| text-file: .github/workflows/build-deploy.yml | |
| keyphrase: "dev:" | |
| - name: Lint build-deploy.yml with actionlint | |
| id: check-actionlint | |
| continue-on-error: true | |
| uses: raven-actions/actionlint@v2.1.1 | |
| with: | |
| files: .github/workflows/build-deploy.yml | |
| version: 1.7.10 | |
| fail-on-error: true | |
| - name: Wait for build and deploy workflow | |
| id: wait_for_build_deploy | |
| continue-on-error: true | |
| uses: skills/exercise-toolkit/actions/wait-for-workflow@v0.9.1 | |
| with: | |
| workflow-id: build-deploy.yml | |
| head-sha: ${{ github.sha }} | |
| status: completed | |
| polling-interval: 10 | |
| timeout: 100 | |
| fail-on-timeout: true | |
| - 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: "Workflow file exists at `.github/workflows/build-deploy.yml`" | |
| passed: ${{ steps.check-workflow-file.outcome == 'success' }} | |
| - description: "Workflow name is `Build and Deploy`" | |
| passed: ${{ steps.check-workflow-name.outcome == 'success' }} | |
| - description: "`build` job is defined" | |
| passed: ${{ steps.check-build-job.outcome == 'success' }} | |
| - description: "`dev` job is defined" | |
| passed: ${{ steps.check-dev-job.outcome == 'success' }} | |
| - description: "Build and Deploy workflow passes `actionlint` checks" | |
| passed: ${{ steps.check-actionlint.outcome == 'success' }} | |
| - description: "`build-deploy.yml` finishes successfully for this commit" | |
| passed: ${{ steps.wait_for_build_deploy.outputs.conclusion == 'success' }} | |
| # END: Check practical exercise | |
| - name: Fail job if not all checks passed | |
| if: contains(steps.*.outcome, 'failure') || steps.wait_for_build_deploy.outputs.conclusion != 'success' | |
| 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@v6 | |
| - name: Get response templates | |
| uses: actions/checkout@v6 | |
| with: | |
| repository: skills/exercise-toolkit | |
| path: exercise-toolkit | |
| ref: v0.9.1 | |
| - 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 }} | |
| vars: | | |
| full_repo_name: ${{ github.repository }} | |
| login: ${{ github.actor }} | |
| is_public: ${{ github.event.repository.private != true }} | |
| repo_visibility: ${{ github.event.repository.visibility }} | |
| - 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 }} |