commit 1069431e614f11b96f05e2f1d6ff7be233b9011b Author: Klemek Date: Thu Apr 30 14:11:51 2026 +0200 initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..8bf13f8 --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# Dockerfile test build + +## Sample CI + +```yaml +name: Docker Build CI +on: [ push ] + +env: + BUILDKIT_VERSION: 'v0.29.0' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - uses: actions/cache@v4 + with: + path: /var/lib/buildkit + key: ${{ runner.os }}-buildkit-${{ env.BUILDKIT_VERSION }} + - uses: https://git.klemek.fr/klemek/dockerfile-test-build@v1 + with: + buildkit_version: ${{ env.BUILDKIT_VERSION }} +``` + +## Arguments + +| Name | Description | Default value | +| --- | --- | --- | +| `buildkit_version` | Name of Buildkit version from [GitHub](https://github.com/moby/buildkit/releases) | (required) | +| `context` | Build context path | `.` | +| `dockerfile` | Name of Dockerfile if different from `./Dockerfile` | `.` | diff --git a/action.yml b/action.yml new file mode 100644 index 0000000..c567a29 --- /dev/null +++ b/action.yml @@ -0,0 +1,44 @@ +name: 'Dockerfile test build' +description: 'Test build of Dockerfile' +inputs: + buildkit_version: + description: 'Buildkit version' + required: true + context: + description: 'Build context' + required: true + default: '.' + dockerfile: + description: 'Dockerfile name' + required: true + default: '.' +runs: + using: "composite" + steps: + - name: Prepare buildkit directory + shell: bash + run: mkdir -p /var/lib/buildkit + + - name: Download buildkit binaries + shell: bash + run: | + [ -f /var/lib/buildkit/buildkit.tar.gz ] || \ + curl --output /var/lib/buildkit/buildkit.tar.gz \ + "https://github.com/moby/buildkit/releases/download/${{ inputs.buildkit_version }}/buildkit-${{ inputs.buildkit_version }}.linux-amd64.tar.gz" + + - name: Extract buildkit binaries + shell: bash + run: | + [ -x /var/lib/buildkit/bin/buildkitd ] && \ + [ -x /var/lib/buildkit/bin/buildctl ] || \ + tar -xf /var/lib/buildkit/buildkit.tar.gz -C /var/lib/buildkit + + - name: Run buildkit build + shell: bash + run: | + /var/lib/buildkit/bin/buildkitd & \ + while [ ! -S /run/buildkit/buildkitd.sock ]; do sleep 0.1; done && \ + /var/lib/buildkit/bin/buildctl build \ + --frontend=dockerfile.v0 \ + --local context=${{ inputs.context }} \ + --local dockerfile=${{ inputs.dockerfile }} \ No newline at end of file