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: stages:
- test - test
- publish - publish

View file

@ -1,15 +1,28 @@
--- ---
.use-cv-builder: .use-cv-builder:
image: ${IMAGE_NAME}:master-8b42c9fd image: ${IMAGE_NAME}:master-cb8a29c7
.test-conditions: .test-conditions:
only: rules:
refs: - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
- merge_requests when: always
except: - if:
changes: changes:
- docker/Dockerfile - docker/Dockerfile
- __output/* - __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: test:spellcheck:
before_script: before_script:
@ -21,9 +34,6 @@ test:spellcheck:
stage: test stage: test
script: script:
- make spellcheck - make spellcheck
only:
refs:
- merge_requests
test:pdf: test:pdf:
artifacts: artifacts:
@ -33,14 +43,14 @@ test:pdf:
extends: extends:
- .use-cv-builder - .use-cv-builder
- .test-conditions - .test-conditions
before_script:
- make clean
stage: test stage: test
script: script:
- make - make clean pdf
publish:pdf: publish:pdf:
extends: .use-cv-builder extends:
- .use-cv-builder
- .publish-conditions
before_script: before_script:
- eval $(ssh-agent -s) - eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - 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 remote set-url origin git@gitlab.com:${CI_PROJECT_PATH}.git
- git config --global user.email "${GITLAB_USER_EMAIL}" - git config --global user.email "${GITLAB_USER_EMAIL}"
- git config --global user.name "${GITLAB_USER_NAME}" - git config --global user.name "${GITLAB_USER_NAME}"
- make clean
stage: publish stage: publish
script: script:
- make - make clean pdf
- git checkout master - git checkout master
- git add __output/cv.pdf - git add __output/cv.pdf
- 'git commit -m "auto: update CV."' - 'git commit -m "auto: update CV."'
- git push origin master - 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: services:
- docker:19.03.12-dind - docker:19.03.12-dind
before_script:
.use-docker:
image: docker:19.03.12
.install-deps: &install-deps
- apk add --no-cache make - apk add --no-cache make
test:docker-image: .dockerfile-lint:
extends:
- .docker-dind-service
- .use-docker
script:
- *install-deps
- make image
stage: test stage: test
only: image: hadolint/hadolint:v1.18.0-alpine
refs: script:
- merge_requests - "hadolint docker/Dockerfile"
changes:
- docker/Dockerfile
except:
refs:
- master
publish:docker-image: .dockerbuild-test:
extends: stage: test
- .use-docker extends: .docker-build-setup
- .docker-dind-service
.docker-publish:
stage: publish
extends: .docker-build-setup
before_script: before_script:
- apk add --no-cache make
- docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY} - docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY}
after_script: after_script:
- docker logout ${CI_REGISTRY} - docker logout ${CI_REGISTRY}
script:
- *install-deps .test-docker-rules:
- make publish rules:
stage: publish - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
only:
changes: changes:
- docker/Dockerfile - "docker/Dockerfile"
refs: when: always
- master@dananglin/cv
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 \ RUN \
apt-get update && \ apt-get update && \
apt-get install -y --no-install-recommends \ apt-get install -y --no-install-recommends \
fonts-crosextra-carlito \ fonts-crosextra-carlito=20130920-1 \
rsync \ rsync=3.1.3-6 \
&& \ && \
apt-get clean autoclean && \ apt-get clean autoclean && \
apt-get autoremove -y && \ 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 # Install ConTeXt standalone
RUN \ RUN \
mkdir /opt/context && \ curl -L http://minimals.contextgarden.net/setup/first-setup.sh -o /opt/context/first-setup.sh && \
cd /opt/context && \ sh /opt/context/first-setup.sh \
curl -LO http://minimals.contextgarden.net/setup/first-setup.sh && \
sh ./first-setup.sh \
--context=current \ --context=current \
--engine=luatex \ --engine=luatex \
&& \ && \