- Add prod builds (stripped) and prod-upx builds (compressed) for Linux - Add prod builds (stripped) for macOS (UPX not supported) - Add docker/production-slim for slim images using prod-upx binaries - Update build-docker.yml to build slim variants - Update build-macos.yml to sign and notarize all 4 variants - Add BUILDOPTIONS constant to show build flags in version output - Add make release-all target for building both dev and prod locally Linux artifacts: 6 variants (dev, prod, prod-upx for amd64/arm64) macOS artifacts: 4 variants (dev, prod for amd64/arm64) Docker images: 6 variants (dev, prod, prod-slim for amd64/arm64) Co-authored-by: Cursor <cursoragent@cursor.com>
118 lines
3.2 KiB
YAML
118 lines
3.2 KiB
YAML
name: Build and push docker images
|
|
|
|
on:
|
|
# push:
|
|
# branches: [main]
|
|
# paths:
|
|
# - ".github/workflows/docker.yml"
|
|
workflow_run:
|
|
workflows: ["Build Linux Artifacts"]
|
|
types:
|
|
- completed
|
|
|
|
env:
|
|
VERSION: 0.10.5
|
|
jobs:
|
|
build:
|
|
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Get Version
|
|
run: |
|
|
echo VERSION=$(cat share/const.go |grep 'const VERSION' | awk '{print $4}' | sed "s/\"//g")-unstable >> $GITHUB_ENV
|
|
|
|
- name: Check Version
|
|
run: echo $VERSION
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to DockerHub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USER }}
|
|
password: ${{ secrets.DOCKER_TOKEN }}
|
|
|
|
- name: Build Development
|
|
uses: docker/build-push-action@v6
|
|
env:
|
|
DOCKER_CONTENT_TRUST: 1
|
|
with:
|
|
context: ./docker/development
|
|
platforms: linux/amd64
|
|
build-args: |
|
|
VERSION=${{ env.VERSION }}
|
|
ARCH=amd64
|
|
push: true
|
|
tags: yaoapp/yao:${{ env.VERSION }}-amd64-dev
|
|
|
|
- name: Build Development Arm64
|
|
uses: docker/build-push-action@v6
|
|
env:
|
|
DOCKER_CONTENT_TRUST: 1
|
|
with:
|
|
context: ./docker/development
|
|
platforms: linux/arm64
|
|
build-args: |
|
|
VERSION=${{ env.VERSION }}
|
|
ARCH=arm64
|
|
push: true
|
|
tags: yaoapp/yao:${{ env.VERSION }}-arm64-dev
|
|
|
|
- name: Build Production
|
|
uses: docker/build-push-action@v6
|
|
env:
|
|
DOCKER_CONTENT_TRUST: 1
|
|
with:
|
|
context: ./docker/production
|
|
platforms: linux/amd64
|
|
build-args: |
|
|
VERSION=${{ env.VERSION }}
|
|
ARCH=amd64
|
|
push: true
|
|
tags: yaoapp/yao:${{ env.VERSION }}-amd64
|
|
|
|
- name: Build Production Arm64
|
|
uses: docker/build-push-action@v6
|
|
env:
|
|
DOCKER_CONTENT_TRUST: 1
|
|
with:
|
|
context: ./docker/production
|
|
platforms: linux/arm64
|
|
build-args: |
|
|
VERSION=${{ env.VERSION }}
|
|
ARCH=arm64
|
|
push: true
|
|
tags: yaoapp/yao:${{ env.VERSION }}-arm64
|
|
|
|
- name: Build Production Slim
|
|
uses: docker/build-push-action@v6
|
|
env:
|
|
DOCKER_CONTENT_TRUST: 1
|
|
with:
|
|
context: ./docker/production-slim
|
|
platforms: linux/amd64
|
|
build-args: |
|
|
VERSION=${{ env.VERSION }}
|
|
ARCH=amd64
|
|
push: true
|
|
tags: yaoapp/yao:${{ env.VERSION }}-amd64-slim
|
|
|
|
- name: Build Production Slim Arm64
|
|
uses: docker/build-push-action@v6
|
|
env:
|
|
DOCKER_CONTENT_TRUST: 1
|
|
with:
|
|
context: ./docker/production-slim
|
|
platforms: linux/arm64
|
|
build-args: |
|
|
VERSION=${{ env.VERSION }}
|
|
ARCH=arm64
|
|
push: true
|
|
tags: yaoapp/yao:${{ env.VERSION }}-arm64-slim
|