mirror of
https://github.com/redhat-actions/buildah-build.git
synced 2025-04-20 09:01:23 +00:00
Add feature to pass extra args when building image
If a user wants to pass few extra args to build command when building image, then he can pass using 'extra-args' input parameter. Signed-off-by: divyansh42 <diagrawa@redhat.com>
This commit is contained in:
parent
75dab40354
commit
2b7e117c22
7 changed files with 24 additions and 9 deletions
4
.github/workflows/verify-build.yml
vendored
4
.github/workflows/verify-build.yml
vendored
|
@ -45,11 +45,11 @@ jobs:
|
||||||
image: ${{ env.IMAGE_NAME }}
|
image: ${{ env.IMAGE_NAME }}
|
||||||
# To avoid hardcoding a particular version of the binary.
|
# To avoid hardcoding a particular version of the binary.
|
||||||
content: |
|
content: |
|
||||||
./spring-petclinic/target/spring-petclinic-*.BUILD-SNAPSHOT.jar
|
./spring-petclinic/target/spring-petclinic-*.jar
|
||||||
entrypoint: |
|
entrypoint: |
|
||||||
java
|
java
|
||||||
-jar
|
-jar
|
||||||
spring-petclinic-*.BUILD-SNAPSHOT.jar
|
spring-petclinic-*.jar
|
||||||
port: 8080
|
port: 8080
|
||||||
|
|
||||||
# Check if image is build
|
# Check if image is build
|
||||||
|
|
|
@ -116,6 +116,13 @@ envs: |
|
||||||
GOPATH=/root/buildah/go</pre>
|
GOPATH=/root/buildah/go</pre>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>extra-args</td>
|
||||||
|
<td>No</td>
|
||||||
|
<td> Extra args to be passed to build command when building image.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
## Build Types
|
## Build Types
|
||||||
|
@ -165,6 +172,7 @@ Do not set `dockerfiles` if you are doing a build from scratch. Otherwise those
|
||||||
- `entrypoint` so the container knows what command to run.
|
- `entrypoint` so the container knows what command to run.
|
||||||
- In a Dockerfile, this would be the `ENTRYPOINT`.
|
- In a Dockerfile, this would be the `ENTRYPOINT`.
|
||||||
- All other optional configuration inputs, such as `port`, `envs`, and `workdir`.
|
- All other optional configuration inputs, such as `port`, `envs`, and `workdir`.
|
||||||
|
- `extra-args`
|
||||||
|
|
||||||
Example of building a Spring Boot Java app image:
|
Example of building a Spring Boot Java app image:
|
||||||
```yaml
|
```yaml
|
||||||
|
|
|
@ -44,6 +44,9 @@ inputs:
|
||||||
description: 'Set to true to build using the OCI image format instead of the Docker image format.'
|
description: 'Set to true to build using the OCI image format instead of the Docker image format.'
|
||||||
default: 'false'
|
default: 'false'
|
||||||
required: false
|
required: false
|
||||||
|
extra-args:
|
||||||
|
description: 'Extra args to be passed to build command when building image'
|
||||||
|
required: false
|
||||||
runs:
|
runs:
|
||||||
using: 'node12'
|
using: 'node12'
|
||||||
main: 'dist/index.js'
|
main: 'dist/index.js'
|
||||||
|
|
2
dist/index.js
vendored
2
dist/index.js
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
vendored
2
dist/index.js.map
vendored
File diff suppressed because one or more lines are too long
|
@ -3,7 +3,7 @@ import * as exec from "@actions/exec";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|
||||||
interface Buildah {
|
interface Buildah {
|
||||||
buildUsingDocker(image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean): Promise<CommandResult>;
|
buildUsingDocker(image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean, extraArgs: string): Promise<CommandResult>;
|
||||||
from(baseImage: string): Promise<CommandResult>;
|
from(baseImage: string): Promise<CommandResult>;
|
||||||
copy(container: string, contentToCopy: string[]): Promise<CommandResult>;
|
copy(container: string, contentToCopy: string[]): Promise<CommandResult>;
|
||||||
config(container: string, setting: {}): Promise<CommandResult>;
|
config(container: string, setting: {}): Promise<CommandResult>;
|
||||||
|
@ -29,7 +29,7 @@ export class BuildahCli implements Buildah {
|
||||||
return [ '--format', useOCI ? 'oci' : 'docker' ];
|
return [ '--format', useOCI ? 'oci' : 'docker' ];
|
||||||
}
|
}
|
||||||
|
|
||||||
async buildUsingDocker(image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean): Promise<CommandResult> {
|
async buildUsingDocker(image: string, context: string, dockerFiles: string[], buildArgs: string[], useOCI: boolean, extraArgs: string): Promise<CommandResult> {
|
||||||
const args: string[] = ['bud'];
|
const args: string[] = ['bud'];
|
||||||
dockerFiles.forEach(file => {
|
dockerFiles.forEach(file => {
|
||||||
args.push('-f');
|
args.push('-f');
|
||||||
|
@ -43,6 +43,9 @@ export class BuildahCli implements Buildah {
|
||||||
args.push('-t');
|
args.push('-t');
|
||||||
args.push(image);
|
args.push(image);
|
||||||
args.push(context);
|
args.push(context);
|
||||||
|
if (extraArgs) {
|
||||||
|
args.push(extraArgs);
|
||||||
|
}
|
||||||
return this.execute(args);
|
return this.execute(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,10 @@ export async function run(): Promise<void> {
|
||||||
const newImage = `${core.getInput('image', { required: true })}:${core.getInput('tag', { required: true })}`;
|
const newImage = `${core.getInput('image', { required: true })}:${core.getInput('tag', { required: true })}`;
|
||||||
|
|
||||||
const useOCI = core.getInput("oci") == "true";
|
const useOCI = core.getInput("oci") == "true";
|
||||||
|
const extraArgs = core.getInput("extra-args");
|
||||||
|
|
||||||
if (dockerFiles.length !== 0) {
|
if (dockerFiles.length !== 0) {
|
||||||
await doBuildUsingDockerFiles(cli, newImage, workspace, dockerFiles, useOCI);
|
await doBuildUsingDockerFiles(cli, newImage, workspace, dockerFiles, useOCI, extraArgs);
|
||||||
} else {
|
} else {
|
||||||
await doBuildFromScratch(cli, newImage, workspace, useOCI);
|
await doBuildFromScratch(cli, newImage, workspace, useOCI);
|
||||||
}
|
}
|
||||||
|
@ -31,7 +32,7 @@ export async function run(): Promise<void> {
|
||||||
core.setOutput("image", newImage);
|
core.setOutput("image", newImage);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function doBuildUsingDockerFiles(cli: BuildahCli, newImage: string, workspace: string, dockerFiles: string[], useOCI: boolean): Promise<void> {
|
async function doBuildUsingDockerFiles(cli: BuildahCli, newImage: string, workspace: string, dockerFiles: string[], useOCI: boolean, extraArgs: string): Promise<void> {
|
||||||
if (dockerFiles.length === 1) {
|
if (dockerFiles.length === 1) {
|
||||||
core.info(`Performing build from Dockerfile`);
|
core.info(`Performing build from Dockerfile`);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +43,7 @@ async function doBuildUsingDockerFiles(cli: BuildahCli, newImage: string, worksp
|
||||||
const context = path.join(workspace, core.getInput('context'));
|
const context = path.join(workspace, core.getInput('context'));
|
||||||
const buildArgs = getInputList('build-args');
|
const buildArgs = getInputList('build-args');
|
||||||
dockerFiles = dockerFiles.map(file => path.join(workspace, file));
|
dockerFiles = dockerFiles.map(file => path.join(workspace, file));
|
||||||
await cli.buildUsingDocker(newImage, context, dockerFiles, buildArgs, useOCI);
|
await cli.buildUsingDocker(newImage, context, dockerFiles, buildArgs, useOCI, extraArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function doBuildFromScratch(cli: BuildahCli, newImage: string, workspace: string, useOCI: boolean): Promise<void> {
|
async function doBuildFromScratch(cli: BuildahCli, newImage: string, workspace: string, useOCI: boolean): Promise<void> {
|
||||||
|
|
Loading…
Reference in a new issue