85 lines
2.4 KiB
YAML
85 lines
2.4 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
lint:
|
|
name: Lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: 16
|
|
cache: "npm"
|
|
- run: npm ci
|
|
- run: npm run lint
|
|
|
|
e2e:
|
|
name: E2E tests
|
|
runs-on: ubuntu-latest
|
|
services:
|
|
postgres:
|
|
image: postgres:13-alpine
|
|
options: >-
|
|
--health-cmd pg_isready
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
env:
|
|
POSTGRES_USER: pgremixtape
|
|
POSTGRES_PASSWORD: pgpassword
|
|
POSTGRES_DB: remixtape
|
|
ports:
|
|
- "5432:5432"
|
|
redis:
|
|
image: redis:6-alpine
|
|
options: >-
|
|
--health-cmd "redis-cli ping"
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
ports:
|
|
- "6379:6379"
|
|
env:
|
|
DATABASE_URL: postgresql://pgremixtape:pgpassword@localhost:5432/remixtape
|
|
REDIS_URL: redis://localhost:6379
|
|
CI: true
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- run: cp .env.example .env
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: 16
|
|
cache: "npm"
|
|
- run: npm ci
|
|
- run: npm run db:setup
|
|
- run: npm run build
|
|
- run: npx dotenv npm run e2e:ci
|
|
|
|
typecheck:
|
|
name: Typecheck
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
HUSKY_SKIP_INSTALL: 1
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-node@v2
|
|
with:
|
|
node-version: 16
|
|
- run: npm ci
|
|
- run: npx tsc
|
|
|
|
deploy:
|
|
if: github.ref == 'refs/heads/master'
|
|
needs: [lint, e2e, typecheck]
|
|
name: Deploy to Fly.io
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: superfly/flyctl-actions@master
|
|
env:
|
|
FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
|
|
with:
|
|
args: "deploy --strategy rolling"
|