mirror of
https://github.com/docker/bake-action.git
synced 2026-06-05 01:38:39 +02:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b6c9154dfe | |||
| a50446b491 | |||
| 419be9c19b |
@@ -69,7 +69,6 @@ jobs:
|
||||
name: Build and push
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
files: |
|
||||
./test/config.hcl
|
||||
@@ -88,7 +87,6 @@ jobs:
|
||||
continue-on-error: true
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
files: |
|
||||
./test/config.hcl
|
||||
set: |
|
||||
@@ -110,7 +108,6 @@ jobs:
|
||||
continue-on-error: true
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
files: |
|
||||
./test/config.hcl
|
||||
-
|
||||
@@ -147,11 +144,10 @@ jobs:
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
files: |
|
||||
./test/config.hcl
|
||||
|
||||
remote:
|
||||
source:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
@@ -192,7 +188,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test/go
|
||||
source: .
|
||||
targets: binary
|
||||
provenance: ${{ matrix.attrs }}
|
||||
set: |
|
||||
@@ -234,7 +229,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test/go
|
||||
source: .
|
||||
targets: ${{ matrix.target }}
|
||||
sbom: true
|
||||
set: |
|
||||
@@ -281,7 +275,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test/go
|
||||
source: .
|
||||
set: |
|
||||
*.platform=linux/amd64
|
||||
*.output=type=image,"name=localhost:5000/name/app:v1.0.0,localhost:5000/name/app:latest",push=true
|
||||
@@ -311,7 +304,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test/group
|
||||
source: .
|
||||
push: true
|
||||
set: |
|
||||
t1.tags=localhost:5000/name/app:t1
|
||||
@@ -332,7 +324,6 @@ jobs:
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
files: |
|
||||
./test/config.hcl
|
||||
|
||||
@@ -370,7 +361,6 @@ jobs:
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
files: |
|
||||
./test/config.hcl
|
||||
targets: app-proxy
|
||||
@@ -406,7 +396,6 @@ jobs:
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
files: |
|
||||
./test/config.hcl
|
||||
|
||||
@@ -426,6 +415,8 @@ jobs:
|
||||
-
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
source: "{{defaultContext}}"
|
||||
|
||||
git-context-and-local:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -448,6 +439,7 @@ jobs:
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
source: "{{defaultContext}}"
|
||||
files: |
|
||||
cwd://${{ steps.meta.outputs.bake-file }}
|
||||
|
||||
@@ -474,7 +466,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test/go
|
||||
source: .
|
||||
set: |
|
||||
*.output=type=image,name=localhost:5000/name/app:latest,push=true
|
||||
*.output=type=docker,name=app:local
|
||||
@@ -518,7 +509,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test/go
|
||||
source: .
|
||||
targets: image
|
||||
load: true
|
||||
push: true
|
||||
@@ -573,7 +563,6 @@ jobs:
|
||||
name: Build
|
||||
uses: ./
|
||||
with:
|
||||
source: .
|
||||
files: |
|
||||
./test/config.hcl
|
||||
targets: app
|
||||
@@ -677,7 +666,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test
|
||||
source: .
|
||||
files: |
|
||||
./lint.hcl
|
||||
|
||||
@@ -699,7 +687,6 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
workdir: ./test
|
||||
source: .
|
||||
files: |
|
||||
./lint.hcl
|
||||
env:
|
||||
|
||||
@@ -21,9 +21,12 @@ jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Test
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v5
|
||||
with:
|
||||
targets: test
|
||||
-
|
||||
|
||||
@@ -36,8 +36,11 @@ jobs:
|
||||
matrix:
|
||||
target: ${{ fromJson(needs.prepare.outputs.targets) }}
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Validate
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v5
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
|
||||
@@ -14,8 +14,8 @@ as a high-level build command.
|
||||
___
|
||||
|
||||
* [Usage](#usage)
|
||||
* [Git context](#git-context)
|
||||
* [Path context](#path-context)
|
||||
* [Git context](#git-context)
|
||||
* [Summaries](#summaries)
|
||||
* [Customizing](#customizing)
|
||||
* [inputs](#inputs)
|
||||
@@ -27,51 +27,84 @@ ___
|
||||
|
||||
## Usage
|
||||
|
||||
### Git context
|
||||
### Path context
|
||||
|
||||
Since `v6` this action uses the [Git context](https://docs.docker.com/build/bake/remote-definition/)
|
||||
to build from a remote bake definition by default like the [build-push-action](https://github.com/docker/build-push-action)
|
||||
does. This means that you don't need to use the [`actions/checkout`](https://github.com/actions/checkout/)
|
||||
action to check out the repository as [BuildKit](https://docs.docker.com/build/buildkit/)
|
||||
will do this directly.
|
||||
|
||||
The git reference will be based on the [event that triggered your workflow](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows)
|
||||
and will result in the following context: `https://github.com/<owner>/<repo>.git#<ref>`.
|
||||
By default, this action will use the local bake definition (`source: .`), so
|
||||
you need to use the [`actions/checkout`](https://github.com/actions/checkout/)
|
||||
action to check out the repository.
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
|
||||
jobs:
|
||||
bake:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
-
|
||||
name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v5
|
||||
with:
|
||||
push: true
|
||||
set: |
|
||||
*.tags=user/app:latest
|
||||
```
|
||||
|
||||
### Git context
|
||||
|
||||
Git context can be provided using the [`source` input](#inputs). This means
|
||||
that you don't need to use the [`actions/checkout`](https://github.com/actions/checkout/)
|
||||
action to check out the repository as [BuildKit](https://docs.docker.com/build/buildkit/)
|
||||
will do this directly.
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
|
||||
jobs:
|
||||
bake:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
-
|
||||
name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/bake-action@v5
|
||||
with:
|
||||
source: "${{ github.server_url }}/${{ github.repository }}.git#${{ github.ref }}"
|
||||
push: true
|
||||
```
|
||||
|
||||
Be careful because **any file mutation in the steps that precede the build step
|
||||
will be ignored, including processing of the `.dockerignore` file** since
|
||||
the context is based on the Git reference. However, you can use the
|
||||
[Path context](#path-context) using the [`source` input](#inputs) alongside
|
||||
the [`actions/checkout`](https://github.com/actions/checkout/) action to remove
|
||||
this restriction.
|
||||
[Path context](#path-context) alongside the [`actions/checkout`](https://github.com/actions/checkout/)
|
||||
action to remove this restriction.
|
||||
|
||||
Default Git context can also be provided using the [Handlebars template](https://handlebarsjs.com/guide/)
|
||||
expression `{{defaultContext}}`. Here we can use it to provide a subdirectory
|
||||
@@ -80,12 +113,10 @@ to the default Git context:
|
||||
```yaml
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v5
|
||||
with:
|
||||
source: "{{defaultContext}}:mysubdir"
|
||||
push: true
|
||||
set: |
|
||||
*.tags=user/app:latest
|
||||
```
|
||||
|
||||
Building from the current repository automatically uses the `GITHUB_TOKEN`
|
||||
@@ -100,49 +131,14 @@ another private repository for remote definitions, you can set the
|
||||
```yaml
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v5
|
||||
with:
|
||||
source: "${{ github.server_url }}/${{ github.repository }}.git#${{ github.ref }}"
|
||||
push: true
|
||||
set: |
|
||||
*.tags=user/app:latest
|
||||
env:
|
||||
BUILDX_BAKE_GIT_AUTH_TOKEN: ${{ secrets.MYTOKEN }}
|
||||
```
|
||||
|
||||
### Path context
|
||||
|
||||
```yaml
|
||||
name: ci
|
||||
|
||||
on:
|
||||
push:
|
||||
|
||||
jobs:
|
||||
bake:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
-
|
||||
name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Login to DockerHub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ vars.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
-
|
||||
name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
-
|
||||
name: Build and push
|
||||
uses: docker/bake-action@v6
|
||||
with:
|
||||
source: .
|
||||
push: true
|
||||
set: |
|
||||
*.tags=user/app:latest
|
||||
```
|
||||
|
||||
## Summaries
|
||||
|
||||
This action generates a [job summary](https://github.blog/2022-05-09-supercharging-github-actions-with-job-summaries/)
|
||||
|
||||
@@ -137,7 +137,6 @@ describe('getArgs', () => {
|
||||
0,
|
||||
'0.4.1',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -151,7 +150,6 @@ describe('getArgs', () => {
|
||||
1,
|
||||
'0.8.2',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -166,7 +164,6 @@ describe('getArgs', () => {
|
||||
2,
|
||||
'0.8.2',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['targets', 'webapp\nvalidate'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
@@ -183,7 +180,6 @@ describe('getArgs', () => {
|
||||
3,
|
||||
'0.8.2',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['set', '*.cache-from=type=gha\n*.cache-to=type=gha'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
@@ -201,7 +197,6 @@ describe('getArgs', () => {
|
||||
4,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -217,7 +212,6 @@ describe('getArgs', () => {
|
||||
5,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -234,7 +228,6 @@ describe('getArgs', () => {
|
||||
6,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -251,7 +244,6 @@ describe('getArgs', () => {
|
||||
7,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -268,7 +260,6 @@ describe('getArgs', () => {
|
||||
8,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -285,7 +276,6 @@ describe('getArgs', () => {
|
||||
9,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -306,7 +296,6 @@ describe('getArgs', () => {
|
||||
10,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -326,6 +315,7 @@ describe('getArgs', () => {
|
||||
11,
|
||||
'0.10.0',
|
||||
new Map<string, string>([
|
||||
['source', '{{defaultContext}}'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
@@ -344,7 +334,6 @@ describe('getArgs', () => {
|
||||
12,
|
||||
'0.17.0',
|
||||
new Map<string, string>([
|
||||
['source', '.'],
|
||||
['allow', 'network.host'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
@@ -358,25 +347,6 @@ describe('getArgs', () => {
|
||||
"--provenance", `mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`
|
||||
]
|
||||
],
|
||||
[
|
||||
13,
|
||||
'0.15.0',
|
||||
new Map<string, string>([
|
||||
['source', '{{defaultContext}}:subdir'],
|
||||
['load', 'false'],
|
||||
['no-cache', 'false'],
|
||||
['push', 'false'],
|
||||
['pull', 'false'],
|
||||
['files', './foo.hcl'],
|
||||
]),
|
||||
[
|
||||
'bake',
|
||||
'https://github.com/docker/build-push-action.git#refs/heads/master:subdir',
|
||||
'--file', './foo.hcl',
|
||||
'--metadata-file', metadataJson,
|
||||
'--provenance', `mode=min,inline-only=true,builder-id=https://github.com/docker/build-push-action/actions/runs/123456789/attempts/1`,
|
||||
]
|
||||
],
|
||||
])(
|
||||
'[%d] given %p with %p as inputs, returns %p',
|
||||
async (num: number, buildxVersion: string, inputs: Map<string, string>, expected: Array<string>) => {
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+1
-1
File diff suppressed because one or more lines are too long
@@ -1,9 +1,3 @@
|
||||
target "_common" {
|
||||
args = {
|
||||
BUILDKIT_CONTEXT_KEEP_GIT_DIR = 1
|
||||
}
|
||||
}
|
||||
|
||||
group "default" {
|
||||
targets = ["build"]
|
||||
}
|
||||
@@ -17,49 +11,42 @@ group "validate" {
|
||||
}
|
||||
|
||||
target "build" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "build-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "build-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "format" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "format-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "lint" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "lint"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "vendor" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-update"
|
||||
output = ["."]
|
||||
}
|
||||
|
||||
target "vendor-validate" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "vendor-validate"
|
||||
output = ["type=cacheonly"]
|
||||
}
|
||||
|
||||
target "test" {
|
||||
inherits = ["_common"]
|
||||
dockerfile = "dev.Dockerfile"
|
||||
target = "test-coverage"
|
||||
output = ["./coverage"]
|
||||
|
||||
@@ -147,9 +147,6 @@ function getSourceInput(name: string): string {
|
||||
let source = handlebars.compile(core.getInput(name))({
|
||||
defaultContext: Context.gitContext()
|
||||
});
|
||||
if (!source) {
|
||||
source = Context.gitContext();
|
||||
}
|
||||
if (source === '.') {
|
||||
source = '';
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
-
|
||||
name: List targets
|
||||
id: generate
|
||||
uses: docker/bake-action/subaction/list-targets@v6
|
||||
uses: docker/bake-action/subaction/list-targets@v4
|
||||
with:
|
||||
target: validate
|
||||
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Validate
|
||||
uses: docker/bake-action@v6
|
||||
uses: docker/bake-action@v5
|
||||
with:
|
||||
targets: ${{ matrix.target }}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user