diff --git a/.forgejo/actions/kaniko-build/action.yml b/.forgejo/actions/kaniko-build/action.yml new file mode 100644 index 0000000..9b2316b --- /dev/null +++ b/.forgejo/actions/kaniko-build/action.yml @@ -0,0 +1,45 @@ +name: "Kaniko Build and Push" +description: "Build and push Docker images using Kaniko (no Docker daemon needed)" +inputs: + registry: + required: false + default: "git.mcintire.me" + username: + required: false + default: "graham" + token: + required: true + image: + required: true + tag: + required: false + default: "latest" + dockerfile: + required: false + default: "Dockerfile" + context: + required: false + default: "." + +runs: + using: "composite" + steps: + - name: Write registry credentials + shell: bash + run: | + mkdir -p /kaniko/.docker + cat > /kaniko/.docker/config.json <<'EOF' + {"auths":{"${{ inputs.registry }}":{"username":"${{ inputs.username }}","password":"${{ inputs.token }}"}}} + EOF + + - name: Build and Push with Kaniko + shell: bash + run: | + docker run --rm \ + -v "${{ inputs.context }}":/workspace \ + -v /kaniko/.docker:/kaniko/.docker \ + gcr.io/kaniko-project/executor:latest \ + --context=/workspace \ + --dockerfile="/workspace/${{ inputs.dockerfile }}" \ + --destination="${{ inputs.image }}:${{ inputs.tag }}" \ + --cache=true diff --git a/.forgejo/workflows/docker-publish.yml b/.forgejo/workflows/docker-publish.yml index fdd95f6..664d738 100644 --- a/.forgejo/workflows/docker-publish.yml +++ b/.forgejo/workflows/docker-publish.yml @@ -4,16 +4,22 @@ on: image_name: required: true type: string - description: "Image name (e.g. aprs.me)" registry: required: false type: string default: "git.mcintire.me" - description: "Container registry hostname" username: required: false type: string default: "graham" + dockerfile: + required: false + type: string + default: "Dockerfile" + context: + required: false + type: string + default: "." secrets: FORGEJO_TOKEN: required: true @@ -24,15 +30,12 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Login to Forgejo Registry - uses: graham/infra/.forgejo/actions/container-login@main + - name: Build and Push via Kaniko + uses: graham/infra/.forgejo/actions/kaniko-build@main with: registry: ${{ inputs.registry }} username: ${{ inputs.username }} token: ${{ secrets.FORGEJO_TOKEN }} - - - name: Build and Push - run: | - TAG=${{ inputs.registry }}/${{ inputs.username }}/${{ inputs.image_name }}:latest - docker build -t $TAG . - docker push $TAG + image: ${{ inputs.registry }}/${{ inputs.username }}/${{ inputs.image_name }} + dockerfile: ${{ inputs.dockerfile }} + context: ${{ inputs.context }}