name: Build & Push Docker Image to GHCR on: push: branches: [master] env: REGISTRY: ghcr.io IMAGE_NAME: kroonk/photography jobs: build-and-push: runs-on: ubuntu-latest 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: ${{ secrets.GHCR_USERNAME }} password: ${{ secrets.GHCR_TOKEN }} - name: Build and push Docker image 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 }}