Skip to content

Armstrong numbers exercise should be unlocked after completing Freelancer Rates (Numbers lesson) or split in two versions #2392

Armstrong numbers exercise should be unlocked after completing Freelancer Rates (Numbers lesson) or split in two versions

Armstrong numbers exercise should be unlocked after completing Freelancer Rates (Numbers lesson) or split in two versions #2392

Workflow file for this run

name: 'javascript / sync'
on:
issue_comment:
types: [created]
jobs:
format:
name: 'Sync all exercises'
runs-on: ubuntu-22.04
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/sync')
steps:
- name: 'Post acknowledgement that it will sync exercises'
continue-on-error: true # Never fail the build if this fails
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'The "Sync all exercises" action has started running.'
})
- name: 'Download PR data'
run: |
PR_DATA="/tmp/pr.json"
jq -r ".issue.pull_request.url" "$GITHUB_EVENT_PATH" | \
xargs curl --header 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' -o "$PR_DATA" --url
- name: 'Check fork status'
id: fork_status
run: |
IS_FORK="$(jq '.head.repo.fork' "/tmp/pr.json")"
echo "fork=$IS_FORK" >> "$GITHUB_OUTPUT"
- name: 'Setup SSH deploy key'
if: steps.fork_status.outputs.fork == 'false'
run: |
mkdir ~/.ssh
echo "${{ secrets.DEPLOY_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
- name: 'Checkout code'
run: |
PR_DATA="/tmp/pr.json"
HEAD_REF=$(jq -r ".head.ref" "$PR_DATA")
if [ ${{ steps.fork_status.outputs.fork }} == "false" ]; then
echo "::debug::Setting up repo using SSH"
HEAD_REPO=$(jq -r '.head.repo.ssh_url' "$PR_DATA")
else
echo "::debug::Setting up repo using HTTPS"
HEAD_REPO=$(jq -r '.head.repo.clone_url | sub("https://"; "https://x-access-token:${{ secrets.GITHUB_TOKEN }}@")' "$PR_DATA")
fi
git clone $HEAD_REPO .
git checkout -b "$HEAD_REF" "origin/$HEAD_REF"
- name: 'Install dependencies'
run: |
corepack enable pnpm
corepack pnpm install
- name: 'Sync exercises'
run: corepack pnpm node scripts/sync.mjs
- name: 'Commit changes'
run: |
# Check if there is nothing to commit (i.e. no syncing changes made)
if [ -z "$(git status --porcelain)" ]; then
echo "Exercises are already synced correctly"
exit 0
fi
# Setup the git user (required to commit anything)
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
# Commit the changes made by prettier
git add .
git commit -m "[CI] Sync exercises"
git push
- name: 'Post acknowledgement that it has synced the code'
continue-on-error: true # Never fail the build if this fails
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'The "Sync all exercises" action has finished running.'
})
- name: 'Post reminder to trigger build manually'
continue-on-error: true # Never fail the build if this fails
if: steps.fork_status.outputs.fork == 'true'
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: 'For security reasons, `/sync` does not trigger CI builds when the PR has been submitted from a fork. If checks were not passing due to code format, trigger a build to make the required checks pass, through one of the following ways:\n\n- Push an empty commit to this branch: `git commit --allow-empty -m "Trigger builds"`.\n- Close and reopen the PR.\n- Push a regular commit to this branch.'
})