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:
|
||||
- test
|
||||
- publish
|
||||
|
|
|
@ -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/*
|
||||
|
|
|
@ -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
|
||||
before_script:
|
||||
- apk add --no-cache make
|
||||
|
||||
test:docker-image:
|
||||
extends:
|
||||
- .docker-dind-service
|
||||
- .use-docker
|
||||
script:
|
||||
- *install-deps
|
||||
- make image
|
||||
.dockerfile-lint:
|
||||
stage: test
|
||||
only:
|
||||
refs:
|
||||
- merge_requests
|
||||
changes:
|
||||
- docker/Dockerfile
|
||||
except:
|
||||
refs:
|
||||
- master
|
||||
image: hadolint/hadolint:v1.18.0-alpine
|
||||
script:
|
||||
- "hadolint docker/Dockerfile"
|
||||
|
||||
publish:docker-image:
|
||||
extends:
|
||||
- .use-docker
|
||||
- .docker-dind-service
|
||||
.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
|
||||
|
|
|
@ -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 \
|
||||
&& \
|
||||
|
|
Loading…
Reference in a new issue