From 506d19ecac398cf713bc260d9573d9b1e8ff89ff Mon Sep 17 00:00:00 2001 From: razonyang Date: Thu, 27 Jun 2024 10:10:35 +0800 Subject: [PATCH] Improve build for Nginx images --- .github/workflows/build.yml | 4 ++-- .github/workflows/nginx.yml | 35 +++++++++++++++++++++++++++++++++++ docker/nginx/Dockerfile | 3 ++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6cbbcbe..0ee787f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,8 +7,8 @@ on: types: [created] workflow_dispatch: push: - branches: - - '*' + paths: + - 'docker/hugo/**' concurrency: group: "docker" diff --git a/.github/workflows/nginx.yml b/.github/workflows/nginx.yml index 1377205..f1e2738 100644 --- a/.github/workflows/nginx.yml +++ b/.github/workflows/nginx.yml @@ -1,6 +1,9 @@ name: build Nginx image on: + push: + paths: + - 'docker/nginx/**' schedule: - cron: '0 0 * * 0' workflow_dispatch: @@ -17,23 +20,42 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 + - name: Fetch Latest Tag + id: latest-tag + run: | + NGINX_VERSION=$(curl -s "https://api.github.com/repos/nginx/nginx/tags" | jq -r '.[0].name') + echo "name=${NGINX_VERSION#"release-"}" >> $GITHUB_OUTPUT + echo ${{ steps.latest-tag.outputs.name }} + + - name: Check if Image Tag Exists + id: check + uses: razonyang/github-action-docker-image-tag-exists@v1 + with: + owner: ${{ env.IMAGE_OWNER }} + name: ${{ env.IMAGE_NAME }} + tag: 'nginx-${{ steps.latest-tag.outputs.name }}' + - name: Set up QEMU + if: ${{ steps.check.outputs.exists != true }} uses: docker/setup-qemu-action@v3 with: platforms: ${{ env.PLATFORMS }} - name: Set up Docker Buildx + if: ${{ steps.check.outputs.exists != true }} uses: docker/setup-buildx-action@v3 with: platforms: ${{ env.PLATFORMS }} - name: Login to Docker Hub + if: ${{ steps.check.outputs.exists != true }} uses: docker/login-action@v3 with: username: ${{ env.IMAGE_OWNER }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Login to GitHub Container Registry + if: ${{ steps.check.outputs.exists != true }} uses: docker/login-action@v3 with: registry: ghcr.io @@ -41,6 +63,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Build and export to Docker + if: ${{ steps.check.outputs.exists != true }} uses: docker/build-push-action@v5 with: load: true @@ -48,12 +71,22 @@ jobs: tags: hugomods/hugo:nginx-test cache-from: type=gha cache-to: type=gha,mode=max + build-args: | + NGINX_VERSION=${{ steps.latest-tag.outputs.name }} - name: Test + if: ${{ steps.check.outputs.exists != true }} run: | docker run --rm -v $PWD/site:/src hugomods/hugo:nginx-test nginx -t + - name: Check Nginx Version + if: ${{ steps.check.outputs.exists != true }} + run: | + DOCKER_NGINX_VERSION=$(docker run --rm -v $PWD/site:/src hugomods/hugo:nginx-test $(nginx -v 2>&1)) + echo $DOCKER_NGINX_VERSION + - name: Build and push + if: ${{ steps.check.outputs.exists != true && env.BRANCH_NAME == 'main' }} uses: docker/build-push-action@v5 with: push: true @@ -64,3 +97,5 @@ jobs: ghcr.io/${{ env.IMAGE_OWNER }}/${{ env.IMAGE_NAME }}:nginx cache-from: type=gha cache-to: type=gha,mode=max + build-args: | + NGINX_VERSION=${{ steps.latest-tag.outputs.name }} diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile index 739f699..5259f6b 100644 --- a/docker/nginx/Dockerfile +++ b/docker/nginx/Dockerfile @@ -1,2 +1,3 @@ -FROM nginx +ARG NGINX_VERSION +FROM nginx:$NGINX_VERSION COPY conf.d/default.conf /etc/nginx/conf.d/default.conf