name: Continuous Integration on: push: tags: - "*" branches: - master jobs: mocha: runs-on: ubuntu-latest strategy: matrix: node-version: [20.x] pnpm-version: [8] steps: - name: Check out the repo uses: actions/checkout@v3 - uses: pnpm/action-setup@v2 with: version: ${{ matrix.pnpm-version }} - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: pnpm install - name: ESLint & Prettier run: pnpm run lint - name: Prisma Migration env: DATABASE_URL: ${{ secrets.DATABASE_URL }} run: pnpm exec prisma migrate deploy - name: Build run: pnpm run build - name: Test run: pnpm run --if-present test docker: runs-on: ubuntu-latest needs: mocha steps: - name: Check out the repo uses: actions/checkout@v3 - name: Log in to Docker Hub uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Docker Generate Meta id: meta uses: docker/metadata-action@v5 with: images: | unknowableshade/quetza # generate Docker tags based on the following events/attributes # on tag event: tag using git tag, and as latest if the tag doesn't contain hyphens (pre-releases) # on push event: tag using git sha, branch name and as latest-dev tags: | type=raw,value=latest,enable=${{ github.ref_type == 'tag' && !contains(github.ref_name, '-') }} type=raw,value=latest-dev,enable=${{ github.ref_type == 'branch' && github.ref_name == 'master' }} type=raw,value=${{ github.ref_name }} type=raw,value=${{ github.sha }},enable=${{ github.ref_type == 'branch' }} flavor: | latest=false - name: Build and Push Docker Image uses: docker/build-push-action@v5 with: context: . push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }}