on: push: tags: - "v*" name: Test and Release jobs: npm-test: name: JavaScript Tests runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 name: Install Node with: node-version: latest - run: corepack enable - run: pnpm --version - uses: actions/setup-node@v4 with: node-version: latest cache: "pnpm" cache-dependency-path: "**/pnpm-lock.yaml" - name: Install dependencies run: pnpm install --frozen-lockfile --prefer-offline - name: Run Tests run: pnpm run test -- --outputTruncateLength=500 go-test: name: Go Tests runs-on: ubuntu-latest steps: - name: Install Go uses: actions/setup-go@v5 with: go-version: 1.24.2 check-latest: true - name: Checkout code uses: actions/checkout@v4 - name: Install Protoc uses: arduino/setup-protoc@v3 - name: Install gRPC and Go run: | go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest go install google.golang.org/protobuf/cmd/protoc-gen-go@latest - name: Run Go Tests with Coverage run: make test int-test: name: Integration Tests timeout-minutes: 60 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 name: Install Node with: node-version: latest - run: corepack enable - run: pnpm --version - uses: actions/setup-node@v4 with: node-version: latest cache: "pnpm" cache-dependency-path: "**/pnpm-lock.yaml" - name: Install dependencies run: pnpm install - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Writing certs to file run: | echo "${{ secrets.TTL_KEY }}" > shared_key.pem echo "${{ secrets.TTL_CERT }}" > shared_cert.pem - name: Build uses: docker/bake-action@v6 with: source: . load: true set: | *.cache-from=type=gha *.cache-to=type=gha,mode=max - name: Run Playwright tests run: docker compose up --exit-code-from playwright - uses: actions/upload-artifact@v4 if: always() with: name: playwright-report path: playwright-report/ retention-days: 30 buildx: needs: [go-test, npm-test, int-test] name: Release runs-on: ubuntu-latest steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0 - name: Login to DockerHub uses: docker/login-action@v3.4.0 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Log in to the Container registry uses: docker/login-action@v3.4.0 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Checkout uses: actions/checkout@v4 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: | amir20/dozzle ghcr.io/amir20/dozzle tags: | type=raw,value=latest type=semver,pattern={{version}},prefix=v type=semver,pattern={{major}}.{{minor}},prefix=v type=semver,pattern={{major}},prefix=v - name: Writing certs to file run: | echo "${{ secrets.TTL_KEY }}" > shared_key.pem echo "${{ secrets.TTL_CERT }}" > shared_cert.pem - name: Build and push uses: docker/build-push-action@v6.15.0 with: push: true context: . platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8 tags: ${{ steps.meta.outputs.tags }} build-args: TAG=${{ steps.meta.outputs.version }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max git-release: needs: [buildx] name: Github Release runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 0 - name: Install Node uses: actions/setup-node@v4 - name: Release to Github env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npx changelogithub