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 - 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: Run build run: npm run build - uses: actions/upload-artifact@v3 with: name: dist path: dist retention-days: 1 - uses: actions/upload-artifact@v3 with: name: source path: src retention-days: 1 - uses: actions/upload-artifact@v3 with: name: Dockerfile path: Dockerfile retention-days: 1 - 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 deploy: needs: [lint, test, build] runs-on: ubuntu-24.04 #if: github.ref == 'refs/heads/main' permissions: contents: read id-token: write steps: - name: Getting Dockerfile uses: actions/download-artifact@v3 with: name: Dockerfile - name: Downloading dist folder uses: actions/download-artifact@v3 with: name: dist path: dist - name: Downloading src folder uses: actions/download-artifact@v3 with: name: source path: source - name: Set version number run: echo "VERSION_NUMBER=$(date +'%y%m%d.%H%M%S')" >> $GITHUB_ENV - name: Building docker image run: docker build -t git.targo.ca/targo/targo-frontend-staging:2.${{ env.VERSION_NUMBER }} . - name: Add tag Latest run: docker tag git.targo.ca/targo/targo-frontend-staging:2.${{ env.VERSION_NUMBER }} git.targo.ca/targo/targo-frontend-staging:latest - name: Push images to server run: | docker login -u ${{ secrets.CI_USER }} -p ${{ secrets.CI_PASSWORD }} git.targo.ca docker push git.targo.ca/targo/targo-frontend-staging:2.${{ env.VERSION_NUMBER }} docker push git.targo.ca/targo/targo-frontend-staging:latest