diff --git a/.github/subaction-list-targets.png b/.github/subaction-list-targets.png new file mode 100644 index 0000000..b0a0086 Binary files /dev/null and b/.github/subaction-list-targets.png differ diff --git a/README.md b/README.md index b32ecad..9d70880 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ ___ * [outputs](#outputs) * [environment variables](#environment-variables) * [Subactions](#subactions) - * [`list-targets`](#list-targets) + * [`list-targets`](subaction/list-targets) * [Contributing](#contributing) ## Usage @@ -204,79 +204,6 @@ The following outputs are available |------------|------|-----------------------| | `metadata` | JSON | Build result metadata | -## Subactions - -### `list-targets` - -This subaction generates a list of Bake targets that can be used in a [GitHub matrix](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix), -so you can distribute your builds across multiple runners. - -```hcl -# docker-bake.hcl -group "validate" { - targets = ["lint", "doctoc"] -} - -target "lint" { - target = "lint" -} - -target "doctoc" { - target = "doctoc" -} -``` - -```yaml -jobs: - prepare: - runs-on: ubuntu-latest - outputs: - targets: ${{ steps.generate.outputs.targets }} - steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: List targets - id: generate - uses: docker/bake-action/subaction/list-targets@v4 - with: - target: validate - - validate: - runs-on: ubuntu-latest - needs: - - prepare - strategy: - fail-fast: false - matrix: - target: ${{ fromJson(needs.prepare.outputs.targets) }} - steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: Validate - uses: docker/bake-action@v5 - with: - targets: ${{ matrix.target }} -``` -#### inputs - -| Name | Type | Description | -|--------------|-------------|---------------------------------------------------------------------------------------------------------------------------------------------| -| `workdir` | String | Working directory to use (defaults to `.`) | -| `files` | List/CSV | List of [bake definition files](https://docs.docker.com/build/customize/bake/file-definition/) | -| `target` | String | The target to use within the bake file | - -#### outputs - -The following outputs are available - -| Name | Type | Description | -|------------|----------|----------------------------| -| `targets` | List/CSV | List of extracted targest | - ### environment variables | Name | Type | Default | Description | @@ -285,6 +212,10 @@ The following outputs are available | `DOCKER_BUILD_RECORD_UPLOAD` | Bool | `true` | If `false`, build record upload as [GitHub artifact](https://docs.github.com/en/actions/using-workflows/storing-workflow-data-as-artifacts) is disabled | | `DOCKER_BUILD_RECORD_RETENTION_DAYS` | Number | | Duration after which build record artifact will expire in days. Defaults to repository/org [retention settings](https://docs.github.com/en/actions/learn-github-actions/usage-limits-billing-and-administration#artifact-and-log-retention-policy) if unset or `0` | +## Subactions + +* [`list-targets`](subaction/list-targets) + ## Contributing Want to contribute? Awesome! You can find information about contributing to diff --git a/subaction/list-targets/README.md b/subaction/list-targets/README.md new file mode 100644 index 0000000..7e2bcc3 --- /dev/null +++ b/subaction/list-targets/README.md @@ -0,0 +1,84 @@ +## About + +This subaction generates a list of Bake targets that can be used in a [GitHub matrix](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrix), +so you can distribute your builds across multiple runners. + +![Screenshot](../../.github/bake-action.png) + +___ + +* [Usage](#usage) +* [Customizing](#customizing) + * [inputs](#inputs) + * [outputs](#outputs) + +## Usage + +```hcl +# docker-bake.hcl +group "validate" { + targets = ["lint", "doctoc"] +} + +target "lint" { + target = "lint" +} + +target "doctoc" { + target = "doctoc" +} +``` + +```yaml +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + targets: ${{ steps.generate.outputs.targets }} + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: List targets + id: generate + uses: docker/bake-action/subaction/list-targets@v4 + with: + target: validate + + validate: + runs-on: ubuntu-latest + needs: + - prepare + strategy: + fail-fast: false + matrix: + target: ${{ fromJson(needs.prepare.outputs.targets) }} + steps: + - + name: Checkout + uses: actions/checkout@v4 + - + name: Validate + uses: docker/bake-action@v5 + with: + targets: ${{ matrix.target }} +``` + +## Customizing + +### inputs + +| Name | Type | Description | +|--------------|-------------|---------------------------------------------------------------------------------------------------------------------------------------------| +| `workdir` | String | Working directory to use (defaults to `.`) | +| `files` | List/CSV | List of [bake definition files](https://docs.docker.com/build/customize/bake/file-definition/) | +| `target` | String | The target to use within the bake file | + +### outputs + +The following outputs are available + +| Name | Type | Description | +|------------|----------|----------------------------| +| `targets` | List/CSV | List of extracted targest |