name: CI on: push: branches: [main] pull_request: jobs: lang-lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: node scripts/lang-lint.mjs go-protocols: runs-on: ubuntu-latest services: postgres: image: postgres:16-alpine env: POSTGRES_DB: lambdamail_test POSTGRES_USER: lambdamail_test POSTGRES_PASSWORD: lambdamail_test ports: - 5432:5432 options: >- --health-cmd pg_isready --health-interval 5s --health-timeout 5s --health-retries 10 defaults: run: working-directory: services/protocols steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: { go-version-file: services/protocols/go.mod } - name: Run migrations run: | docker run --rm --network host \ -v "$(pwd)/../../migrations:/migrations" \ migrate/migrate:v4.17.1 \ -path=/migrations \ -database "postgres://lambdamail_test:lambdamail_test@localhost:5432/lambdamail_test?sslmode=disable" \ up - run: go vet ./... - run: go test ./... -v env: TEST_DATABASE_URL: postgres://lambdamail_test:lambdamail_test@localhost:5432/lambdamail_test?sslmode=disable ts-auth: runs-on: ubuntu-latest defaults: run: working-directory: services/auth steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: "20" } - run: npm install - run: npm run lint - run: npm test ts-storage: runs-on: ubuntu-latest defaults: run: working-directory: services/storage steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: "20" } - run: npm install - run: npm run lint - run: npm test webmail-build: runs-on: ubuntu-latest defaults: run: working-directory: services/webmail steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: { node-version: "20" } - run: npm install - run: npm run build compose-up: runs-on: ubuntu-latest needs: [go-protocols, ts-auth, ts-storage, webmail-build] steps: - uses: actions/checkout@v4 - run: cp .env.example .env - run: docker compose --env-file .env up --build --wait - run: docker compose ps - run: docker compose down -v