Skip to content

refactor: switch to a monorepo structure WIP #21

refactor: switch to a monorepo structure WIP

refactor: switch to a monorepo structure WIP #21

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- dev
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# This job installs dependencies once and caches them.
build:
runs-on: ubuntu-latest
outputs:
yarn-types-cache-key: ${{ steps.restore-yarn-types.outputs.cache-primary-key }}
nc-cache-key: ${{ steps.restore-nc.outputs.cache-primary-key }}
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/corepack
- name: Restore Yarn Cache & Types
id: restore-yarn-types
uses: ./.github/actions/cache-deps
with:
mode: restore-yarn
- name: Echo cache hit
run: |
echo "Yarn cache hit: ${{ steps.restore-yarn-types.outputs.cache-hit-yarn }}"
- name: Yarn install & after-install generate types
if: steps.restore-yarn-types.outputs.cache-hit-yarn != 'true'
run: |
yarn install --immutable
yarn after-install
- name: Save Yarn Cache & Types
if: steps.restore-yarn-types.outputs.cache-hit-yarn != 'true'
uses: ./.github/actions/cache-deps
with:
mode: save-yarn
key: ${{ steps.restore-yarn-types.outputs.computed-cache-key-yarn }}
eslint:
needs: build
permissions:
checks: write
pull-requests: read
statuses: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Restore Yarn Cache & Types
uses: ./.github/actions/cache-deps
with:
mode: restore-yarn
- uses: CatChen/[email protected]
with:
request-changes: true # optional
fail-check: true # optional
github-token: ${{ secrets.GITHUB_TOKEN }} # optional
directory: './' # optional
targets: 'src' # optional
config-path: './eslint.config.mjs'
test:
needs: build
permissions:
contents: read
checks: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/corepack
- name: Restore Yarn Cache & Types
uses: ./.github/actions/cache-deps
with:
mode: restore-yarn
- name: Annotations and coverage report
uses: ArtiomTr/[email protected]
with:
skip-step: install
annotations: failed-tests
package-manager: yarn
test-script: yarn test:ci
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy:
needs: build
runs-on: ubuntu-latest
permissions:
pull-requests: write
id-token: write
name: Deploy to dev/staging
steps:
# Post a PR comment before deploying
- name: Post a comment while building
if: github.event.number
uses: mshick/add-pr-comment@v2
with:
message-id: praul
message: |
## Branch preview
⏳ Deploying a preview site...
repo-token: ${{ secrets.GITHUB_TOKEN }}
repo-token-user-login: 'github-actions[bot]'
- uses: actions/checkout@v4
- uses: ./.github/actions/corepack
- name: Restore Yarn Cache & Types
uses: ./.github/actions/cache-deps
with:
mode: restore-yarn
- name: Restore Next.js Build Cache & Cypress cache
id: restore-nc
uses: ./.github/actions/cache-deps
with:
mode: restore-nc
- uses: ./.github/actions/build
with:
secrets: ${{ toJSON(secrets) }}
#if: startsWith(github.ref, 'refs/heads/main')
- name: Save Next.js Build Cache & Cypress cache
if: steps.restore-nc.outputs.cache-hit-nc != 'true'
uses: ./.github/actions/cache-deps
with:
mode: save-nc
key: ${{ steps.restore-nc.outputs.computed-cache-key-nc }}
#- uses: ./.github/workflows/build-storybook
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: ${{ secrets.AWS_ROLE }}
aws-region: ${{ secrets.AWS_REGION }}
# Staging
- name: Deploy to the staging S3
if: startsWith(github.ref, 'refs/heads/main')
env:
BUCKET: s3://${{ secrets.AWS_STAGING_BUCKET_NAME }}/current
run: bash ./scripts/github/s3_upload.sh
# Dev
- name: Deploy to the dev S3
if: startsWith(github.ref, 'refs/heads/dev')
env:
BUCKET: s3://${{ secrets.AWS_DEVELOPMENT_BUCKET_NAME }}
run: bash ./scripts/github/s3_upload.sh
### PRs ###
# Extract branch name
- name: Extract branch name
shell: bash
## Cut off "refs/heads/", only allow alphanumeric characters and convert to lower case,
## e.g. "refs/heads/features/hello-1.2.0" -> "features_hello_1_2_0"
run: echo "branch=$(echo $GITHUB_HEAD_REF | sed 's/refs\/heads\///' | sed 's/[^a-z0-9]/_/ig' | sed 's/[A-Z]/\L&/g')" >> $GITHUB_OUTPUT
id: extract_branch
# Deploy to S3
- name: Deploy PR branch
if: github.event.number
env:
BUCKET: s3://${{ secrets.AWS_REVIEW_BUCKET_NAME }}/walletweb/${{ steps.extract_branch.outputs.branch }}
run: bash ./scripts/github/s3_upload.sh
# Comment
- name: Post a deployment link in the PR
if: always() && github.event.number
uses: mshick/add-pr-comment@v2
with:
message-id: praul
message: |
## Branch preview
✅ Deploy successful!
**Website:**
https://${{ steps.extract_branch.outputs.branch }}--walletweb.review.5afe.dev/home?safe=eth:0xA77DE01e157f9f57C7c4A326eeE9C4874D0598b6
**Storybook:**
https://${{ steps.extract_branch.outputs.branch }}--walletweb.review.5afe.dev/storybook/
message-failure: |
## Branch preview
❌ Deploy failed!