Docker build from gitlab pipeline
-
I do have the following "shared.gitlab-ci.yml"
variables: GIT_SUBMODULE_STRATEGY: recursive DOCKERFILE_BUILD: docker/build/Dockerfile DOCKERFILE_TEST: docker/test/Dockerfile DOCKERFILE_ANALYZE: docker/analyze/Dockerfile BUILD_NAME: $CI_PROJECT_PATH_SLUG:$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA PREPARE_SCRIPT: "" BUILD_ARGS: ""
stages:
- build
- test
- analyze
before_script:
- echo "Project Details:"
- echo $CI_PROJECT_PATH_SLUG
- echo $CI_COMMIT_REF_NAME
- echo $CI_COMMIT_SHORT_SHA
- echo "Build Variables:"
- echo $BUILD_NAME
- echo $DOCKERFILE_BUILD
- echo $DOCKERFILE_TEST
- echo $DOCKERFILE_ANALYZE
- echo "Directory:"
- ls -la
- echo "Registry info:"
- echo $CI_REGISTRY
- echo $CI_REGISTRY_NAME
- echo $CI_REGISTRY_USER
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
- docker info
docker-build:
image: docker:latest
stage: build
services:
- docker:dind
script:
- docker build
--rm
--build-arg BRANCH_NAME=$CI_COMMIT_REF_NAME
--build-arg BUILD_ARGS=$BUILD_ARGS
-t $BUILD_NAME
$DOCKERFILE_BUILD
- docker push $BUILD_NAME
Which is will be used/included in another repositories "gitlab-ci.yml" like :
include: - project: my-group/shared-pipeline ref: master file: shared.gitlab-ci.yml
The Dockerfile is also in this repository
/docker/build/Dockerfile
:FROM unityci/editor:windows-2020.1.16f1-base-0.17.2 as unity ARG BRANCH_NAME ARG BUILD_ARGS
CMD echo "Hello world! This is my first Docker image. Branch: $BRANCH_NAME"
Somehow when I run the "gitlab" pipeline I'll get the following output:
Fetching changes... Initialized empty Git repository in /builds/my-group/mygame/unity/.git/ Created fresh repository. Checking out 3731ab28 as develop... Updating/initializing submodules recursively... Executing "step_script" stage of the job script 00:01 Using docker image sha256:6816f070b2395d750ce78e4fbdb7e9df0af63b7686f3063c09e008c2ef1a0036 for docker:latest with digest docker@sha256:9e13118c8f7b17349e2d350806082fdda135ebf2923376821f3eac23559b9141 ... $ echo "Project Details:" Project Details: $ echo $CI_PROJECT_PATH_SLUG my-group-mygame-unity $ echo $CI_COMMIT_REF_NAME develop $ echo $CI_COMMIT_SHORT_SHA 3731ab28 $ echo "Build Variables:" Build Variables: $ echo $BUILD_NAME my-group-mygame-unity:develop-3731ab28 $ echo $DOCKERFILE_BUILD docker/build/Dockerfile $ echo $DOCKERFILE_TEST docker/test/Dockerfile $ echo $DOCKERFILE_ANALYZE docker/analyze/Dockerfile $ echo "Directory:" Directory: $ ls -la total 68 drwxrwxrwx 8 root root 4096 Mar 15 05:32 . drwxrwxrwx 4 root root 4096 Mar 15 05:32 .. -rw-rw-rw- 1 root root 1509 Mar 15 05:32 .atomignore drwxrwxrwx 7 root root 4096 Mar 15 05:32 .git -rw-rw-rw- 1 root root 1848 Mar 15 05:32 .gitattributes -rw-rw-rw- 1 root root 1817 Mar 15 05:32 .gitignore -rw-rw-rw- 1 root root 230 Mar 15 05:32 .gitlab-ci.yml drwxrwxrwx 13 root root 4096 Mar 15 05:32 Assets drwxrwxrwx 2 root root 4096 Mar 15 05:32 Packages drwxrwxrwx 2 root root 4096 Mar 15 05:32 ProjectSettings -rw-rw-rw- 1 root root 11542 Mar 15 05:32 README.md -rw-rw-rw- 1 root root 947 Mar 15 05:32 Unity_lic.alf -rw-rw-rw- 1 root root 2485 Mar 15 05:32 Unity_v2017.x.ulf drwxrwxrwx 3 root root 4096 Mar 15 05:32 ci drwxrwxrwx 3 root root 4096 Mar 15 05:32 docker $ echo "Registry info:" Registry info: $ echo $CI_REGISTRY registry.gitlab.com $ echo $CI_REGISTRY_NAME $ echo $CI_REGISTRY_USER gitlab-ci-token $ docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded $ docker info Client: Context: default Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 20.10.13 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: 2a1d4dbdb2a1030dc5b01e96fb110a9d9f150ecc runc version: v1.0.3-0-gf46b6ba2 init version: de40ad0 Security Options: apparmor seccomp Profile: default WARNING: API is accessible on http://0.0.0.0:2375 without encryption. Access to the remote API is equivalent to root access on the host. Refer to the 'Docker daemon attack surface' section in the documentation for more information: https://docs.docker.com/go/attack-surface/ Kernel Version: 5.4.109+ Operating System: Alpine Linux v3.15 (containerized) OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 3.599GiB Name: b837f980368f ID: 6PTR:73WJ:JO7S:UML2:4FCQ:RL3P:6VTY:PV7D:37OL:UXQ2:M33X:3ZCV Docker Root Dir: /var/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine $ docker build \ --rm \ --build-arg BRANCH_NAME=$CI_COMMIT_REF_NAME \ --build-arg BUILD_ARGS=$BUILD_ARGS \ -t $BUILD_NAME \ $DOCKERFILE_BUILD "docker build" requires exactly 1 argument. See 'docker build --help'. Usage: docker build [OPTIONS] PATH | URL | - Build an image from a Dockerfile Cleaning up project directory and file based variables 00:01 ERROR: Job failed: exit code 1
I always get:
"docker build" requires exactly 1 argument.
I also tried for example:
- docker build --file="$DOCKERFILE_BUILD" - docker push $BUILD_NAME
OR
- docker build -f $DOCKERFILE_BUILD - docker push $BUILD_NAME
The result always stays the same.
-
I think that you forgot '.'(dot)
docker build -f $DOCKERFILE_BUILD .
(In my case) Even with this command, I got the error ...