Now we either lock all or none of the migrations to run, to make sure they are not out of order when multiple instances of Emigrate run concurrently.
59 lines
1.3 KiB
YAML
59 lines
1.3 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches: ['main', 'changeset-release/main']
|
|
pull_request:
|
|
|
|
jobs:
|
|
build:
|
|
name: Build and Test
|
|
timeout-minutes: 15
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
|
|
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
|
|
DO_NOT_TRACK: 1
|
|
|
|
services:
|
|
mysql:
|
|
image: mysql:8.0
|
|
env:
|
|
MYSQL_ROOT_PASSWORD: root
|
|
MYSQL_DATABASE: emigrate
|
|
MYSQL_USER: emigrate
|
|
MYSQL_PASSWORD: emigrate
|
|
ports:
|
|
- 3306:3306
|
|
options: --health-cmd="mysqladmin ping -h localhost" --health-interval=10s --health-timeout=5s --health-retries=5
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
|
|
- uses: pnpm/action-setup@v4.0.0
|
|
|
|
- name: Setup Node.js environment
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22.15.0
|
|
cache: 'pnpm'
|
|
|
|
- name: Install dependencies
|
|
run: pnpm install
|
|
|
|
- name: Wait for MySQL to be ready
|
|
run: |
|
|
for i in {1..30}; do
|
|
nc -z localhost 3306 && echo "MySQL is up!" && break
|
|
echo "Waiting for MySQL..."
|
|
sleep 2
|
|
done
|
|
|
|
- name: Checks
|
|
env:
|
|
MYSQL_HOST: localhost
|
|
MYSQL_PORT: 3306
|
|
run: pnpm checks
|