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
33 changes: 12 additions & 21 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,39 +9,30 @@ on:

jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-latest
platform: linux/amd64
arch: amd64
- runner: ubuntu-22.04-arm64
platform: linux/arm64
arch: arm64
runs-on: ${{ matrix.runner }}
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Ensure build script is executable
run: chmod +x bin/buildAnyPlatform.sh

- name: Clean dist
run: rm -rf dist && mkdir dist

- name: Build ${{ matrix.platform }} binary
run: bin/buildAnyPlatform.sh ${{ matrix.platform }}
- name: Build linux/amd64 and linux/arm64 binaries
run: bin/buildAnyPlatform.sh linux/amd64 linux/arm64

- name: Upload binary
- name: Upload binaries
uses: actions/upload-artifact@v4
with:
name: frp-simple-auth-${{ matrix.arch }}
path: dist/frp-simple-auth.${{ replace(matrix.platform, '/', '-') }}
name: frp-simple-auth-binaries
path: |
dist/frp-simple-auth.linux-amd64
dist/frp-simple-auth.linux-arm64
if-no-files-found: error

- name: Docker build smoke test
if: ${{ matrix.arch == 'amd64' }}
- name: Docker build smoke test (amd64)
run: docker build -f .build/Dockerfile -t frp-simple-auth:test .
98 changes: 44 additions & 54 deletions .github/workflows/publish-dockerhub.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,99 +5,89 @@ on:
branches:
- main
- dev
- feature/initial-commit
- 'dev-*'
tags:
- '*'
workflow_dispatch:

jobs:
meta:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
env:
DOCKERHUB_USER: ${{ vars.DOCKERHUB_USER }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
DOCKERHUB_IMAGE: ${{ vars.DOCKERHUB_IMAGE }}
outputs:
tag: ${{ steps.compute.outputs.tag }}
steps:
- name: Validate Docker Hub secrets
- name: Checkout
uses: actions/checkout@v4

- name: Validate configuration
run: |
set -euo pipefail
for var in DOCKERHUB_USER DOCKERHUB_PASSWORD DOCKERHUB_IMAGE; do
if [ -z "${!var}" ]; then
echo "Missing secret: $var" >&2
echo "Missing value for $var" >&2
exit 1
fi
done

- name: Compute image tag
id: compute
env:
IMAGE: ${{ env.DOCKERHUB_IMAGE }}
- name: Determine tags
id: tags
run: |
set -euo pipefail
ref="${GITHUB_REF}"
ref_name="${GITHUB_REF_NAME}"
sha_short="$(printf '%s' "${GITHUB_SHA}" | cut -c1-7)"
if [[ "${ref}" == refs/tags/* ]]; then
ref_name="${ref#refs/tags/}"
else
ref_name="${GITHUB_REF_NAME}"
fi
slug="$(printf '%s' "${ref_name}" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/-/g' | sed -E 's/^-+|-+$//g')"
if [[ "${ref}" == refs/tags/* ]]; then
suffix=":${ref_name}"
suffix="${ref#refs/tags/}"
elif [[ "${ref_name}" == "main" ]]; then
suffix=":latest"
suffix="latest"
else
slug="$(printf '%s' "${ref_name}" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/-/g' | sed -E 's/^-+|-+$//g')"
[[ -z "${slug}" ]] && slug="sha-${sha_short}"
suffix=":${slug}"
suffix="${slug}"
fi
echo "tag=docker.io/${IMAGE}${suffix}" >> "${GITHUB_OUTPUT}"
base_tag="docker.io/${DOCKERHUB_IMAGE}:${suffix}"
echo "BASE_TAG=${base_tag}" >> "${GITHUB_ENV}"
echo "AMD64_TAG=${base_tag}-amd64" >> "${GITHUB_ENV}"
echo "ARM64_TAG=${base_tag}-arm64" >> "${GITHUB_ENV}"

build:
needs: meta
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-latest
platform: linux/amd64
arch: amd64
- runner: ubuntu-22.04-arm64
platform: linux/arm64
arch: arm64
runs-on: ${{ matrix.runner }}
permissions:
contents: read
env:
DOCKERHUB_USER: ${{ vars.DOCKERHUB_USER }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
BASE_TAG: ${{ needs.meta.outputs.tag }}
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: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ env.DOCKERHUB_USER }}
password: ${{ env.DOCKERHUB_PASSWORD }}

- name: Build and push ${{ matrix.arch }}
- name: Build and push linux/amd64 image
env:
BASE_TAG: ${{ env.BASE_TAG }}
AMD64_TAG: ${{ env.AMD64_TAG }}
run: |
set -euo pipefail
if [ -z "${BASE_TAG:-}" ]; then
echo "BASE_TAG missing" >&2
exit 1
fi
ARCH_TAG="${BASE_TAG}-${{ matrix.arch }}"
docker build -f .build/Dockerfile -t "${ARCH_TAG}" .
docker push "${ARCH_TAG}"
if [ "${{ matrix.arch }}" = "amd64" ]; then
docker tag "${ARCH_TAG}" "${BASE_TAG}"
docker push "${BASE_TAG}"
fi
docker buildx build \
--platform linux/amd64 \
--file .build/Dockerfile \
--push \
--tag "${AMD64_TAG}" \
--tag "${BASE_TAG}" \
.

- name: Build and push linux/arm64 image
env:
ARM64_TAG: ${{ env.ARM64_TAG }}
run: |
set -euo pipefail
docker buildx build \
--platform linux/arm64 \
--file .build/Dockerfile \
--push \
--tag "${ARM64_TAG}" \
.
96 changes: 43 additions & 53 deletions .github/workflows/publish-quay.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,78 +5,59 @@ on:
branches:
- main
- dev
- 'dev-*'
tags:
- '*'
workflow_dispatch:

jobs:
meta:
publish:
runs-on: ubuntu-latest
permissions:
contents: read
env:
QUAY_USER: ${{ vars.QUAY_USER }}
QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }}
QUAY_IMAGE: ${{ vars.QUAY_IMAGE }}
outputs:
tag: ${{ steps.compute.outputs.tag }}
steps:
- name: Validate Quay secrets
- name: Checkout
uses: actions/checkout@v4

- name: Validate configuration
run: |
set -euo pipefail
for var in QUAY_USER QUAY_PASSWORD QUAY_IMAGE; do
if [ -z "${!var}" ]; then
echo "Missing secret: $var" >&2
echo "Missing value for $var" >&2
exit 1
fi
done

- name: Compute image tag
id: compute
env:
IMAGE: ${{ env.QUAY_IMAGE }}
- name: Determine tags
run: |
set -euo pipefail
ref="${GITHUB_REF}"
ref_name="${GITHUB_REF_NAME}"
sha_short="$(printf '%s' "${GITHUB_SHA}" | cut -c1-7)"
if [[ "${ref}" == refs/tags/* ]]; then
ref_name="${ref#refs/tags/}"
else
ref_name="${GITHUB_REF_NAME}"
fi
slug="$(printf '%s' "${ref_name}" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/-/g' | sed -E 's/^-+|-+$//g')"
if [[ "${ref}" == refs/tags/* ]]; then
suffix=":${ref_name}"
suffix="${ref#refs/tags/}"
elif [[ "${ref_name}" == "main" ]]; then
suffix=":latest"
suffix="latest"
else
slug="$(printf '%s' "${ref_name}" | tr '[:upper:]' '[:lower:]' | sed -E 's/[^a-z0-9]+/-/g' | sed -E 's/^-+|-+$//g')"
[[ -z "${slug}" ]] && slug="sha-${sha_short}"
suffix=":${slug}"
suffix="${slug}"
fi
echo "tag=quay.io/${IMAGE}${suffix}" >> "${GITHUB_OUTPUT}"
base_tag="quay.io/${QUAY_IMAGE}:${suffix}"
echo "BASE_TAG=${base_tag}" >> "${GITHUB_ENV}"
echo "AMD64_TAG=${base_tag}-amd64" >> "${GITHUB_ENV}"
echo "ARM64_TAG=${base_tag}-arm64" >> "${GITHUB_ENV}"

build:
needs: meta
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-latest
platform: linux/amd64
arch: amd64
- runner: ubuntu-22.04-arm64
platform: linux/arm64
arch: arm64
runs-on: ${{ matrix.runner }}
permissions:
contents: read
env:
QUAY_USER: ${{ vars.QUAY_USER }}
QUAY_PASSWORD: ${{ secrets.QUAY_PASSWORD }}
BASE_TAG: ${{ needs.meta.outputs.tag }}
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: Log in to Quay.io
uses: docker/login-action@v3
Expand All @@ -85,19 +66,28 @@ jobs:
username: ${{ env.QUAY_USER }}
password: ${{ env.QUAY_PASSWORD }}

- name: Build and push ${{ matrix.arch }}
- name: Build and push linux/amd64 image
env:
BASE_TAG: ${{ env.BASE_TAG }}
AMD64_TAG: ${{ env.AMD64_TAG }}
run: |
set -euo pipefail
if [ -z "${BASE_TAG:-}" ]; then
echo "BASE_TAG missing" >&2
exit 1
fi
ARCH_TAG="${BASE_TAG}-${{ matrix.arch }}"
docker build -f .build/Dockerfile -t "${ARCH_TAG}" .
docker push "${ARCH_TAG}"
if [ "${{ matrix.arch }}" = "amd64" ]; then
docker tag "${ARCH_TAG}" "${BASE_TAG}"
docker push "${BASE_TAG}"
fi
docker buildx build \
--platform linux/amd64 \
--file .build/Dockerfile \
--push \
--tag "${AMD64_TAG}" \
--tag "${BASE_TAG}" \
.

- name: Build and push linux/arm64 image
env:
ARM64_TAG: ${{ env.ARM64_TAG }}
run: |
set -euo pipefail
docker buildx build \
--platform linux/arm64 \
--file .build/Dockerfile \
--push \
--tag "${ARM64_TAG}" \
.
33 changes: 12 additions & 21 deletions .github/workflows/release-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,29 @@ on:

jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- runner: ubuntu-latest
platform: linux/amd64
arch: amd64
- runner: ubuntu-22.04-arm64
platform: linux/arm64
arch: arm64
runs-on: ${{ matrix.runner }}
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Ensure build script is executable
run: chmod +x bin/buildAnyPlatform.sh

- name: Clean dist
run: rm -rf dist && mkdir dist

- name: Build ${{ matrix.platform }} binary
run: bin/buildAnyPlatform.sh ${{ matrix.platform }}
- name: Build linux/amd64 and linux/arm64 binaries
run: bin/buildAnyPlatform.sh linux/amd64 linux/arm64

- name: Upload artifact
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: frp-simple-auth-${{ matrix.arch }}
path: dist/frp-simple-auth.${{ replace(matrix.platform, '/', '-') }}
name: frp-simple-auth-binaries
path: |
dist/frp-simple-auth.linux-amd64
dist/frp-simple-auth.linux-arm64
if-no-files-found: error

release:
Expand All @@ -50,8 +42,7 @@ jobs:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: frp-simple-auth-*
merge-multiple: true
name: frp-simple-auth-binaries
path: release

- name: Prepare files
Expand Down
Loading