Continuous Deployment #754
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: Continuous Deployment | |
on: | |
push: | |
branches: | |
- master | |
schedule: | |
- cron: '0 0 * * *' | |
permissions: | |
contents: read | |
pages: write | |
id-token: write | |
concurrency: | |
group: 'pages' | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
build: | |
name: Build project | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@v4 | |
with: | |
ref: 'master' | |
- name: Use nodejs | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '20.x' | |
- name: Get yarn cache directory path | |
id: yarn-cache-dir-path | |
run: echo "cache_dir=$(yarn cache dir)" >> "$GITHUB_ENV" | |
- name: Activate dependency cache | |
uses: actions/cache@v4 | |
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | |
with: | |
path: ${{ env.cache_dir }} | |
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
restore-keys: | | |
${{ runner.os }}-yarn- | |
- name: Install dependencies | |
run: yarn install --frozen-lockfile | |
- name: Caching Gatsby | |
id: gatsby-cache-build | |
uses: actions/cache@v4 | |
with: | |
path: | | |
public | |
.cache | |
key: ${{ runner.os }}-gatsby-cache-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-gatsby-cache- | |
- name: Build website | |
id: build-website | |
run: yarn build | |
continue-on-error: true | |
env: | |
CI: true | |
- name: Clean Gatsby cache | |
id: clean-cache | |
if: steps.build-website.outcome != 'success' | |
run: yarn run gatsby clean | |
- name: Build website with clean cache | |
id: build-website-without-cache | |
if: steps.clean-cache.outcome == 'success' | |
run: yarn build | |
env: | |
CI: true | |
- name: Upload artifact | |
uses: actions/upload-pages-artifact@v3 | |
if: steps.build-website.outcome == 'success' || steps.build-website-without-cache.outcome == 'success' | |
with: | |
path: ./public | |
deploy: | |
name: Deploy project | |
environment: | |
name: github-pages | |
url: ${{ steps.deployment.outputs.page_url }} | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 |