Add jgphilpott's profile to the Dynamic (#112) #195
This file contains 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: Site Deployment Workflow with Data Update | |
on: | |
push: | |
branches: [main] | |
paths: | |
- "README.md" | |
- "screenshots/**" | |
pull_request: | |
branches: [main] | |
types: [closed] | |
paths: | |
- "README.md" | |
- "screenshots/**" | |
condition: github.event.pull_request.merged == true | |
jobs: | |
# This job generates latest data | |
generate-data: | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout the repository | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
fetch-depth: 0 | |
# Cache node modules for faster builds | |
- name: Cache node modules | |
uses: actions/cache@v4 | |
with: | |
path: site/node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
# Install Node.js | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
# Install Chromium for puppeteer | |
- name: Install Chromium | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y chromium-browser | |
# Clean Install npm packages | |
- name: Install npm packages | |
run: npm ci | |
working-directory: site/ | |
# Generate README.json and Screenshots | |
- name: Generate data | |
run: CHROME_BIN=$(which chromium-browser) npm run generate | |
working-directory: site/ | |
# Format and lint code | |
- name: Format and lint code | |
run: npm run format && npm run lint | |
working-directory: site/ | |
# Commit and Push the generated data | |
- name: Commit and Push generated data | |
uses: EndBug/add-and-commit@v9 | |
with: | |
author_name: "github-actions[bot]" | |
author_email: "41898282+github-actions[bot]@users.noreply.github.com" | |
message: "Update latest generated data" | |
add: . | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# This job wait for 60 seconds to make sure the data is updated | |
wait: | |
needs: generate-data | |
runs-on: ubuntu-latest | |
steps: | |
- name: Wait for 60 seconds | |
run: sleep 60 | |
# This job builds and deploys the site | |
build-and-deploy: | |
needs: wait | |
runs-on: ubuntu-latest | |
steps: | |
# Checkout the repository | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
fetch-depth: 0 | |
# Cache node modules for faster builds | |
- name: Cache node modules | |
uses: actions/cache@v4 | |
with: | |
path: site/node_modules | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
# Install Node.js | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20.x | |
# Clean Install npm packages | |
- name: Install npm packages | |
run: npm ci | |
working-directory: site/ | |
# Build the site | |
- name: Build the site | |
run: | | |
npm run build | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
working-directory: site/ | |
# Deploy to GitHub Pages | |
- name: Deploy to GitHub Pages | |
run: | | |
git remote set-url origin https://git:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git | |
git config user.email "41898282+github-actions[bot]@users.noreply.github.com" | |
git config user.name "github-actions[bot]" | |
if git diff --quiet --exit-code site/; then | |
npm run deploy -- -m "Deploy latest generated data to site (${{ github.sha }})" | |
else | |
npm run deploy -- -m "Deploy latest data and changes to site (${{ github.sha }})" | |
fi | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
working-directory: site/ |