# Workflow name name: Build and Push mikrotik-tailscale Container # Run-name for each workflow run run-name: Build and Push mikrotik-tailscale Container on: push: branches: - main paths: - 'containers/mikrotik-tailscale/**' - '.forgejo/workflows/mikrotik-tailscale.yml' workflow_dispatch: {} schedule: - cron: '0 18 * * 5' # Runs every Friday at 6 PM UTC env: CONTAINER_NAME: mikrotik-tailscale # USER: ${{ github.actor }} USER: hbms jobs: build-and-push-arch: runs-on: ${{ matrix.arch }} strategy: matrix: arch: [ amd64, arm64 ] container: image: ghcr.io/catthehacker/ubuntu:act-22.04 steps: - name: Prepare environment variables run: | echo "$HOME/.local/bin" >> "$GITHUB_PATH" echo REGISTRY=${{ vars.REGISTRY }} >> $GITHUB_ENV - name: Checkout the repo uses: actions/checkout@v4 - name: Login to the registry uses: docker/login-action@v3 with: registry: ${{ vars.REGISTRY }} username: ${{ env.USER }} password: ${{ secrets.PACKAGE_TOKEN }} - name: Build and push uses: docker/build-push-action@v6 with: context: ./containers/mikrotik-tailscale/ file: ./containers/mikrotik-tailscale/Dockerfile push: true provenance: false tags: ${{ vars.REGISTRY }}/${{ env.USER }}/${{ env.CONTAINER_NAME }}-${{ matrix.arch }}:latest merge-images-via-manifest: runs-on: amd64 needs: build-and-push-arch container: image: ghcr.io/catthehacker/ubuntu:act-22.04 steps: - name: Generate and push multi-arch manifest run: | echo REGISTRY=${{ vars.REGISTRY }} >> $GITHUB_ENV echo ${{ secrets.PACKAGE_TOKEN }} | docker login ${{ vars.REGISTRY }} -u ${USER} --password-stdin docker manifest create ${{ vars.REGISTRY }}/${USER}/${{ env.CONTAINER_NAME }}:latest ${{ vars.REGISTRY }}/${USER}/${{ env.CONTAINER_NAME }}-amd64:latest ${{ vars.REGISTRY }}/${USER}/${{ env.CONTAINER_NAME }}-arm64:latest docker manifest push ${{ vars.REGISTRY }}/${USER}/${{ env.CONTAINER_NAME }}:latest