name: Node-CI on: push: branches: [main] paths-ignore: - '**.md' - 'docs/**' pull_request: branches: [main] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true permissions: contents: read jobs: lint: runs-on: ubuntu-24.04 steps: - name: Gitea Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup Node.js uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: '22' cache: 'npm' - name: Install dependencies run: npm ci - name: Run linter run: npm run lint - name: Notify Google Chat if: ${{ failure() }} # Use always to ensure that the notification is also send on failure of former steps uses: SimonScholz/google-chat-action@3b3519e5102dba8aa5046fd711c4b553586409bb # v1.1.0 with: webhookUrl: '${{ secrets.GOOGLE_CHAT_WEBHOOK }}' jobStatus: ${{ job.status }} title: Lint failed test: runs-on: ubuntu-24.04 steps: - name: Gitea Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup Node.js uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: '22' cache: 'npm' - name: Install dependencies run: npm ci - name: Run tests run: npm test -- --passWithNoTests - name: Notify Google Chat if: ${{ failure() }} # Use always to ensure that the notification is also send on failure of former steps uses: SimonScholz/google-chat-action@3b3519e5102dba8aa5046fd711c4b553586409bb # v1.1.0 with: webhookUrl: '${{ secrets.GOOGLE_CHAT_WEBHOOK }}' jobStatus: ${{ job.status }} title: Test failed build: runs-on: ubuntu-24.04 steps: - name: Gitea Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Setup Node.js uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0 with: node-version: '22' cache: 'npm' - name: Install dependencies run: npm ci - name: Generate Prisma run: npm run prisma:generate - name: Run build run: npm run build - name: Create and deploy Container image if: ${{ success() }} run: | VERSION_NUMBER=$(date +'%y%m%d.%H%M%S') docker build -t git.targo.ca/targo/targo-backend-staging:2.${VERSION_NUMBER} . docker tag git.targo.ca/targo/targo-backend-staging:2.${VERSION_NUMBER} git.targo.ca/targo/targo-backend-staging:latest docker login -u ${{ secrets.CI_USER }} -p ${{ secrets.CI_PASSWORD }} git.targo.ca docker push git.targo.ca/targo/targo-backend-staging:2.${VERSION_NUMBER} docker push git.targo.ca/targo/targo-backend-staging:latest - name: Notify Google Chat if: ${{ failure() }} # Use always to ensure that the notification is also send on failure of former steps uses: SimonScholz/google-chat-action@3b3519e5102dba8aa5046fd711c4b553586409bb # v1.1.0 with: webhookUrl: '${{ secrets.GOOGLE_CHAT_WEBHOOK }}' jobStatus: ${{ job.status }} title: Build failed