Adiciona tratamento de erros para inscrição em atividades e mensagens… #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 # Copilot edits | |
on: | |
push: | |
branches: | |
- "accelerate-with-copilot" | |
paths: | |
- "src/static/**" | |
permissions: | |
contents: read | |
actions: write | |
issues: write | |
env: | |
STEP_4_FILE: ".github/steps/4-copilot-on-github.md" | |
jobs: | |
find_exercise: | |
name: Find Exercise Issue | |
uses: skills/exercise-toolkit/.github/workflows/find-exercise-issue.yml@v0.1.0 | |
check_step_work: | |
name: Check step work | |
runs-on: ubuntu-latest | |
needs: [find_exercise] | |
env: | |
ISSUE_URL: ${{ needs.find_exercise.outputs.issue-url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Get response templates | |
uses: actions/checkout@v4 | |
with: | |
repository: skills/response-templates | |
path: skills-response-templates | |
- name: Update comment - checking work | |
run: | | |
gh issue comment "$ISSUE_URL" \ | |
--body-file skills-response-templates/step-feedback/checking-work.md \ | |
--edit-last | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# START: Check practical exercise | |
- name: Check participant info on activity cards | |
id: check-user-work | |
run: | | |
# Checks to perform | |
checks='{ | |
"app_js": { | |
"name": "app.js", | |
"passed": true, | |
"message": "" | |
}, | |
"styles_css": { | |
"name": "styles.css", | |
"passed": true, | |
"message": "" | |
} | |
}' | |
# Check for participants info in app.js | |
file="src/static/app.js" | |
keyphrase='participant' | |
minimum_occurences=3 | |
found_occurences=$(grep -o "$keyphrase" "$file" | wc -l) | |
if [ "$found_occurences" -lt "$minimum_occurences" ]; then | |
checks=$(echo $checks | jq '.app_js.passed = false') | |
checks=$(echo $checks | jq '.app_js.message = "Please use Copilot to update the web application activity cards to show participant info."') | |
fi | |
# Check for participants info in styles.css | |
file="src/static/styles.css" | |
keyphrase='participant' | |
minimum_occurences=1 | |
found_occurences=$(grep -o "$keyphrase" "$file" | wc -l) | |
if [ "$found_occurences" -lt "$minimum_occurences" ]; then | |
checks=$(echo $checks | jq '.styles_css.passed = false') | |
checks=$(echo $checks | jq '.styles_css.message = "Please use Copilot to update the web application styling to support participant info."') | |
fi | |
# Verify all checks passed | |
passed=$(echo $checks | jq '. | all(.passed?)') | |
# Flatten to an array for returning. Allows iteration during rendering. | |
results=$(echo $checks | jq 'to_entries | map({name: .key} + .value)') | |
# Save pass status to output | |
echo "passed=$passed" >> $GITHUB_OUTPUT | |
# Save results to output | |
echo 'results<<EOF' >> $GITHUB_OUTPUT | |
echo $results >> $GITHUB_OUTPUT | |
echo 'EOF' >> $GITHUB_OUTPUT | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build message - step results | |
id: build-message-step-results | |
uses: skills/action-text-variables@v1 | |
with: | |
template-file: skills-response-templates/step-feedback/step-results.md | |
template-vars: '{ | |
"step_number": 3, | |
"passed": ${{ steps.check-user-work.outputs.passed }}, | |
"results_table": ${{ steps.check-user-work.outputs.results }}, | |
"tips": [ | |
"Copilot is becoming more capable everyday. Make sure to always be experimenting!", | |
"Try testing what Copilot can do. Something like: Add a dark mode toggle in the top right." | |
] | |
}' | |
- name: Create comment - step results | |
run: | | |
gh issue comment "$ISSUE_URL" \ | |
--body "$COMMENT_BODY" \ | |
--edit-last | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
COMMENT_BODY: ${{ steps.build-message-step-results.outputs.updated-text }} | |
- name: Fail job if not all checks passed | |
if: steps.check-user-work.outputs.passed == 'false' | |
run: exit 1 | |
# END: Check practical exercise | |
- name: Build message - step finished | |
id: build-message-step-finish | |
uses: skills/action-text-variables@v1 | |
with: | |
template-file: skills-response-templates/step-feedback/step-finished-prepare-next-step.md | |
template-vars: | | |
next_step_number=4 | |
- name: Update comment - step finished | |
run: | | |
gh issue comment "$ISSUE_URL" \ | |
--body "$ISSUE_BODY" | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
ISSUE_BODY: ${{ steps.build-message-step-finish.outputs.updated-text }} | |
post_next_step_content: | |
name: Post next step content | |
needs: [find_exercise, check_step_work] | |
runs-on: ubuntu-latest | |
env: | |
ISSUE_URL: ${{ needs.find_exercise.outputs.issue-url }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Get response templates | |
uses: actions/checkout@v4 | |
with: | |
repository: skills/response-templates | |
path: skills-response-templates | |
- name: Create comment - add step content | |
run: | | |
gh issue comment "$ISSUE_URL" \ | |
--body-file "$STEP_4_FILE" | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create comment - watching for progress | |
run: | | |
gh issue comment "$ISSUE_URL" \ | |
--body-file skills-response-templates/step-feedback/watching-for-progress.md | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Disable current workflow and enable next one | |
run: | | |
gh workflow disable "Step 3" | |
gh workflow enable "Step 4" | |
gh workflow enable "Step 4b" | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |