From bdf9946fe5812a4b91708625e31f04b8f992cd6b Mon Sep 17 00:00:00 2001 From: Vladimir Dubrovin <3proxy@3proxy.ru> Date: Sat, 30 May 2026 17:05:43 +0300 Subject: [PATCH] Add dockers build --- .github/workflows/build-rpm-arm64.yml | 3 + .github/workflows/build-rpm-armhf.yml | 3 + .github/workflows/build-rpm-x86-64.yml | 3 + .github/workflows/build-watcom.yml | 3 + .github/workflows/build-win32.yml | 3 + .github/workflows/build-win64.yml | 3 + .github/workflows/build-winarm64.yml | 3 + .github/workflows/docker-ghcr.yml | 81 ++++++++++++++++++++++++++ .github/workflows/docker.yml | 78 +++++++++++++++++++++++++ 9 files changed, 180 insertions(+) create mode 100644 .github/workflows/docker-ghcr.yml create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/build-rpm-arm64.yml b/.github/workflows/build-rpm-arm64.yml index f5aa94e..f085c8b 100644 --- a/.github/workflows/build-rpm-arm64.yml +++ b/.github/workflows/build-rpm-arm64.yml @@ -1,6 +1,9 @@ name: RPM/DEB build aarch64 on: + push: + paths: + - 'RELEASE' workflow_dispatch: jobs: diff --git a/.github/workflows/build-rpm-armhf.yml b/.github/workflows/build-rpm-armhf.yml index b7f33fa..4afff3c 100644 --- a/.github/workflows/build-rpm-armhf.yml +++ b/.github/workflows/build-rpm-armhf.yml @@ -1,6 +1,9 @@ name: RPM/DEB build armhf on: + push: + paths: + - 'RELEASE' workflow_dispatch: jobs: diff --git a/.github/workflows/build-rpm-x86-64.yml b/.github/workflows/build-rpm-x86-64.yml index c4295a5..9d9cf4d 100644 --- a/.github/workflows/build-rpm-x86-64.yml +++ b/.github/workflows/build-rpm-x86-64.yml @@ -1,6 +1,9 @@ name: RPM/DEB build x86-64 on: + push: + paths: + - 'RELEASE' workflow_dispatch: jobs: diff --git a/.github/workflows/build-watcom.yml b/.github/workflows/build-watcom.yml index 1e472a2..d6caf0f 100644 --- a/.github/workflows/build-watcom.yml +++ b/.github/workflows/build-watcom.yml @@ -1,6 +1,9 @@ name: Build Win32 3proxy-lite with Watcom on: + push: + paths: + - 'RELEASE' workflow_dispatch: jobs: diff --git a/.github/workflows/build-win32.yml b/.github/workflows/build-win32.yml index 367595d..34107f2 100644 --- a/.github/workflows/build-win32.yml +++ b/.github/workflows/build-win32.yml @@ -1,6 +1,9 @@ name: Build Win32 3proxy with MSVC on: + push: + paths: + - 'RELEASE' workflow_dispatch: jobs: diff --git a/.github/workflows/build-win64.yml b/.github/workflows/build-win64.yml index 055c57d..ca38ba6 100644 --- a/.github/workflows/build-win64.yml +++ b/.github/workflows/build-win64.yml @@ -1,6 +1,9 @@ name: Build Win64 3proxy with MSVC on: + push: + paths: + - 'RELEASE' workflow_dispatch: jobs: diff --git a/.github/workflows/build-winarm64.yml b/.github/workflows/build-winarm64.yml index 4c8dd7c..9abf7ba 100644 --- a/.github/workflows/build-winarm64.yml +++ b/.github/workflows/build-winarm64.yml @@ -1,6 +1,9 @@ name: Build Win-arm64 3proxy with MSVC on: + push: + paths: + - 'RELEASE' workflow_dispatch: jobs: diff --git a/.github/workflows/docker-ghcr.yml b/.github/workflows/docker-ghcr.yml new file mode 100644 index 0000000..041e84a --- /dev/null +++ b/.github/workflows/docker-ghcr.yml @@ -0,0 +1,81 @@ +name: Build Docker images (GHCR) + +on: + push: + branches: [master] + paths: + - 'RELEASE' + workflow_dispatch: + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build: + name: Build and push Docker images + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Determine tags + id: tags + env: + REF: ${{ github.ref }} + IMAGE: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + run: | + if [[ "$REF" == refs/tags/* ]]; then + RELEASE=$(cat RELEASE) + echo "minimal=${IMAGE}:${RELEASE}.minimal,${IMAGE}:minimal" >> "$GITHUB_OUTPUT" + echo "busybox=${IMAGE}:${RELEASE}.busybox,${IMAGE}:busybox" >> "$GITHUB_OUTPUT" + echo "full=${IMAGE}:${RELEASE},${IMAGE}:latest" >> "$GITHUB_OUTPUT" + else + echo "minimal=${IMAGE}:devel.minimal" >> "$GITHUB_OUTPUT" + echo "busybox=${IMAGE}:devel.busybox" >> "$GITHUB_OUTPUT" + echo "full=${IMAGE}:devel" >> "$GITHUB_OUTPUT" + fi + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to GHCR + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push minimal + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.minimal + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.tags.outputs.minimal }} + + - name: Build and push busybox + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.busybox + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.tags.outputs.busybox }} + + - name: Build and push full + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.full + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.tags.outputs.full }} diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..07a1b12 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,78 @@ +name: Build Docker images (Docker Hub) + +on: + push: + branches: [master] + paths: + - 'RELEASE' + workflow_dispatch: + +env: + REGISTRY: docker.io + IMAGE_NAME: 3proxy/3proxy + +jobs: + build: + name: Build and push Docker images + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Determine tags + id: tags + env: + REF: ${{ github.ref }} + run: | + if [[ "$REF" == refs/tags/* ]]; then + RELEASE=$(cat RELEASE) + echo "minimal=${REGISTRY}/${IMAGE_NAME}:${RELEASE}.minimal,${REGISTRY}/${IMAGE_NAME}:minimal" >> "$GITHUB_OUTPUT" + echo "busybox=${REGISTRY}/${IMAGE_NAME}:${RELEASE}.busybox,${REGISTRY}/${IMAGE_NAME}:busybox" >> "$GITHUB_OUTPUT" + echo "full=${REGISTRY}/${IMAGE_NAME}:${RELEASE},${REGISTRY}/${IMAGE_NAME}:latest" >> "$GITHUB_OUTPUT" + else + echo "minimal=${REGISTRY}/${IMAGE_NAME}:devel.minimal" >> "$GITHUB_OUTPUT" + echo "busybox=${REGISTRY}/${IMAGE_NAME}:devel.busybox" >> "$GITHUB_OUTPUT" + echo "full=${REGISTRY}/${IMAGE_NAME}:devel" >> "$GITHUB_OUTPUT" + fi + + - 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 + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push minimal + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.minimal + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.tags.outputs.minimal }} + + - name: Build and push busybox + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.busybox + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.tags.outputs.busybox }} + + - name: Build and push full + uses: docker/build-push-action@v6 + with: + context: . + file: Dockerfile.full + platforms: linux/amd64,linux/arm64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.tags.outputs.full }}