Merge pull request #3774 from zededa-yuri/build-arg

Declare build-args in build.yml
This commit is contained in:
Avi Deitcher 2022-04-15 12:38:37 +03:00 committed by GitHub
commit b710224cdf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 0 deletions

View File

@ -41,6 +41,7 @@ A package source consists of a directory containing at least two files:
- `gitrepo` _(string)_: The git repository where the package source is kept. - `gitrepo` _(string)_: The git repository where the package source is kept.
- `network` _(bool)_: Allow network access during the package build (default: no) - `network` _(bool)_: Allow network access during the package build (default: no)
- `disable-cache` _(bool)_: Disable build cache for this package (default: no) - `disable-cache` _(bool)_: Disable build cache for this package (default: no)
- `buildArgs` will forward a list of build arguments down to docker. As if `--build-arg` was specified during `docker build`
- `config`: _(struct `github.com/moby/tool/src/moby.ImageConfig`)_: Image configuration, marshalled to JSON and added as `org.mobyproject.config` label on image (default: no label) - `config`: _(struct `github.com/moby/tool/src/moby.ImageConfig`)_: Image configuration, marshalled to JSON and added as `org.mobyproject.config` label on image (default: no label)
- `depends`: Contains information on prerequisites which must be satisfied in order to build the package. Has subfields: - `depends`: Contains information on prerequisites which must be satisfied in order to build the package. Has subfields:
- `docker-images`: Docker images to be made available (as `tar` files via `docker image save`) within the package build context. Contains the following nested fields: - `docker-images`: Docker images to be made available (as `tar` files via `docker image save`) within the package build context. Contains the following nested fields:

View File

@ -257,6 +257,12 @@ func (p Pkg) Build(bos ...BuildOpt) error {
args = append(args, "--label=org.mobyproject.linuxkit.version="+version.Version) args = append(args, "--label=org.mobyproject.linuxkit.version="+version.Version)
args = append(args, "--label=org.mobyproject.linuxkit.revision="+version.GitCommit) args = append(args, "--label=org.mobyproject.linuxkit.revision="+version.GitCommit)
if p.buildArgs != nil {
for _, buildArg := range *p.buildArgs {
args = append(args, "--build-arg", buildArg)
}
}
// build for each arch and save in the linuxkit cache // build for each arch and save in the linuxkit cache
for _, platform := range bo.platforms { for _, platform := range bo.platforms {
desc, err := p.buildArch(d, c, platform.Architecture, args, writer, bo) desc, err := p.buildArch(d, c, platform.Architecture, args, writer, bo)

View File

@ -26,6 +26,7 @@ type pkgInfo struct {
Network bool `yaml:"network"` Network bool `yaml:"network"`
DisableCache bool `yaml:"disable-cache"` DisableCache bool `yaml:"disable-cache"`
Config *moby.ImageConfig `yaml:"config"` Config *moby.ImageConfig `yaml:"config"`
BuildArgs *[]string `yaml:"buildArgs,omitempty"`
Depends struct { Depends struct {
DockerImages struct { DockerImages struct {
TargetDir string `yaml:"target-dir"` TargetDir string `yaml:"target-dir"`
@ -54,6 +55,7 @@ type Pkg struct {
trust bool trust bool
cache bool cache bool
config *moby.ImageConfig config *moby.ImageConfig
buildArgs *[]string
dockerDepends dockerDepends dockerDepends dockerDepends
// Internal state // Internal state
@ -260,6 +262,7 @@ func NewFromCLI(fs *flag.FlagSet, args ...string) ([]Pkg, error) {
network: pi.Network, network: pi.Network,
cache: !pi.DisableCache, cache: !pi.DisableCache,
config: pi.Config, config: pi.Config,
buildArgs: pi.BuildArgs,
dockerDepends: dockerDepends, dockerDepends: dockerDepends,
dirty: dirty, dirty: dirty,
path: pkgPath, path: pkgPath,

View File

@ -0,0 +1,7 @@
FROM alpine:3.13
ARG TEST_RESULT=FAILED
RUN echo "printf \"Build-arg test $TEST_RESULT\\n\"" >> check.sh
ENTRYPOINT ["/bin/sh", "/check.sh"]

View File

@ -0,0 +1,7 @@
image: build-args-test
network: true
arches:
- amd64
- arm64
buildArgs:
- TEST_RESULT=PASSED

View File

@ -0,0 +1,18 @@
#!/bin/sh
# SUMMARY: Check that the build-args are correctly passed to Dockerfiles
# LABELS:
# REPEAT:
set -ex
# Source libraries. Uncomment if needed/defined
#. "${RT_LIB}"
. "${RT_PROJECT_ROOT}/_lib/lib.sh"
# Test code goes here
echo Linuxkig is "$(which linuxkit)"
RESULT="$(2>&1 linuxkit pkg build --force . | grep PASSED)"
echo RESULT="${RESULT}"
echo "${RESULT}" | grep "Build-arg test PASSED"
exit 0