Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
398 changes: 199 additions & 199 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,199 +1,199 @@
name: CI
on:
pull_request:
types: [opened, edited, synchronize, reopened, ready_for_review]
branches:
- main
push:
branches:
- main

jobs:
setup:
name: Setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules

- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci

- name: Lint code
run: npm run lint

- name: Type-check
run: npm run type-check

build-preview:
name: Build Preview
if: contains(github.ref, 'refs/heads/main') != true
needs: [setup]
runs-on: ubuntu-latest
env:
alias: preview-pr-${{ github.event.pull_request.number }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
environment:
name: preview-pr-${{ github.event.pull_request.number }}
url: ${{ steps.netlify.outputs.deploy-url }}
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules

- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci

- name: cache build
uses: actions/cache@v4
id: build-cache
with:
key: ${{ runner.os }}-build-${{ hashFiles('src', 'dist', 'package-lock') }}
path: dist

- name: build
if: steps.build-cache.outputs.cache-hit != 'true'
run: npm run build

- name: Deploy preview on netlify
id: netlify
run: |
npx netlify deploy --dir=dist --alias=${{ env.alias }} --message "Preview deploy PR_${{ github.event.pull_request.number }} - ${{ github.event.pull_request.title }}"
echo "::set-output name=deploy-url::https://${{ env.alias }}--gcstatus.netlify.app"

unit-tests:
name: Unit tests and Coverage
runs-on: ubuntu-latest
needs: [setup]
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules

- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci

- name: Run unit tests
run: npm run test:ci

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}

deploy-staging:
name: Deploy staging environment
runs-on: ubuntu-latest
if: contains(github.ref, 'refs/heads/main')
environment:
name: staging
url: https://staging--gcstatus.netlify-app
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
needs: [unit-tests]
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules

- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci

- name: build
run: npm run build

- name: Deploy on staging
run: npx netlify deploy --dir=dist --alias=staging --message "Staging deploy"

deploy-release:
name: Deploy and Release
runs-on: ubuntu-latest
environment:
name: production
url: https://gcstatus.netlify.app
needs: [deploy-staging]
if: contains(github.ref, 'refs/heads/main')
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
VITE_BASE_URL: ${{ secrets.VITE_BASE_URL }}
steps:
- uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 22

- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules

- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci

- name: build
run: npm run build

- name: Deploy on production
run: npx netlify deploy --dir=dist --prod --message "Production deploy"

# - name: Generate release
# run: npm run semantic-release
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

all_required_checks_passed:
name: All required checks passed
runs-on: ubuntu-latest
needs: [unit-tests, build-preview]
if: contains(github.ref, 'refs/heads/main') != true
steps:
- name: Mark PR as ready to merge
run: exit 0
name: CI
on:
pull_request:
types: [opened, edited, synchronize, reopened, ready_for_review]
branches:
- main
push:
branches:
- main
jobs:
setup:
name: Setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm i
- name: Lint code
run: npm run lint
- name: Type-check
run: npm run type-check
build-preview:
name: Build Preview
if: contains(github.ref, 'refs/heads/main') != true
needs: [setup]
runs-on: ubuntu-latest
env:
alias: preview-pr-${{ github.event.pull_request.number }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
environment:
name: preview-pr-${{ github.event.pull_request.number }}
url: ${{ steps.netlify.outputs.deploy-url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: cache build
uses: actions/cache@v4
id: build-cache
with:
key: ${{ runner.os }}-build-${{ hashFiles('src', 'dist', 'package-lock') }}
path: dist
- name: build
if: steps.build-cache.outputs.cache-hit != 'true'
run: npm run build
- name: Deploy preview on netlify
id: netlify
run: |
npx netlify deploy --dir=dist --alias=${{ env.alias }} --message "Preview deploy PR_${{ github.event.pull_request.number }} - ${{ github.event.pull_request.title }}"
echo "::set-output name=deploy-url::https://${{ env.alias }}--gcstatus.netlify.app"
unit-tests:
name: Unit tests and Coverage
runs-on: ubuntu-latest
needs: [setup]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: Run unit tests
run: npm run test:ci
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
deploy-staging:
name: Deploy staging environment
runs-on: ubuntu-latest
if: contains(github.ref, 'refs/heads/main')
environment:
name: staging
url: https://staging--gcstatus.netlify-app
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
needs: [unit-tests]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: build
run: npm run build
- name: Deploy on staging
run: npx netlify deploy --dir=dist --alias=staging --message "Staging deploy"
deploy-release:
name: Deploy and Release
runs-on: ubuntu-latest
environment:
name: production
url: https://gcstatus.netlify.app
needs: [deploy-staging]
if: contains(github.ref, 'refs/heads/main')
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
VITE_BASE_URL: ${{ secrets.VITE_BASE_URL }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Cache node_modules
uses: actions/cache@v4
id: npm-cache
with:
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }}
path: node_modules
- name: Install dependencies
if: steps.npm-cache.outputs.cache-hit != 'true'
run: npm ci
- name: build
run: npm run build
- name: Deploy on production
run: npx netlify deploy --dir=dist --prod --message "Production deploy"
# - name: Generate release
# run: npm run semantic-release
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
all_required_checks_passed:
name: All required checks passed
runs-on: ubuntu-latest
needs: [unit-tests, build-preview]
if: contains(github.ref, 'refs/heads/main') != true
steps:
- name: Mark PR as ready to merge
run: exit 0
Loading
Loading