call input to set method for evaluating build
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									5e99dacf67
								
							
						
					
					
						commit
						75ffdcce88
					
				
							
								
								
									
										32
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							@ -288,7 +288,6 @@ jobs:
 | 
				
			|||||||
      -
 | 
					      -
 | 
				
			||||||
        name: Check
 | 
					        name: Check
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          echo "${{ toJson(steps.docker_build) }}"
 | 
					 | 
				
			||||||
          if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
 | 
					          if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
 | 
				
			||||||
            echo "::error::Should have failed"
 | 
					            echo "::error::Should have failed"
 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
@ -324,7 +323,6 @@ jobs:
 | 
				
			|||||||
      -
 | 
					      -
 | 
				
			||||||
        name: Check
 | 
					        name: Check
 | 
				
			||||||
        run: |
 | 
					        run: |
 | 
				
			||||||
          echo "${{ toJson(steps.docker_build) }}"
 | 
					 | 
				
			||||||
          if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
 | 
					          if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
 | 
				
			||||||
            echo "::error::Should have failed"
 | 
					            echo "::error::Should have failed"
 | 
				
			||||||
            exit 1
 | 
					            exit 1
 | 
				
			||||||
@ -1511,3 +1509,33 @@ jobs:
 | 
				
			|||||||
          file: ./test/lint.Dockerfile
 | 
					          file: ./test/lint.Dockerfile
 | 
				
			||||||
        env:
 | 
					        env:
 | 
				
			||||||
          DOCKER_BUILD_CHECKS_ANNOTATIONS: false
 | 
					          DOCKER_BUILD_CHECKS_ANNOTATIONS: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  call-check:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Checkout
 | 
				
			||||||
 | 
					        uses: actions/checkout@v4
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Set up Docker Buildx
 | 
				
			||||||
 | 
					        uses: docker/setup-buildx-action@v3
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          version: ${{ inputs.buildx-version || env.BUILDX_VERSION }}
 | 
				
			||||||
 | 
					          driver-opts: |
 | 
				
			||||||
 | 
					            image=${{ inputs.buildkit-image || env.BUILDKIT_IMAGE }}
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Build
 | 
				
			||||||
 | 
					        id: docker_build
 | 
				
			||||||
 | 
					        continue-on-error: true
 | 
				
			||||||
 | 
					        uses: ./
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          context: ./test
 | 
				
			||||||
 | 
					          file: ./test/lint.Dockerfile
 | 
				
			||||||
 | 
					          call: check
 | 
				
			||||||
 | 
					      -
 | 
				
			||||||
 | 
					        name: Check
 | 
				
			||||||
 | 
					        run: |
 | 
				
			||||||
 | 
					          if [ "${{ steps.docker_build.outcome }}" != "failure" ] || [ "${{ steps.docker_build.conclusion }}" != "success" ]; then
 | 
				
			||||||
 | 
					            echo "::error::Should have failed"
 | 
				
			||||||
 | 
					            exit 1
 | 
				
			||||||
 | 
					          fi
 | 
				
			||||||
 | 
				
			|||||||
@ -220,6 +220,7 @@ The following inputs can be used as `step.with` keys:
 | 
				
			|||||||
| `build-contexts`   | List        | List of additional [build contexts](https://docs.docker.com/engine/reference/commandline/buildx_build/#build-context) (e.g., `name=path`)                                         |
 | 
					| `build-contexts`   | List        | List of additional [build contexts](https://docs.docker.com/engine/reference/commandline/buildx_build/#build-context) (e.g., `name=path`)                                         |
 | 
				
			||||||
| `cache-from`       | List        | List of [external cache sources](https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-from) (e.g., `type=local,src=path/to/dir`)                              |
 | 
					| `cache-from`       | List        | List of [external cache sources](https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-from) (e.g., `type=local,src=path/to/dir`)                              |
 | 
				
			||||||
| `cache-to`         | List        | List of [cache export destinations](https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-to) (e.g., `type=local,dest=path/to/dir`)                            |
 | 
					| `cache-to`         | List        | List of [cache export destinations](https://docs.docker.com/engine/reference/commandline/buildx_build/#cache-to) (e.g., `type=local,dest=path/to/dir`)                            |
 | 
				
			||||||
 | 
					| `call`             | String      | Set [method for evaluating build](https://docs.docker.com/reference/cli/docker/buildx/build/#call) (e.g., `check`)                                                                |
 | 
				
			||||||
| `cgroup-parent`    | String      | Optional [parent cgroup](https://docs.docker.com/engine/reference/commandline/build/#use-a-custom-parent-cgroup---cgroup-parent) for the container used in the build              |
 | 
					| `cgroup-parent`    | String      | Optional [parent cgroup](https://docs.docker.com/engine/reference/commandline/build/#use-a-custom-parent-cgroup---cgroup-parent) for the container used in the build              |
 | 
				
			||||||
| `context`          | String      | Build's context is the set of files located in the specified [`PATH` or `URL`](https://docs.docker.com/engine/reference/commandline/build/) (default [Git context](#git-context)) |
 | 
					| `context`          | String      | Build's context is the set of files located in the specified [`PATH` or `URL`](https://docs.docker.com/engine/reference/commandline/build/) (default [Git context](#git-context)) |
 | 
				
			||||||
| `file`             | String      | Path to the Dockerfile. (default `{context}/Dockerfile`)                                                                                                                          |
 | 
					| `file`             | String      | Path to the Dockerfile. (default `{context}/Dockerfile`)                                                                                                                          |
 | 
				
			||||||
 | 
				
			|||||||
@ -34,6 +34,9 @@ inputs:
 | 
				
			|||||||
  cache-to:
 | 
					  cache-to:
 | 
				
			||||||
    description: "List of cache export destinations for buildx (e.g., user/app:cache, type=local,dest=path/to/dir)"
 | 
					    description: "List of cache export destinations for buildx (e.g., user/app:cache, type=local,dest=path/to/dir)"
 | 
				
			||||||
    required: false
 | 
					    required: false
 | 
				
			||||||
 | 
					  call:
 | 
				
			||||||
 | 
					    description: "Set method for evaluating build (e.g., check)"
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
  cgroup-parent:
 | 
					  cgroup-parent:
 | 
				
			||||||
    description: "Optional parent cgroup for the container used in the build"
 | 
					    description: "Optional parent cgroup for the container used in the build"
 | 
				
			||||||
    required: false
 | 
					    required: false
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,7 @@ export interface Inputs {
 | 
				
			|||||||
  builder: string;
 | 
					  builder: string;
 | 
				
			||||||
  'cache-from': string[];
 | 
					  'cache-from': string[];
 | 
				
			||||||
  'cache-to': string[];
 | 
					  'cache-to': string[];
 | 
				
			||||||
 | 
					  call: string;
 | 
				
			||||||
  'cgroup-parent': string;
 | 
					  'cgroup-parent': string;
 | 
				
			||||||
  context: string;
 | 
					  context: string;
 | 
				
			||||||
  file: string;
 | 
					  file: string;
 | 
				
			||||||
@ -53,6 +54,7 @@ export async function getInputs(): Promise<Inputs> {
 | 
				
			|||||||
    builder: core.getInput('builder'),
 | 
					    builder: core.getInput('builder'),
 | 
				
			||||||
    'cache-from': Util.getInputList('cache-from', {ignoreComma: true}),
 | 
					    'cache-from': Util.getInputList('cache-from', {ignoreComma: true}),
 | 
				
			||||||
    'cache-to': Util.getInputList('cache-to', {ignoreComma: true}),
 | 
					    'cache-to': Util.getInputList('cache-to', {ignoreComma: true}),
 | 
				
			||||||
 | 
					    call: core.getInput('call'),
 | 
				
			||||||
    'cgroup-parent': core.getInput('cgroup-parent'),
 | 
					    'cgroup-parent': core.getInput('cgroup-parent'),
 | 
				
			||||||
    context: core.getInput('context') || Context.gitContext(),
 | 
					    context: core.getInput('context') || Context.gitContext(),
 | 
				
			||||||
    file: core.getInput('file'),
 | 
					    file: core.getInput('file'),
 | 
				
			||||||
@ -141,6 +143,12 @@ async function getBuildArgs(inputs: Inputs, context: string, toolkit: Toolkit):
 | 
				
			|||||||
  await Util.asyncForEach(inputs['cache-to'], async cacheTo => {
 | 
					  await Util.asyncForEach(inputs['cache-to'], async cacheTo => {
 | 
				
			||||||
    args.push('--cache-to', cacheTo);
 | 
					    args.push('--cache-to', cacheTo);
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					  if (inputs.call) {
 | 
				
			||||||
 | 
					    if (!(await toolkit.buildx.versionSatisfies('>=0.15.0'))) {
 | 
				
			||||||
 | 
					      throw new Error(`Buildx >= 0.15.0 is required to use the call flag.`);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    args.push('--call', inputs.call);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  if (inputs['cgroup-parent']) {
 | 
					  if (inputs['cgroup-parent']) {
 | 
				
			||||||
    args.push('--cgroup-parent', inputs['cgroup-parent']);
 | 
					    args.push('--cgroup-parent', inputs['cgroup-parent']);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								src/main.ts
									
									
									
									
									
								
							@ -104,8 +104,14 @@ actionsToolkit.run(
 | 
				
			|||||||
        [key: string]: string;
 | 
					        [key: string]: string;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }).then(res => {
 | 
					    }).then(res => {
 | 
				
			||||||
      if (res.stderr.length > 0 && res.exitCode != 0) {
 | 
					      if (res.exitCode != 0) {
 | 
				
			||||||
        err = Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
 | 
					        if (inputs.call && inputs.call === 'check' && res.stdout.length > 0) {
 | 
				
			||||||
 | 
					          // checks warnings are printed to stdout: https://github.com/docker/buildx/pull/2647
 | 
				
			||||||
 | 
					          // take the first line with the message summaryzing the warnings
 | 
				
			||||||
 | 
					          err = Error(res.stdout.split('\n')[0]?.trim());
 | 
				
			||||||
 | 
					        } else if (res.stderr.length > 0) {
 | 
				
			||||||
 | 
					          err = Error(`buildx failed with: ${res.stderr.match(/(.*)\s*$/)?.[0]?.trim() ?? 'unknown error'}`);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -161,6 +167,8 @@ actionsToolkit.run(
 | 
				
			|||||||
    await core.group(`Check build summary support`, async () => {
 | 
					    await core.group(`Check build summary support`, async () => {
 | 
				
			||||||
      if (!buildSummaryEnabled()) {
 | 
					      if (!buildSummaryEnabled()) {
 | 
				
			||||||
        core.info('Build summary disabled');
 | 
					        core.info('Build summary disabled');
 | 
				
			||||||
 | 
					      } else if (inputs.call && inputs.call !== 'build') {
 | 
				
			||||||
 | 
					        core.info(`Build summary skipped for ${inputs.call} subrequest`);
 | 
				
			||||||
      } else if (GitHub.isGHES) {
 | 
					      } else if (GitHub.isGHES) {
 | 
				
			||||||
        core.info('Build summary is not yet supported on GHES');
 | 
					        core.info('Build summary is not yet supported on GHES');
 | 
				
			||||||
      } else if (!(await toolkit.buildx.versionSatisfies('>=0.13.0'))) {
 | 
					      } else if (!(await toolkit.buildx.versionSatisfies('>=0.13.0'))) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user