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:
parent
cb8a29c796
commit
ef50b88032
4 changed files with 87 additions and 65 deletions
|
@ -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
|
||||||
|
|
|
@ -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/*
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
.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:
|
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}
|
- 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
|
||||||
|
|
|
@ -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 \
|
||||||
&& \
|
&& \
|
||||||
|
|
Loading…
Reference in a new issue