name: Build and Push to Docker Hub on: push: branches: - master paths-ignore: - 'webpage/**' # # Run this action periodically to keep browsers up-to-date # even if there is no activity in this repo. # schedule: - cron: "43 2 * * 1" # allow only one workflow to run at a time # and cancel in-progress jobs if a new one is triggered concurrency: group: "dockerhub" cancel-in-progress: true env: DOCKER_IMAGE: m1k1o/neko jobs: build-base: name: Base Image runs-on: ubuntu-latest # # do not run on forks # if: github.repository_owner == 'm1k1o' steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker uses: docker/metadata-action@v5 id: meta with: images: ${{ env.DOCKER_IMAGE }} tags: | type=raw,value=base - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ github.actor }} password: ${{ secrets.DOCKER_TOKEN }} - name: Generate base Dockerfile run: go run utils/docker/main.go -i Dockerfile.tmpl -o Dockerfile - name: Build and push uses: docker/build-push-action@v6 with: context: ./ push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max build-app: name: App Image runs-on: ubuntu-latest # # do not run on forks # if: github.repository_owner == 'm1k1o' needs: build-base strategy: # Will build all images even if some fail. fail-fast: false matrix: tag: - firefox - waterfox - chromium - google-chrome - ungoogled-chromium - microsoft-edge - brave - vivaldi - opera - tor-browser - remmina - vlc - xfce - kde steps: - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker uses: docker/metadata-action@v5 id: meta with: images: ${{ env.DOCKER_IMAGE }} tags: | type=raw,value=latest,enable=${{ matrix.tag == 'firefox' }} type=raw,value=${{ matrix.tag }} - name: Login to Docker Hub uses: docker/login-action@v3 with: username: ${{ github.actor }} password: ${{ secrets.DOCKER_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 with: context: apps/${{ matrix.tag }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | BASE_IMAGE=${{ env.DOCKER_IMAGE }}:base cache-from: type=gha cache-to: type=gha,mode=max