From beb123b144d8e52d2f9e9859e75d058cdb5c039e Mon Sep 17 00:00:00 2001 From: Kroonk Date: Wed, 20 May 2026 16:39:41 +0200 Subject: [PATCH] Optimize: Add robust Docker CLI install and native docker build to workflow --- .github/workflows/docker-build.yml | 51 ++++++++++++++++++++---------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index a50c402..eafa89d 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -1,4 +1,4 @@ -name: Build & Push Docker Image +name: Build & Push Docker Image to GHCR on: push: @@ -6,33 +6,50 @@ on: env: REGISTRY: ghcr.io + IMAGE_NAME: kroonk/photography jobs: build-and-push: runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - name: Checkout uses: actions/checkout@v4 + - name: Install Docker CLI + shell: sh + run: | + if ! command -v docker >/dev/null 2>&1; then + echo "Docker CLI not found. Installing static binary..." + if command -v curl >/dev/null 2>&1; then + curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz | tar -xz -C /usr/local/bin --strip-components=1 docker/docker + elif command -v wget >/dev/null 2>&1; then + wget -qO- https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz | tar -xz -C /usr/local/bin --strip-components=1 docker/docker + else + echo "Neither curl nor wget found! Attempting package manager install..." + if command -v apt-get >/dev/null 2>&1; then + apt-get update && apt-get install -y docker.io + elif command -v apk >/dev/null 2>&1; then + apk add --no-cache docker-cli + else + echo "Cannot install Docker CLI!" + exit 1 + fi + fi + else + echo "Docker CLI already installed." + fi + docker --version + - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Lowercase image name - run: echo "IMAGE_NAME=$(echo '${{ github.repository }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + username: ${{ secrets.GHCR_USERNAME }} + password: ${{ secrets.GHCR_TOKEN }} - name: Build and push Docker image - uses: docker/build-push-action@v5 - with: - context: . - push: true - tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} + shell: sh + run: | + docker build -t ghcr.io/kroonk/photography:latest -t ghcr.io/kroonk/photography:${{ github.sha }} . + docker push ghcr.io/kroonk/photography:latest + docker push ghcr.io/kroonk/photography:${{ github.sha }}