Skip to content

ci: update deploy-sites job to restore sage-lib-build cache #21

ci: update deploy-sites job to restore sage-lib-build cache

ci: update deploy-sites job to restore sage-lib-build cache #21

name: 'Release and Deploy v2'
on:
# Uncomment the line below if you want to run the workflow manually
# and comment out lines 7-9
# workflow_dispatch:
push:
branches:
- main
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
setup:
runs-on: ubuntu-latest
steps:
- name: Clone Sage-Lib Repo
uses: actions/checkout@v3
with:
# pulls all commits (needed for lerna / semantic release to correctly version)
fetch-depth: "0"
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16.20.0
- name: Set NPM Config
run: npm config set '//npm.pkg.github.com/:_authToken' '${{ secrets.ACCESS_TOKEN }}'
- name: Unsafe Perm set
run: npm config set unsafe-perm true
- name: Set Bot Name
run: git config user.name "Kajabi Automation Bot"
- name: Cache Node modules
uses: actions/cache@v3
id: sage-lib-node-modules
env:
cache-name: sage-lib-node-modules
with:
path: '**/node_modules'
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }}
- name: Install packages
if: steps.sage-lib-node-modules.outputs.cache-hit != true
run: yarn install --frozen-lockfile
lint:
needs: [setup]
runs-on: ubuntu-latest
steps:
- name: Check out latest
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16.20.0
- name: Restore Node modules
uses: actions/cache/restore@v3
id: restore-sage-lib-node-modules
env:
cache-name: sage-lib-node-modules
with:
path: '**/node_modules'
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }}
- name: Install packages
if: steps.restore-sage-lib-node-modules.outputs.cache-hit != true
run: yarn install --frozen-lockfile
- name: Lint
run: yarn lint
test:
needs: [setup]
runs-on: ubuntu-latest
steps:
- name: Check out latest
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16.20.0
- name: Restore Node modules
uses: actions/cache/restore@v3
id: restore-sage-lib-node-modules
env:
cache-name: sage-lib-node-modules
with:
path: '**/node_modules'
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }}
- name: Install packages
if: steps.restore-sage-lib-node-modules.outputs.cache-hit != true
run: yarn install --frozen-lockfile
- name: Test
run: yarn test
build:
needs: [setup]
runs-on: ubuntu-latest
steps:
- name: Check out latest
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16.20.0
- name: Restore Node modules
uses: actions/cache/restore@v3
id: restore-sage-lib-node-modules
env:
cache-name: sage-lib-node-modules
with:
path: '**/node_modules'
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }}
- name: Install packages
if: steps.restore-sage-lib-node-modules.outputs.cache-hit != true
run: yarn install --frozen-lockfile
- name: Build
run: yarn build
- name: Cache build assets
uses: actions/cache/save@v3
id: sage-lib-build-assets
env:
cache-name: sage-lib-build-assets
with:
path: |
'packages/**'
'docs/**'
key: ${{ runner.os }}-build-${{ env.cache-name }}
publish:
needs: [lint, test, build]
runs-on: ubuntu-latest
steps:
- name: Check out latest
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.7.7'
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16.20.0
- name: Restore Node modules
uses: actions/cache/restore@v3
id: restore-sage-lib-node-modules
env:
cache-name: sage-lib-node-modules
with:
path: '**/node_modules'
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/yarn.lock') }}
- name: Check cache hit
if: steps.restore-sage-lib-node-modules.outputs.cache-hit != 'true'
run: exit 1
- name: Set Bot Email
run: git config user.email "dev+github-bot@kajabi.com"
- name: Set Bot Name
run: git config user.name "Kajabi Automation Bot"
- name: Set NPM Config
run: npm config set '//npm.pkg.github.com/:_authToken' '${{ secrets.ACCESS_TOKEN }}'
- name: Unsafe Perm set
run: npm config set unsafe-perm true
- name: Restore Build assets
uses: actions/cache/restore@v3
id: restore-sage-lib-build-assets
env:
cache-name: sage-lib-build-assets
with:
path: |
'packages/**'
'docs/**'
key: ${{ runner.os }}-build-${{ env.cache-name }}
- name: Check Build Assets cache hit
if: steps.restore-sage-lib-build-assets.outputs.cache-hit != 'true'
continue-on-error: true
run: yarn build
- name: Lerna Boostrap
run: npx lerna bootstrap --ci
- name: Lerna Publish
run: npx lerna publish --registry github --yes
deploy-sites:
needs: publish
runs-on: ubuntu-latest
steps:
- name: Check out latest
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '2.7.7'
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: 16.20.0
- name: Restore Build assets
uses: actions/cache/restore@v3
id: restore-sage-lib-build-assets
env:
cache-name: sage-lib-build-assets
with:
path: |
'packages/**'
'docs/**'
key: ${{ runner.os }}-build-${{ env.cache-name }}
- name: Deploy Documentation Site
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
HEROKU_DOCS_APP_NAME: ${{ secrets.HEROKU_DOCS_APP_NAME }}
run: yarn docs:deploy
- name: Deploy Storybook Site
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
HEROKU_STORYBOOK_APP_NAME: ${{ secrets.HEROKU_STORYBOOK_APP_NAME }}
run: yarn storybook:deploy
- name: SassDocs Site Deploy
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
HEROKU_SASSDOCS_APP_NAME: ${{ secrets.HEROKU_SASSDOCS_APP_NAME }}
run: yarn sassdocs:deploy