update gitlab ci
This commit is contained in:
parent
aa6b869443
commit
3503031ceb
1 changed files with 121 additions and 13 deletions
134
.gitlab-ci.yml
134
.gitlab-ci.yml
|
@ -1,21 +1,129 @@
|
||||||
stages:
|
stages:
|
||||||
- test
|
- test
|
||||||
- deploy
|
- build and push
|
||||||
|
- manifests
|
||||||
- release
|
- release
|
||||||
|
|
||||||
variables:
|
.common_build: &common_build
|
||||||
DOCKER_REPO: "boerderij/varken"
|
image: docker:stable
|
||||||
GIT_REPO: 'Boerderij/Varken'
|
stage: build and push
|
||||||
VERSION_FILE: "varken/__init__.py"
|
variables:
|
||||||
FLAKE_FILES: "Varken.py varken/*.py"
|
DOCKER_HOST: tcp://docker:2375/
|
||||||
TAG: ""
|
DOCKER_DRIVER: overlay2
|
||||||
GIT_TOKEN: credentials('github-jenkins-token')
|
services:
|
||||||
|
- docker:dind
|
||||||
|
except:
|
||||||
|
- tags
|
||||||
|
only:
|
||||||
|
changes:
|
||||||
|
- "Dockerfile*"
|
||||||
|
- Varken.py
|
||||||
|
- varken/*
|
||||||
|
- .gitlab-ci.yml
|
||||||
|
before_script:
|
||||||
|
- mkdir $HOME/.docker
|
||||||
|
- echo '{"experimental":"enabled"}' > $HOME/.docker/config.json
|
||||||
|
- if [[ $CI_COMMIT_REF_NAME == "master" ]]; then
|
||||||
|
export TAG=$(grep -i version varken/__init__.py | cut -d \ -f3 | tr -d \");
|
||||||
|
else
|
||||||
|
export TAG="develop";
|
||||||
|
fi
|
||||||
|
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USER" --password-stdin
|
||||||
|
- export CI_PROJECT_PATH=$(echo $CI_PROJECT_PATH | tr "[:upper:]" "[:lower:]")
|
||||||
|
|
||||||
flake8-test:
|
.common_release: &common_release
|
||||||
|
<<: *common_build
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
- shared
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- master
|
||||||
|
|
||||||
|
flake8:
|
||||||
image: python:3.7.3-alpine
|
image: python:3.7.3-alpine
|
||||||
stage: test
|
stage: test
|
||||||
|
cache:
|
||||||
|
key: "varken-cache"
|
||||||
|
paths:
|
||||||
|
- .cache/pip
|
||||||
|
- venv/
|
||||||
|
variables:
|
||||||
|
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
||||||
|
tags:
|
||||||
|
- shared
|
||||||
|
before_script:
|
||||||
|
- python -m venv venv
|
||||||
|
- source venv/bin/activate
|
||||||
|
- pip install -U flake8
|
||||||
script:
|
script:
|
||||||
- pip install flake8
|
- flake8 --max-line-length 120 Varken.py varken/*.py
|
||||||
- flake8 --max-line-length 120 $FLAKE_FILES
|
|
||||||
- grep -i version $VERSION_FILE | cut -d" " -f3 | tr -d \\"
|
amd64:
|
||||||
- echo $CI_PROJECT_PATH $CI_PROJECT_PATH_SLUG
|
<<: *common_build
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
- shared
|
||||||
|
script:
|
||||||
|
- docker build --pull
|
||||||
|
--cache-from "$CI_PROJECT_PATH":"$TAG-amd64"
|
||||||
|
-t "$CI_PROJECT_PATH":"$TAG-amd64" .
|
||||||
|
- docker push "$CI_PROJECT_PATH":"$TAG-amd64"
|
||||||
|
|
||||||
|
armv6:
|
||||||
|
<<: *common_build
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
- arm
|
||||||
|
script:
|
||||||
|
- docker build --pull
|
||||||
|
--cache-from "$CI_PROJECT_PATH":"$TAG-arm"
|
||||||
|
-t "$CI_PROJECT_PATH":"$TAG-arm"
|
||||||
|
-f Dockerfile.arm .
|
||||||
|
- docker push "$CI_PROJECT_PATH":"$TAG-arm"
|
||||||
|
|
||||||
|
arm64v8:
|
||||||
|
<<: *common_build
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
- arm64
|
||||||
|
script:
|
||||||
|
- docker build --pull
|
||||||
|
--cache-from "$CI_PROJECT_PATH":"$TAG-arm64"
|
||||||
|
-t "$CI_PROJECT_PATH":"$TAG-arm64"
|
||||||
|
-f Dockerfile.arm64 .
|
||||||
|
- docker push "$CI_PROJECT_PATH":"$TAG-arm64"
|
||||||
|
|
||||||
|
versioned:
|
||||||
|
<<: *common_build
|
||||||
|
stage: manifests
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
- shared
|
||||||
|
script:
|
||||||
|
- docker manifest create "$CI_PROJECT_PATH":"$TAG"
|
||||||
|
"$CI_PROJECT_PATH":"$TAG-amd64"
|
||||||
|
"$CI_PROJECT_PATH":"$TAG-arm64"
|
||||||
|
"$CI_PROJECT_PATH":"$TAG-arm"
|
||||||
|
- docker manifest push -p "$CI_PROJECT_PATH":"$TAG"
|
||||||
|
|
||||||
|
latest:
|
||||||
|
<<: *common_release
|
||||||
|
stage: manifests
|
||||||
|
tags:
|
||||||
|
- docker
|
||||||
|
script:
|
||||||
|
- docker manifest create "$CI_PROJECT_PATH":latest
|
||||||
|
"$CI_PROJECT_PATH":"$TAG-amd64"
|
||||||
|
"$CI_PROJECT_PATH":"$TAG-arm64"
|
||||||
|
"$CI_PROJECT_PATH":"$TAG-arm"
|
||||||
|
- docker manifest push -p "$CI_PROJECT_PATH":latest
|
||||||
|
|
||||||
|
.github:
|
||||||
|
<<: *common_release
|
||||||
|
stage: release
|
||||||
|
script:
|
||||||
|
- apk add git
|
||||||
|
- git remote set-url origin "https://$GITHUB_USER:$GITHUB_TOKEN@github.com/$CI_PROJECT_PATH".git"
|
||||||
|
- git tag $TAG
|
||||||
|
- git push --tags
|
Loading…
Reference in a new issue