name: On push on: push: branches-ignore: - release paths-ignore: - 'dashboard/*' - 'examples/*' - 'README.md' - 'LICENSE' workflow_dispatch: env: PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7" jobs: build_and_push: name: Build and push Docker image runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3.0.0 - name: Login to docker hub uses: docker/login-action@v3.0.0 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Login to GitHub Container Registry uses: docker/login-action@v3.0.0 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ github.token }} - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: | ${{ github.repository }} ghcr.io/${{ github.repository }} tags: | type=raw,value=dev-{{date 'X'}} type=raw,value=development type=ref,event=branch type=edge,branch=main - name: Build and push ${{ github.repository }}:${{ steps.git.outputs.image_tag }} uses: docker/build-push-action@v5.1.0 with: platforms: ${{ env.PLATFORMS }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} provenance: false clean-ghcr: name: Delete old dev container images runs-on: ubuntu-latest steps: - name: Delete old dev images uses: snok/container-retention-policy@v2 with: image-names: endlessh-go cut-off: One day ago UTC account-type: personal token: ${{ secrets.TOKEN_DELETE_GHCR_IMAGES }} keep-at-least: 5 skip-tags: latest, development filter-tags: "dev-*" dry-run: False - name: Delete untagged images uses: snok/container-retention-policy@v2 with: image-names: endlessh-go cut-off: One hour ago UTC account-type: personal token: ${{ secrets.TOKEN_DELETE_GHCR_IMAGES }} keep-at-least: 0 untagged-only: True skip-tags: latest, development dry-run: False