0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00
logto/.github/workflows/main.yml
Gao Sun a59250ee49
Merge pull request #5220 from logto-io/gao-init-invitation-tables
feat(schemas): init org invitation tables
2024-01-12 20:54:42 +08:00

198 lines
5.3 KiB
YAML

name: Main
on:
push:
branches:
- master
- "push-action/**"
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
main-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node and pnpm
uses: silverhand-io/actions-node-pnpm-run-steps@v4
- name: Build
run: pnpm ci:build
main-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node and pnpm
uses: silverhand-io/actions-node-pnpm-run-steps@v4
- name: Prepack
run: pnpm prepack
- name: Lint
run: pnpm ci:lint
- name: Stylelint
run: pnpm ci:stylelint
main-test:
runs-on: buildjet-4vcpu-ubuntu-2204
steps:
- uses: actions/checkout@v4
- name: Setup Node and pnpm
uses: silverhand-io/actions-node-pnpm-run-steps@v4
- name: Build for test
run: pnpm -r build:test
- name: Test
run: pnpm ci:test
- name: Codecov core
uses: codecov/codecov-action@v3
with:
flags: core
directory: ./packages/core
- name: Codecov ui
uses: codecov/codecov-action@v3
with:
flags: ui
directory: ./packages/ui
main-dockerize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build
uses: docker/build-push-action@v5
with:
context: .
build-args: | # Test cloud build
additional_connector_args=--cloud
main-alteration:
runs-on: ubuntu-latest
steps:
# ** Checkout fresh and alteration ref **
- uses: actions/checkout@v4
with:
fetch-depth: 0
path: ./fresh
# Fetch the current version by finding the latest tag starts with "v", e.g. "v1.0.0-beta.19"
- id: version
working-directory: ./fresh
run: echo "current=$(git describe --match "@logto/core@*" --abbrev=0)" >> $GITHUB_OUTPUT
- uses: actions/checkout@v4
with:
ref: ${{ steps.version.outputs.current }}
path: ./alteration
# ** End **
- name: Copy lockfile # Make setup workflow happy
run: cp ./fresh/pnpm-lock.yaml ./
- name: Setup Node and pnpm
uses: silverhand-io/actions-node-pnpm-run-steps@v4
with:
run-install: false
# ** Prepack packages **
- name: Prepack fresh
working-directory: ./fresh
run: pnpm i && pnpm prepack
- name: Prepack alteration
working-directory: ./alteration
run: pnpm i && pnpm prepack
# ** End **
- name: Setup Postgres
uses: ikalnytskyi/action-setup-postgres@v5
# ** Setup up-to-date databases and compare (test `up`) **
- name: Setup fresh database
working-directory: ./fresh
run: pnpm cli db seed --test
env:
DB_URL: postgres://postgres:postgres@localhost:5432/fresh
- name: Setup alteration database
working-directory: ./alteration
run: |
cd packages/cli
pnpm start db seed
env:
DB_URL: postgres://postgres:postgres@localhost:5432/alteration
# FIXME: Last version of CLI doesn't support test data seeding. Here's a temporary workaround.
# We will remove this step when a new version of CLI is released.
- name: Setup alteration database test data
working-directory: ./fresh
run: pnpm cli db seed --legacy-test-data
env:
DB_URL: postgres://postgres:postgres@localhost:5432/alteration
- name: Run alteration scripts
working-directory: ./fresh
run: pnpm cli db alt deploy next
env:
ALTERATION_TEST: true
DB_URL: postgres://postgres:postgres@localhost:5432/alteration
- name: Compare databases
working-directory: ./fresh
run: node .scripts/compare-database.js fresh alteration
# ** End **
# ** Setup old databases and compare (test `down`) **
- name: Setup old database
working-directory: ./alteration
run: |
cd packages/cli
pnpm start db seed
env:
DB_URL: postgres://postgres:postgres@localhost:5432/old
# FIXME: Last version of CLI doesn't support test data seeding. Here's a temporary workaround.
# We will remove this step when a new version of CLI is released.
- name: Setup old database test data
working-directory: ./fresh
run: pnpm cli db seed --legacy-test-data
env:
DB_URL: postgres://postgres:postgres@localhost:5432/old
- name: Revert fresh database to old
working-directory: ./fresh
run: pnpm cli db alt r v$(echo ${{ steps.version.outputs.current }} | cut -d@ -f3)
env:
ALTERATION_TEST: true
DB_URL: postgres://postgres:postgres@localhost:5432/fresh
- name: Compare manifests
working-directory: ./fresh
run: node .scripts/compare-database.js fresh old
# ** End **
- name: Check alteration sequence
working-directory: ./fresh
run: node .scripts/check-alterations-sequence.js