ci: update deploy workflow to match deploy-sites step in #26
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: '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 "[email protected]" | |
- 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: 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 |