Skip to content

Merge pull request #287 from pshenmic/feat/validators-structure-fix #1536

Merge pull request #287 from pshenmic/feat/validators-structure-fix

Merge pull request #287 from pshenmic/feat/validators-structure-fix #1536

Workflow file for this run

name: Build and push packages
on:
push:
tags:
- '*'
branches:
- 'master'
pull_request:
branches: [ "master" ]
env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}
jobs:
pull_request_lint:
runs-on: ubuntu-latest
steps:
- name: "Validate label"
if: |
(contains(github.event.pull_request.labels.*.name, 'backend') ||
contains(github.event.pull_request.labels.*.name, 'data contract') ||
contains(github.event.pull_request.labels.*.name, 'frontend') ||
contains(github.event.pull_request.labels.*.name, 'indexer')) == false &&
(github.event_name == 'pull_request')
run: exit 1
test_data_contract:
needs: pull_request_lint
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: NPM install
run: cd packages/data-contract && npm install
- name: Check lint rules
run: cd packages/data-contract && npm run lint
test_frontend:
needs: pull_request_lint
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: NPM install
run: cd packages/frontend && npm install
- name: Check lint rules
run: cd packages/frontend && npm run lint
test_api:
needs: pull_request_lint
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
services:
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '20.x'
- name: NPM install
run: cd packages/api && npm install
- name: Check lint rules
run: cd packages/api && npm run lint
- name: Run unit tests
run: cd packages/api && npm run test:unit
- name: Migrate DB
run: cd packages/api && POSTGRES_HOST=127.0.0.1 POSTGRES_DB=postgres POSTGRES_USER=postgres POSTGRES_PASS=postgres POSTGRES_DB=postgres npm run db:migrate
- name: Run integration tests
run: cd packages/api && POSTGRES_HOST=127.0.0.1 POSTGRES_DB=postgres POSTGRES_USER=postgres POSTGRES_PASS=postgres POSTGRES_DB=postgres npm run test:integration
build_api:
runs-on: ubuntu-latest
needs: pull_request_lint
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push API package Docker image
uses: docker/build-push-action@v4
with:
context: ./
file: ./packages/api/Dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:api
build_indexer:
needs: pull_request_lint
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push API package Docker image
uses: docker/build-push-action@v4
with:
context: ./packages/indexer
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:indexer