Skip to content

nightly

nightly #481

Workflow file for this run

name: nightly
on:
schedule:
- cron: '15 1 * * *'
workflow_dispatch:
jobs:
nightly:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 9
- uses: actions/setup-node@v3
with:
node-version: 20.x
- name: Install dependencies
run: pnpm i --frozen-lockfile
- name: Generate types
run: pnpm generate ${{ secrets.GITHUB_TOKEN }}
- name: Check git status
id: status
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "changes=true" >> $GITHUB_OUTPUT
else
echo "changes=false" >> $GITHUB_OUTPUT
fi
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Configure git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Set timestamp
run: |
raw_timestamp=$(date +"%Y%m%d-%H%M%S")
timestamp=${raw_timestamp//[^a-zA-Z0-9]/-}
echo "timestamp=$timestamp" >> "$GITHUB_ENV"
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Get latest commit hash from bigcommerce/docs
run: |
gh_response=$(curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" "https://api.github.com/repos/bigcommerce/docs/commits?per_page=1")
most_recent_commit=$(echo "$gh_response" | jq -r '.[0].sha')
most_recent_commit_short=${most_recent_commit:0:7}
echo "sha=$most_recent_commit_short" >> "$GITHUB_ENV"
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Create branch
run: |
branch_name="nightly-$timestamp"
git checkout -b "$branch_name"
echo "branch_name=$branch_name" >> "$GITHUB_ENV"
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Stage changes
run: git add .
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Commit changes
run: |
commit_message="[nightly] generate types against bigcommerce/docs@$sha"
git commit -m "$commit_message"
echo "commit_message=$commit_message" >> "$GITHUB_ENV"
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Push changes
run: git push --set-upstream origin "$branch_name"
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Write PR body
run: |
body="Types generated via scheduled GitHub Actions job against [bigcommerce/docs@\`$sha\`](https://github.com/bigcommerce/docs/tree/$sha)"
echo "pr_body=$body" >> "$GITHUB_ENV"
- if: ${{ steps.status.outputs.changes == 'true' }}
name: Open PR
run: gh pr create --base main --title "$commit_message" --body "$pr_body"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}