ci: workflow and rules

This commit brings the CI pipeline configuration up to date.

Changes include:

- add workflow rules.
- remove only/except syntax in favourof rules.
- update ref to CV builder image.
- add Dockerfile linting as part of the test stage.
- fix linting issues in Dockerfile.
This commit is contained in:
Dan Anglin 2020-08-08 04:36:13 +01:00
parent cb8a29c796
commit ef50b88032
No known key found for this signature in database
GPG key ID: 7AC2B18EC1D09F27
4 changed files with 87 additions and 65 deletions

View file

@ -1,4 +1,10 @@
---
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- if: '$CI_COMMIT_TAG'
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
stages:
- test
- publish

View file

@ -1,15 +1,28 @@
---
.use-cv-builder:
image: ${IMAGE_NAME}:master-8b42c9fd
image: ${IMAGE_NAME}:master-cb8a29c7
.test-conditions:
only:
refs:
- merge_requests
except:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: always
- if:
changes:
- docker/Dockerfile
- __output/*
when: never
.publish-conditions:
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "dananglin/cv"'
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if:
changes:
- docker/Dockerfile
- __output/*
when: never
test:spellcheck:
before_script:
@ -21,9 +34,6 @@ test:spellcheck:
stage: test
script:
- make spellcheck
only:
refs:
- merge_requests
test:pdf:
artifacts:
@ -33,14 +43,14 @@ test:pdf:
extends:
- .use-cv-builder
- .test-conditions
before_script:
- make clean
stage: test
script:
- make
- make clean pdf
publish:pdf:
extends: .use-cv-builder
extends:
- .use-cv-builder
- .publish-conditions
before_script:
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
@ -50,18 +60,10 @@ publish:pdf:
- git remote set-url origin git@gitlab.com:${CI_PROJECT_PATH}.git
- git config --global user.email "${GITLAB_USER_EMAIL}"
- git config --global user.name "${GITLAB_USER_NAME}"
- make clean
stage: publish
script:
- make
- make clean pdf
- git checkout master
- git add __output/cv.pdf
- 'git commit -m "auto: update CV."'
- git push origin master
only:
refs:
- master@dananglin/cv
except:
changes:
- docker/Dockerfile
- __output/*

View file

@ -1,45 +1,58 @@
---
.docker-dind-service:
.docker-build-setup:
image: docker:19.03.12
services:
- docker:19.03.12-dind
.use-docker:
image: docker:19.03.12
.install-deps: &install-deps
- apk add --no-cache make
test:docker-image:
extends:
- .docker-dind-service
- .use-docker
script:
- *install-deps
- make image
stage: test
only:
refs:
- merge_requests
changes:
- docker/Dockerfile
except:
refs:
- master
publish:docker-image:
extends:
- .use-docker
- .docker-dind-service
before_script:
- apk add --no-cache make
.dockerfile-lint:
stage: test
image: hadolint/hadolint:v1.18.0-alpine
script:
- "hadolint docker/Dockerfile"
.dockerbuild-test:
stage: test
extends: .docker-build-setup
.docker-publish:
stage: publish
extends: .docker-build-setup
before_script:
- apk add --no-cache make
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
after_script:
- docker logout ${CI_REGISTRY}
script:
- *install-deps
- make publish
stage: publish
only:
.test-docker-rules:
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
changes:
- docker/Dockerfile
refs:
- master@dananglin/cv
- "docker/Dockerfile"
when: always
test:dockerfile:lint:
extends:
- .dockerfile-lint
- .test-docker-rules
test:docker:build:
extends:
- .dockerbuild-test
- .test-docker-rules
script:
- make image
publish:docker-image:
extends:
- .docker-publish
script:
- make publish
rules:
- if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "dananglin/cv"'
changes:
- "docker/Dockerfile"
when: always
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never

View file

@ -4,19 +4,20 @@ FROM golang:1.14.6-buster
RUN \
apt-get update && \
apt-get install -y --no-install-recommends \
fonts-crosextra-carlito \
rsync \
fonts-crosextra-carlito=20130920-1 \
rsync=3.1.3-6 \
&& \
apt-get clean autoclean && \
apt-get autoremove -y && \
rm -rf /var/lib/apt/lists/* /tmp/*
rm -rf /var/lib/apt/lists/* /tmp/* && \
mkdir /opt/context
WORKDIR /opt/context
# Install ConTeXt standalone
RUN \
mkdir /opt/context && \
cd /opt/context && \
curl -LO http://minimals.contextgarden.net/setup/first-setup.sh && \
sh ./first-setup.sh \
curl -L http://minimals.contextgarden.net/setup/first-setup.sh -o /opt/context/first-setup.sh && \
sh /opt/context/first-setup.sh \
--context=current \
--engine=luatex \
&& \