name: CI/CD Pipeline for Docker Tag Push on: push: tags: - "v*" - "edge" jobs: test: runs-on: ubuntu-latest strategy: matrix: node-version: - 22.x steps: - name: Checkout repository uses: actions/checkout@v4 - name: "Use Node.js ${{ matrix.node-version }}" uses: actions/setup-node@v4 with: node-version: "${{ matrix.node-version }}" - name: Install dependencies run: npm ci - name: Install edge version of whatsapp-web.js if: github.ref_name == 'edge' run: | npm install --save-exact github:pedroslopez/whatsapp-web.js#main - name: Run tests run: npm test timeout-minutes: 5 docker: needs: test runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to Docker Hub uses: docker/login-action@v4 with: username: "${{ secrets.DOCKER_HUB_USERNAME }}" password: "${{ secrets.DOCKER_HUB_TOKEN }}" - name: Extract metadata id: meta run: | if [[ "${{ github.ref_name }}" == "edge" ]]; then echo "tags=avoylenko/wwebjs-api:edge" >> $GITHUB_OUTPUT else echo "tags=avoylenko/wwebjs-api:${{ github.ref_name }},avoylenko/wwebjs-api:latest" >> $GITHUB_OUTPUT fi - name: Build and push with dynamic tag uses: docker/build-push-action@v5 with: platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true tags: ${{ steps.meta.outputs.tags }} build-args: | USE_EDGE=${{ github.ref_name == 'edge' }} no-cache: ${{ github.ref_name == 'edge' }}