Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions .github/workflows/buildx_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@

name: Buildx image and Create Release Version

on:
workflow_dispatch:
inputs:
version:
description: 'Build Version'
required: true
default: '1.6.0'
freerdp_version:
description: 'FreeRDP Version'
required: true
default: '2'
distro:
description: 'Debian Distro'
required: false
default: 'trixie'
PLATFORMS:
description: "Platforms (comma separated)"
required: true
default: "linux/amd64,linux/arm64"
type: string


jobs:
build:
strategy:
matrix:
platform: ${{ fromJson(format('["{0}"]', join(split(inputs.PLATFORMS, ','), '","'))) }}
include:
- platform: linux/amd64
runner: ubuntu-24.04
arch: amd64
- platform: linux/arm64
runner: ubuntu-24.04-arm
arch: arm64

runs-on: ${{ matrix.runner }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- 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: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v6
with:
context: ./debian/${{ github.event.inputs.distro }}
provenance: false
file: debian/${{ github.event.inputs.distro }}/Dockerfile
platforms: ${{ matrix.platform }}
push: true
build-args: |
VERSION=${{ github.event.inputs.version }}
FREERDP_VERSION=${{ github.event.inputs.freerdp_version }}
tags: |
ghcr.io/jumpserver/guacd:${{ github.event.inputs.version }}-${{ github.event.inputs.distro }}-${{ matrix.arch }}
outputs: type=image,oci-mediatypes=true,compression=zstd,compression-level=3,force-compression=true

merge-manifest:
runs-on: ubuntu-24.04
needs: build
# 只有同时包含 amd64 + arm64 时才需要合并,多架构 manifest
if: >
contains(github.event.inputs.PLATFORMS, 'linux/amd64') &&
contains(github.event.inputs.PLATFORMS, 'linux/arm64')

steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Merge manifest
run: |
docker buildx imagetools create \
-t jumpserver/guacd:${{ github.event.inputs.version }}-${{ github.event.inputs.distro }} \
-t ghcr.io/jumpserver/guacd:${{ github.event.inputs.version }}-${{ github.event.inputs.distro }} \
ghcr.io/jumpserver/guacd:${{ github.event.inputs.version }}-${{ github.event.inputs.distro }}-amd64 \
ghcr.io/jumpserver/guacd:${{ github.event.inputs.version }}-${{ github.event.inputs.distro }}-arm64
Loading