GPT5 - Refactor build-docker-image workflow: streamline buildx setup, switch to inline build command, and improve cleanup process.
All checks were successful
Build and Push Server Docker Image / build-server (push) Successful in 10m11s
All checks were successful
Build and Push Server Docker Image / build-server (push) Successful in 10m11s
This commit is contained in:
@@ -8,19 +8,16 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build-server:
|
build-server:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
services:
|
|
||||||
docker:
|
|
||||||
image: docker:dind
|
|
||||||
options: --privileged --security-opt seccomp=unconfined
|
|
||||||
steps:
|
steps:
|
||||||
# 1. Check out the repo
|
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
# 2. Set up Docker Buildx (recommended for advanced caching)
|
- name: Set up Docker Buildx (ephemeral)
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
with:
|
||||||
|
install: true
|
||||||
|
driver-opts: network=host
|
||||||
|
buildkitd-flags: --debug
|
||||||
|
|
||||||
# 3. Log in to your container registry
|
|
||||||
- name: Log in to registry
|
- name: Log in to registry
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
@@ -28,22 +25,22 @@ jobs:
|
|||||||
username: ${{ secrets.REGISTRY_USERNAME }}
|
username: ${{ secrets.REGISTRY_USERNAME }}
|
||||||
password: ${{ secrets.REGISTRY_PASSWORD }}
|
password: ${{ secrets.REGISTRY_PASSWORD }}
|
||||||
|
|
||||||
# 4. Lowercase the repository name
|
|
||||||
- name: Set lowercase repo name
|
- name: Set lowercase repo name
|
||||||
run: echo "REPO_NAME_LOWER=$(echo '${{ github.event.repository.name }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
|
run: echo "REPO_NAME_LOWER=$(echo '${{ github.event.repository.name }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
|
||||||
|
|
||||||
# 5. Build & push the server image, using remote cache
|
- name: Build and push (no local cache)
|
||||||
- name: Build and push server image
|
run: |
|
||||||
uses: docker/build-push-action@v4
|
docker buildx build \
|
||||||
with:
|
--pull \
|
||||||
context: VirtualDDNSRouter.Server
|
--no-cache \
|
||||||
file: VirtualDDNSRouter.Server/Dockerfile
|
--file VirtualDDNSRouter.Server/Dockerfile \
|
||||||
push: true
|
--tag ${{ secrets.REGISTRY_URL }}/${{ github.repository_owner }}/${{ env.REPO_NAME_LOWER }}:latest-server \
|
||||||
tags: ${{ secrets.REGISTRY_URL }}/${{ github.repository_owner }}/${{ env.REPO_NAME_LOWER }}:latest-server
|
--cache-from type=registry,ref=${{ secrets.REGISTRY_URL }}/${{ github.repository_owner }}/${{ env.REPO_NAME_LOWER }}:buildcache \
|
||||||
cache-from: type=registry,ref=${{ secrets.REGISTRY_URL }}/${{ github.repository_owner }}/${{ env.REPO_NAME_LOWER }}:buildcache
|
--cache-to type=registry,ref=${{ secrets.REGISTRY_URL }}/${{ github.repository_owner }}/${{ env.REPO_NAME_LOWER }}:buildcache,mode=max \
|
||||||
cache-to: type=registry,ref=${{ secrets.REGISTRY_URL }}/${{ github.repository_owner }}/${{ env.REPO_NAME_LOWER }}:buildcache,mode=max
|
--push \
|
||||||
|
VirtualDDNSRouter.Server
|
||||||
- name: Clean up Docker in dind
|
|
||||||
run: docker builder prune -af
|
|
||||||
|
|
||||||
|
- name: Remove builder to delete all cache
|
||||||
|
run: |
|
||||||
|
BUILDER=$(docker buildx ls | awk '/\*/ {print $1}')
|
||||||
|
docker buildx rm "$BUILDER" || true
|
||||||
|
Reference in New Issue
Block a user