From 8d55d8111afbaece15665d494525476047920738 Mon Sep 17 00:00:00 2001 From: Aitov Ratmir Date: Wed, 24 Jan 2024 18:48:47 +0300 Subject: [PATCH] chore: add ci/cd --- .github/workflows/preview.yaml | 59 +++++++++++++++++++++++++++++++ .github/workflows/production.yaml | 51 ++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 .github/workflows/preview.yaml create mode 100644 .github/workflows/production.yaml diff --git a/.github/workflows/preview.yaml b/.github/workflows/preview.yaml new file mode 100644 index 0000000..adededf --- /dev/null +++ b/.github/workflows/preview.yaml @@ -0,0 +1,59 @@ +name: Vercel Preview Deployment + +env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + +on: + push: + branches-ignore: + - master + +jobs: + test: + name: Run tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + + - name: Install dependencies + run: npm ci + + - name: Install playwright browsers + run: npx playwright install --with-deps + + - name: Typecheck + run: npm run check-types + + - name: Lint + run: npm run lint + + - name: Run tests + run: npx playwright test + + deploy-preview: + needs: [test] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Vercel CLI + run: npm install --global vercel + + - name: Pull Vercel Environment Information + run: vercel pull --yes --environment=preview --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts + run: vercel build --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project Artifacts + id: deploy + run: echo preview_url=$(vercel deploy --prebuilt --token=${{ secrets.VERCEL_TOKEN }}) >> $GITHUB_OUTPUT + + - name: Comment on Pull Request + uses: thollander/actions-comment-pull-request@v2 + with: + message: | + Vercel Preview URL :rocket: : ${{ steps.deploy.outputs.preview_url }} + comment_tag: deployment diff --git a/.github/workflows/production.yaml b/.github/workflows/production.yaml new file mode 100644 index 0000000..0d5e44d --- /dev/null +++ b/.github/workflows/production.yaml @@ -0,0 +1,51 @@ +name: Vercel Production Deployment + +env: + VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} + +on: + push: + branches: + - master + +jobs: + test: + name: Run tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + + - name: Install dependencies + run: npm ci + + - name: Install playwright browsers + run: npx playwright install --with-deps + + - name: Typecheck + run: npm run check-types + + - name: Lint + run: npm run lint + + - name: Run tests + run: npx playwright test + + deploy-production: + needs: [test] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Install Vercel CLI + run: npm install --global vercel + + - name: Pull Vercel Environment Information + run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }} + + - name: Build Project Artifacts + run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} + + - name: Deploy Project Artifacts + run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}