Merge pull request #469 from LoganTann/patch-1 #1853
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
pull_request: | |
types: [opened, reopened] | |
jobs: | |
verify-docker-setup: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Init | |
run: ./scripts/docker_setup_init.sh | |
- name: Pull images | |
run: docker compose pull db | |
- name: Docker build | |
run: docker compose build web | |
- name: Docker init | |
run: docker compose run --rm web sh -c 'exit 0' | |
build-docker-image: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
outputs: | |
docker-tag: ${{ steps.meta.outputs.tags }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx to be able to use caching | |
uses: docker/setup-buildx-action@v2 | |
- name: Extract metadata (tags, labels) for Docker | |
id: meta | |
uses: docker/metadata-action@v3 | |
with: | |
images: local/${{ github.repository }} | |
- name: Build image | |
uses: docker/build-push-action@v3 | |
with: | |
file: Dockerfile.prod | |
tags: ${{ steps.meta.outputs.tags }} | |
cache-from: type=gha | |
cache-to: type=gha | |
lint: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
needs: [build-docker-image] | |
env: | |
NESTJS_STARTER_IMAGE: ${{ needs.build-docker-image.outputs.docker-tag }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx to be able to use caching | |
uses: docker/setup-buildx-action@v2 | |
- name: Build image | |
uses: docker/build-push-action@v3 | |
with: | |
load: true | |
file: Dockerfile.prod | |
tags: ${{ needs.build-docker-image.outputs.docker-tag }} | |
cache-from: type=gha | |
cache-to: type=gha | |
- name: Init | |
run: ./scripts/docker_setup_init.sh | |
- name: Pull images | |
run: docker compose pull db | |
- name: Run lint | |
run: docker compose run web yarn lint | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
needs: [build-docker-image] | |
env: | |
NESTJS_STARTER_IMAGE: ${{ needs.build-docker-image.outputs.docker-tag }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx to be able to use caching | |
uses: docker/setup-buildx-action@v2 | |
- name: Build image | |
uses: docker/build-push-action@v3 | |
with: | |
load: true | |
file: Dockerfile.prod | |
tags: ${{ needs.build-docker-image.outputs.docker-tag }} | |
cache-from: type=gha | |
cache-to: type=gha | |
- name: Init | |
run: ./scripts/docker_setup_init.sh | |
- name: Pull images | |
run: docker compose pull db | |
- name: Run tests | |
run: docker compose run web yarn test | |
test-request: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
needs: [build-docker-image] | |
env: | |
NESTJS_STARTER_IMAGE: ${{ needs.build-docker-image.outputs.docker-tag }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx to be able to use caching | |
uses: docker/setup-buildx-action@v2 | |
- name: Build image | |
uses: docker/build-push-action@v3 | |
with: | |
load: true | |
file: Dockerfile.prod | |
tags: ${{ needs.build-docker-image.outputs.docker-tag }} | |
cache-from: type=gha | |
cache-to: type=gha | |
- name: Init | |
run: ./scripts/docker_setup_init.sh | |
- name: Pull images | |
run: docker compose pull db | |
- name: Run request tests | |
run: docker compose run web yarn test:request | |
test-e2e: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
needs: [build-docker-image] | |
env: | |
NESTJS_STARTER_IMAGE: ${{ needs.build-docker-image.outputs.docker-tag }} | |
DUMMY_MOUNT: .:/dummy | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx to be able to use caching | |
uses: docker/setup-buildx-action@v2 | |
- name: Build image | |
uses: docker/build-push-action@v3 | |
with: | |
load: true | |
file: Dockerfile.prod | |
tags: ${{ needs.build-docker-image.outputs.docker-tag }} | |
cache-from: type=gha | |
cache-to: type=gha | |
- name: Init | |
run: ./scripts/docker_setup_init.sh | |
- name: Pull images | |
run: docker compose pull db | |
- name: Docker up | |
run: docker compose up --detach | |
- name: Cypress run | |
uses: cypress-io/github-action@v4 | |
with: | |
wait-on: 'http://localhost:3000' | |
wait-on-timeout: 120 | |
- name: Save Cypress artifacts | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: cypress-artifacts | |
path: | | |
cypress/videos | |
cypress/screenshots | |
- name: Docker setup logs | |
if: always() | |
run: docker compose logs --timestamps --tail="all" > docker-logs.txt | |
- name: Save log artifacts | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: log-artifacts | |
path: docker-logs.txt |