update gitlab ci

This commit is contained in:
Nicholas St. Germain 2019-08-09 15:46:06 -05:00
parent aa6b869443
commit 3503031ceb
No known key found for this signature in database
GPG key ID: 291EE25B239FA5EE

View file

@ -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