Skip to content

feat: split builds

feat: split builds #18

Workflow file for this run

name: Canary
on:
push:
branches:
- canary
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache Docker layers
uses: actions/cache@v3
with:
path: |
/tmp/.buildx-cache
${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Extract metadata
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
latest=true
tags: |
type=schedule,pattern={{date 'YYYYMMDD-HHmmss' tz='UTC'}}
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{major}}.{{minor}}.{{patch}}
type=semver,pattern={{version}}
type=semver,pattern={{major}}
type=sha
- name: Build and push
uses: docker/build-push-action@v4
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
platforms: linux/amd64,linux/arm64
file: ./docker/prod/Dockerfile
cache-from: |
type=local,src=/tmp/.buildx-cache
type=local,src=${{ steps.composer-cache.outputs.dir }}
cache-to: |
type=local,dest=/tmp/.buildx-cache
type=local,dest=${{ steps.composer-cache.outputs.dir }}
# amd64:
# runs-on: ubuntu-latest
# steps:
# - name: Check out the code
# uses: actions/checkout@v4
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Prepare .env file
# run: |
# cp .env.production.example .env.production
# - name: Build and push
# uses: docker/build-push-action@v6
# with:
# context: .
# platforms: linux/amd64
# push: true
# tags: kdurek/dokploy:canary
# arm64:
# runs-on: ubuntu-latest
# steps:
# - name: Check out the code
# uses: actions/checkout@v4
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Prepare .env file
# run: |
# cp .env.production.example .env.production
# - name: Build and push
# uses: docker/build-push-action@v6
# with:
# context: .
# platforms: linux/arm64
# push: true
# tags: kdurek/dokploy:canary-arm64
# merge-manifest:
# runs-on: ubuntu-latest
# permissions:
# contents: read
# packages: write
# needs: [amd64, arm64]
# steps:
# - name: Checkout
# 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
# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKERHUB_USERNAME }}
# password: ${{ secrets.DOCKERHUB_TOKEN }}
# - name: Create & publish manifest
# run: |
# docker buildx imagetools create --append kdurek/dokploy:canary-arm64 --tag kdurek/dokploy:canary