Skip to content
This repository has been archived by the owner on Mar 23, 2024. It is now read-only.

Commit

Permalink
ci: disable auto deploy vercel (#58)
Browse files Browse the repository at this point in the history
* ci: disable auto deploy vercel

* ci: add client CI

* ci: update server CI

* ci: fix client CI

* fix: prettier

* ci: add PR helper

* ci: add deploy CI

* ci: update deploy version

* ci: fix deploy

* ci: move deploy to frontend and backend

* ci: add renovate

* ci: change renovate

* ci: test backend CI
  • Loading branch information
velenyx committed Sep 9, 2023
1 parent 19cf118 commit da4f630
Show file tree
Hide file tree
Showing 39 changed files with 16,166 additions and 15,630 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/canmerge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: PR helper is working 👷⚒️
run-name: PR helper is working ⚒️

on: [pull_request, pull_request_review, issue_comment]

jobs:
automerge:
permissions:
contents: write
issues: write
pull-requests: write

runs-on: ubuntu-latest
steps:
- name: PR Helper
uses: Matticusau/[email protected]
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
enable-prmerge-automation: true
enable-prcomment-automation: true
enable-prlabel-automation: true
prmerge-requireallchecks: true
prmerge-requirereviewcount: 1
prmerge-method: 'squash'
prlabel-default: 'pr-onhold'
prlabel-ready: 'pr-ready'
prlabel-onhold: 'pr-onhold'
prlabel-reviewrequired: 'review-required'
prlabel-automerge: 'auto-merge'
87 changes: 87 additions & 0 deletions .github/workflows/client.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
name: Frontend checker, will punish for bad code 🪓😵‍💫
run-name: ${{ github.actor }} is starting sueta at the frontend code ☺️

on:
push:
branches:
- dev-nextjs
paths:
- "client/**"
pull_request:
branches:
- dev-nextjs
paths:
- "client/**"

jobs:
pipeline:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x]
steps:
- uses: actions/checkout@v3
- name: Set up Node.JS ${{matrix.node-version}}
uses: actions/setup-node@v3
with:
node-version: ${{matrix.node-version}}

- name: Cache Yarn dependencies
uses: actions/[email protected]
with:
path: ./client/node_modules
key: ${{ runner.os }}-yarn-${{ hashFiles('./client/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install yarn and dependencies
working-directory: ./client
run: |
npm install --global yarn
yarn install --frozen-lockfile
- name: Lint and Format
working-directory: ./client
run: |
yarn lint:ts:check
yarn prettier:check
- name: Build project
working-directory: ./client
run: yarn build

deploy:
needs: pipeline
if: success()
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set Vercel Args
id: vercel_args
run: |
if [[ "${{ github.event_name }}" == "push" ]]; then
echo "::set-output name=args::--prod"
else
echo "::set-output name=args::"
fi
- name: Deploy Frontend
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID }}
github-token: ${{ secrets.GITHUB_TOKEN }}
vercel-project-id: ${{ secrets.PROJECT_ID }}
vercel-args: ${{ steps.vercel_args.outputs.args }}

- name: Deploy Storybook
uses: amondnet/vercel-action@v25
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID }}
github-token: ${{ secrets.GITHUB_TOKEN }}
vercel-project-id: ${{ secrets.PROJECT_ID_STORYBOOK }}
vercel-args: ${{ steps.vercel_args.outputs.args }}
146 changes: 146 additions & 0 deletions .github/workflows/nextjs_bundle_analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: MPL-2.0

name: 'Next.js Bundle Analysis'

on:
pull_request:
branches:
- dev-nextjs
paths:
- "client/**"
push:
branches:
- dev-nextjs # change this if your default branch is named differently
paths:
- "client/**"
workflow_dispatch:

defaults:
run:
# change this if your nextjs app does not live at the root of the repo
working-directory: ./client

permissions:
contents: read # for checkout repository
actions: read # for fetching base branch bundle stats
pull-requests: write # for comments

jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18

- name: Cache Yarn dependencies
uses: actions/[email protected]
with:
path: ./client/node_modules
key: ${{ runner.os }}-yarn-${{ hashFiles('./client/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install yarn and dependencies
working-directory: ./client
run: |
npm install --global yarn
yarn install --frozen-lockfile
# If pnpm is used, you need to switch the previous step with the following one. pnpm does not create a package-lock.json
# so the step above will fail to pull dependencies
# - uses: pnpm/action-setup@v2
# name: Install pnpm
# id: pnpm-install
# with:
# version: 7
# run_install: true

- name: Restore next build
uses: actions/cache@v3
id: restore-build-cache
env:
cache-name: cache-next-build
with:
# if you use a custom build directory, replace all instances of `.next` in this file with your build directory
# ex: if your app builds to `dist`, replace `.next` with `dist`
path: ./client/.next/cache
# change this if you prefer a more strict cache
key: ${{ runner.os }}-build-${{ env.cache-name }}

- name: Build next.js app
# change this if your site requires a custom build command
run: yarn build

# Here's the first place where next-bundle-analysis' own script is used
# This step pulls the raw bundle stats for the current bundle
- name: Analyze bundle
run: npx -p nextjs-bundle-analysis report

- name: Upload bundle
uses: actions/upload-artifact@v3
with:
name: bundle
path: ./client/.next/analyze/__bundle_analysis.json

- name: Download base branch bundle stats
uses: dawidd6/action-download-artifact@v2
if: success() && github.event.number
with:
workflow: nextjs_bundle_analysis.yml
branch: dev-nextjs
path: ./client/.next/analyze/base

# And here's the second place - this runs after we have both the current and
# base branch bundle stats, and will compare them to determine what changed.
# There are two configurable arguments that come from package.json:
#
# - budget: optional, set a budget (bytes) against which size changes are measured
# it's set to 350kb here by default, as informed by the following piece:
# https://infrequently.org/2021/03/the-performance-inequality-gap/
#
# - red-status-percentage: sets the percent size increase where you get a red
# status indicator, defaults to 20%
#
# Either of these arguments can be changed or removed by editing the `nextBundleAnalysis`
# entry in your package.json file.
- name: Compare with base branch bundle
if: success() && github.event.number
run: ls -laR ./client/.next/analyze/base && npx -p nextjs-bundle-analysis compare

- name: Get Comment Body
id: get-comment-body
if: success() && github.event.number
# https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
run: |
echo "body<<EOF" >> $GITHUB_OUTPUT
echo "$(cat ./client/.next/analyze/__bundle_analysis_comment.txt)" >> $GITHUB_OUTPUT
echo EOF >> $GITHUB_OUTPUT
- name: Find Comment
uses: peter-evans/find-comment@v2
if: success() && github.event.number
id: fc
with:
issue-number: ${{ github.event.number }}
body-includes: '<!-- __NEXTJS_BUNDLE -->'

- name: Create Comment
uses: peter-evans/create-or-update-comment@v2
if: success() && github.event.number && steps.fc.outputs.comment-id == 0
with:
issue-number: ${{ github.event.number }}
body: ${{ steps.get-comment-body.outputs.body }}

- name: Update Comment
uses: peter-evans/create-or-update-comment@v2
if: success() && github.event.number && steps.fc.outputs.comment-id != 0
with:
issue-number: ${{ github.event.number }}
body: ${{ steps.get-comment-body.outputs.body }}
comment-id: ${{ steps.fc.outputs.comment-id }}
edit-mode: replace
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
name: Teameights checker, will punish for bad code 🥵
run-name: ${{ github.actor }} is making deploy 🚀 Let's pray he will pass tests 😉
name: Backend checker, will punish for bad code 🥲🔫
run-name: ${{ github.actor }} is starting sueta at the backend code 🤠

on:
push:
branches: [dev]
branches:
- dev-nextjs
paths:
- "server/**"
pull_request:
branches: [dev]
branches:
- dev-nextjs
paths:
- "server/**"

jobs:
init:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -34,11 +42,26 @@ jobs:
- name: 🎧 Install modules
working-directory: ./server
run: npm install

- name: 🚀 Run linting
working-directory: ./server
run: npm run lint

- name: Run Prettier formatter
working-directory: ./server
run: npm run format

- name: 🚀 Run unit tests
working-directory: ./server
run: npm run test

- run: echo "🍏 This job's status is ${{ job.status }}."
- name: 🚀 Run coverage tests
working-directory: ./server
run: npm run test:cov
- run: echo "😼 Finished! Good job."

- name: Run build
working-directory: ./server
run: npm run build

- run: echo "😼 Finished! Good job."
18 changes: 9 additions & 9 deletions client/.storybook/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,28 @@ const config: StorybookConfig = {
options: {
sass: {
// Require your Sass preprocessor here
implementation: require('sass'),
},
},
},
implementation: require('sass')
}
}
}
],
framework: {
name: '@storybook/nextjs',
options: {
nextConfigPath: path.resolve(__dirname, '../next.config.js'),
},
nextConfigPath: path.resolve(__dirname, '../next.config.js')
}
},
docs: {
autodocs: 'tag',
autodocs: 'tag'
},
core: {
builder: '@storybook/builder-webpack5',
builder: '@storybook/builder-webpack5'
},
webpackFinal: async (config) => {
if (!config.resolve?.modules) return config;

config.resolve.modules.push(path.resolve(__dirname, '../src'));
return config;
},
}
};
export default config;
14 changes: 7 additions & 7 deletions client/.storybook/preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ const preview: Preview = {
values: [
{
name: 'blacked',
value: '#26292b',
},
],
value: '#26292b'
}
]
},
actions: { argTypesRegex: '^on[A-Z].*' },
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/,
},
},
},
date: /Date$/
}
}
}
};

export default preview;
Loading

2 comments on commit da4f630

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deploy preview for teameights ready!

✅ Preview
https://teameights-43h86pfxu-exortme1ster.vercel.app

Built with commit da4f630.
This pull request is being automatically deployed with vercel-action

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deploy preview for teameights-storybook ready!

✅ Preview
https://teameights-storybook-8qzlj42dd-exortme1ster.vercel.app

Built with commit da4f630.
This pull request is being automatically deployed with vercel-action

Please sign in to comment.