Skip to content

feat: initial version of the work with workflow artifacts exercise #1

feat: initial version of the work with workflow artifacts exercise

feat: initial version of the work with workflow artifacts exercise #1

Workflow file for this run

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