diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bb6d5dfde..dbf5e2ed8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -290,6 +290,30 @@ jobs: if: always() uses: crazy-max/ghaction-dump-context@v1 + network: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v2 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: List networks + run: docker network ls + - + name: Build + uses: ./ + with: + context: ./test + tags: name/app:latest + network: host + - + name: Dump context + if: always() + uses: crazy-max/ghaction-dump-context@v1 + multi: runs-on: ubuntu-latest strategy: diff --git a/README.md b/README.md index 6358d5314..dcf15e0f5 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,7 @@ Following inputs can be used as `step.with` keys | `file` | String | Path to the Dockerfile. (default `{context}/Dockerfile`) | | `labels` | List | List of metadata for an image | | `load` | Bool | [Load](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#load) is a shorthand for `--output=type=docker` (default `false`) | +| `network` | String | Set the networking mode for the `RUN` instructions during build | | `no-cache` | Bool | Do not use cache when building the image (default `false`) | | `outputs` | List | List of [output destinations](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#output) (format: `type=local,dest=path`) | | `platforms` | List/CSV | List of [target platforms](https://github.com/docker/buildx/blob/master/docs/reference/buildx_build.md#platform) for build | diff --git a/__tests__/context.test.ts b/__tests__/context.test.ts index a3e3e0d22..56d93d1e6 100644 --- a/__tests__/context.test.ts +++ b/__tests__/context.test.ts @@ -346,6 +346,7 @@ ccc`], ['secret-files', `MY_SECRET=${path.join(__dirname, 'fixtures', 'secret.txt').split(path.sep).join(path.posix.sep)}`], ['file', './test/Dockerfile'], ['builder', 'builder-git-context-2'], + ['network', 'host'], ['push', 'true'] ]), [ @@ -355,6 +356,7 @@ ccc`], '--secret', 'id=MY_SECRET,src=/tmp/.docker-build-push-jest/.tmpname-jest', '--file', './test/Dockerfile', '--builder', 'builder-git-context-2', + '--network', 'host', '--push', 'https://github.com/docker/build-push-action.git#heads/master' ] diff --git a/action.yml b/action.yml index 77b26aa7e..49f08fb21 100644 --- a/action.yml +++ b/action.yml @@ -35,6 +35,9 @@ inputs: description: "Load is a shorthand for --output=type=docker" required: false default: 'false' + network: + description: "Set the networking mode for the RUN instructions during build" + required: false no-cache: description: "Do not use cache when building the image" required: false diff --git a/dist/index.js b/dist/index.js index aee4be142..84c909a2b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -13042,6 +13042,7 @@ function getInputs(defaultContext) { file: core.getInput('file'), labels: yield getInputList('labels', true), load: /true/i.test(core.getInput('load')), + network: core.getInput('network'), noCache: /true/i.test(core.getInput('no-cache')), outputs: yield getInputList('outputs', true), platforms: yield getInputList('platforms'), @@ -13144,6 +13145,9 @@ function getCommonArgs(inputs) { if (inputs.load) { args.push('--load'); } + if (inputs.network) { + args.push('--network', inputs.network); + } if (inputs.push) { args.push('--push'); } diff --git a/src/context.ts b/src/context.ts index 922c430fb..f3cfb5f9c 100644 --- a/src/context.ts +++ b/src/context.ts @@ -22,6 +22,7 @@ export interface Inputs { file: string; labels: string[]; load: boolean; + network: string; noCache: boolean; outputs: string[]; platforms: string[]; @@ -66,6 +67,7 @@ export async function getInputs(defaultContext: string): Promise { file: core.getInput('file'), labels: await getInputList('labels', true), load: /true/i.test(core.getInput('load')), + network: core.getInput('network'), noCache: /true/i.test(core.getInput('no-cache')), outputs: await getInputList('outputs', true), platforms: await getInputList('platforms'), @@ -163,6 +165,9 @@ async function getCommonArgs(inputs: Inputs): Promise> { if (inputs.load) { args.push('--load'); } + if (inputs.network) { + args.push('--network', inputs.network); + } if (inputs.push) { args.push('--push'); }