Overhaul CI pipeline to use a custom Ubuntu-based Docker image. 286/head
authorJason Ninneman <jsn@mbar.us>
Tue, 12 Jan 2021 04:41:09 +0000 (21:41 -0700)
committerJason Ninneman <jsn@mbar.us>
Tue, 12 Jan 2021 16:08:56 +0000 (09:08 -0700)
.gitlab-ci.yml
Dockerfile.ci [new file with mode: 0644]

index f9ce742f9fbf2bc743223638715983c1e61f44cc..0d0ab9d343a90ca642cb5cb72f83e163d8d596d9 100644 (file)
@@ -1,15 +1,26 @@
-image: opensuse/tumbleweed
-
 stages:
+  - ci-build
   - build
   - test
   - deploy
 
+default:
+  image: $CI_REGISTRY_IMAGE:ci
+
+# build and push Docker image to be used in subsequent steps
+ci-build:
+  stage: ci-build
+  image:
+    name: gcr.io/kaniko-project/executor:debug
+    entrypoint: [""]
+  script:
+    - mkdir -p /kaniko/.docker
+    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
+    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile.ci --destination $CI_REGISTRY_IMAGE:ci --cache=true
+
 # build advent itself
 binary:debug:
   stage: build
-  before_script:
-    - zypper install -y make gcc libedit-devel libasan5 libubsan1 python python3-PyYAML lcov
   script:
     - make debug
   artifacts:
@@ -22,8 +33,6 @@ binary:debug:
 
 binary:release:
   stage: build
-  before_script:
-    - zypper install -y make gcc libedit-devel python python3-PyYAML
   script:
     - make advent cheat
   artifacts:
@@ -36,8 +45,6 @@ binary:release:
 
 manpage:
   stage: build
-  before_script:
-    - zypper install -y make asciidoc
   script:
     - make advent.6
   artifacts:
@@ -46,8 +53,6 @@ manpage:
 
 html:
   stage: build
-  before_script:
-    - zypper install -y make asciidoc libxslt
   script:
     - make html
   artifacts:
@@ -56,8 +61,6 @@ html:
 
 dist:
   stage: build
-  before_script:
-    - zypper install -y make asciidoc tar gzip
   script:
     - export VERS=${CI_COMMIT_REF_NAME}
     - make dist -e
@@ -68,8 +71,6 @@ dist:
 # run tests using the binary built before
 test:debug:
   stage: test
-  before_script:
-    - zypper install -y make gcc libedit-devel libasan5 libubsan1 python python3-PyYAML lcov diffutils
   script:
     - make coverage
   artifacts:
@@ -80,8 +81,6 @@ test:debug:
 
 test:release:
   stage: test
-  before_script:
-    - zypper install -y make libedit diffutils
   script:
     - cd tests
     - make
diff --git a/Dockerfile.ci b/Dockerfile.ci
new file mode 100644 (file)
index 0000000..f7dcab9
--- /dev/null
@@ -0,0 +1,10 @@
+# This image is built by the Gitlab CI pipeline to be used in subsequent
+# pipeline steps.
+
+FROM ubuntu:focal
+
+ # tell apt not to ask for any user input
+ENV DEBIAN_FRONTEND=noninteractive
+
+RUN apt-get update
+RUN apt-get install --yes --no-install-recommends make gcc-10 libedit-dev libasan6 libubsan1 python3 python3-yaml lcov asciidoc libxslt1.1 pkg-config docbook-xml xsltproc