switch to custom CI base image with dependencies installed
This commit is contained in:
parent
3cfe45d3cb
commit
8143fae2d6
213
.gitlab-ci.yml
213
.gitlab-ci.yml
|
@ -1,127 +1,136 @@
|
||||||
# Global Variables
|
# Global Variables
|
||||||
before_script:
|
|
||||||
- "python3 -m pip install -U virtualenv"
|
|
||||||
- "virtualenv env"
|
|
||||||
- "source env/bin/activate"
|
|
||||||
- "pip3 install -U -r requirements-dev.txt"
|
|
||||||
stages:
|
stages:
|
||||||
- test
|
- build-buildimage
|
||||||
- build
|
- test
|
||||||
- docs
|
- build
|
||||||
- deploy
|
- docs
|
||||||
image: python:3.6
|
- deploy
|
||||||
|
image: docker.pkg.beryju.org/passbook-build-base:latest
|
||||||
services:
|
services:
|
||||||
- postgres:latest
|
- postgres:latest
|
||||||
- redis:latest
|
- redis:latest
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
POSTGRES_DB: passbook
|
POSTGRES_DB: passbook
|
||||||
POSTGRES_USER: passbook
|
POSTGRES_USER: passbook
|
||||||
POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77"
|
POSTGRES_PASSWORD: "EK-5jnKfjrGRm<77"
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- /client-packages/allauth/.gitlab-ci.yml
|
- /client-packages/allauth/.gitlab-ci.yml
|
||||||
|
|
||||||
|
create-build-image:
|
||||||
|
image:
|
||||||
|
name: gcr.io/kaniko-project/executor:debug
|
||||||
|
entrypoint: [""]
|
||||||
|
before_script:
|
||||||
|
- echo "{\"auths\":{\"docker.$NEXUS_URL\":{\"auth\":\"$NEXUS_AUTH\"}}}" > /kaniko/.docker/config.json
|
||||||
|
script:
|
||||||
|
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile.build-base --destination docker.pkg.beryju.org/passbook-build-base:latest --destination docker.pkg.beryju.org/passbook-build-base:0.1.32-beta
|
||||||
|
stage: build-buildimage
|
||||||
|
only:
|
||||||
|
refs:
|
||||||
|
- tags
|
||||||
|
- /^version/.*$/
|
||||||
|
|
||||||
isort:
|
isort:
|
||||||
script:
|
script:
|
||||||
- isort -c -sg env
|
- isort -c -sg env
|
||||||
stage: test
|
stage: test
|
||||||
migrations:
|
migrations:
|
||||||
script:
|
script:
|
||||||
- python manage.py migrate
|
- python manage.py migrate
|
||||||
stage: test
|
stage: test
|
||||||
prospector:
|
prospector:
|
||||||
script:
|
script:
|
||||||
- prospector
|
- prospector
|
||||||
stage: test
|
stage: test
|
||||||
pylint:
|
pylint:
|
||||||
script:
|
script:
|
||||||
- pylint passbook
|
- pylint passbook
|
||||||
stage: test
|
stage: test
|
||||||
coverage:
|
coverage:
|
||||||
script:
|
script:
|
||||||
- python manage.py collectstatic --no-input
|
- python manage.py collectstatic --no-input
|
||||||
- coverage run manage.py test
|
- coverage run manage.py test
|
||||||
- coverage report
|
- coverage report
|
||||||
stage: test
|
stage: test
|
||||||
bandit:
|
bandit:
|
||||||
script:
|
script:
|
||||||
- bandit -r passbook
|
- bandit -r passbook
|
||||||
stage: test
|
stage: test
|
||||||
|
|
||||||
package-docker:
|
package-docker:
|
||||||
image:
|
image:
|
||||||
name: gcr.io/kaniko-project/executor:debug
|
name: gcr.io/kaniko-project/executor:debug
|
||||||
entrypoint: [""]
|
entrypoint: [""]
|
||||||
before_script:
|
before_script:
|
||||||
- echo "{\"auths\":{\"docker.$NEXUS_URL\":{\"auth\":\"$NEXUS_AUTH\"}}}" > /kaniko/.docker/config.json
|
- echo "{\"auths\":{\"docker.$NEXUS_URL\":{\"auth\":\"$NEXUS_AUTH\"}}}" > /kaniko/.docker/config.json
|
||||||
script:
|
script:
|
||||||
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination docker.pkg.beryju.org/passbook:latest --destination docker.pkg.beryju.org/passbook:0.1.32-beta
|
- /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination docker.pkg.beryju.org/passbook:latest --destination docker.pkg.beryju.org/passbook:0.1.32-beta
|
||||||
stage: build
|
stage: build
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
- /^version/.*$/
|
- /^version/.*$/
|
||||||
package-helm:
|
package-helm:
|
||||||
stage: build
|
stage: build
|
||||||
script:
|
script:
|
||||||
- curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash
|
- curl https://raw.githubusercontent.com/helm/helm/master/scripts/get | bash
|
||||||
- helm init --client-only
|
- helm init --client-only
|
||||||
- helm package helm/passbook
|
- helm package helm/passbook
|
||||||
- ./manage.py nexus_upload --method put --url $NEXUS_URL --auth $NEXUS_AUTH --repo helm *.tgz
|
- ./manage.py nexus_upload --method put --url $NEXUS_URL --auth $NEXUS_AUTH --repo helm *.tgz
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
- /^version/.*$/
|
- /^version/.*$/
|
||||||
package-debian:
|
package-debian:
|
||||||
before_script:
|
before_script:
|
||||||
- apt update
|
- apt update
|
||||||
- apt install -y --no-install-recommends build-essential debhelper devscripts equivs python3 python3-dev python3-pip libsasl2-dev libldap2-dev
|
- apt install -y --no-install-recommends build-essential debhelper devscripts equivs python3 python3-dev python3-pip libsasl2-dev libldap2-dev
|
||||||
- mk-build-deps debian/control
|
- mk-build-deps debian/control
|
||||||
- apt install ./*build-deps*deb -f -y
|
- apt install ./*build-deps*deb -f -y
|
||||||
- python3 -m pip install -U virtualenv pip
|
- python3 -m pip install -U virtualenv pip
|
||||||
- virtualenv env
|
- virtualenv env
|
||||||
- source env/bin/activate
|
- source env/bin/activate
|
||||||
- pip3 install -U -r requirements.txt -r requirements-dev.txt
|
- pip3 install -U -r requirements.txt -r requirements-dev.txt
|
||||||
- ./manage.py collectstatic --no-input
|
- ./manage.py collectstatic --no-input
|
||||||
image: ubuntu:18.04
|
image: ubuntu:18.04
|
||||||
script:
|
script:
|
||||||
- debuild -us -uc
|
- debuild -us -uc
|
||||||
- cp ../passbook*.deb .
|
- cp ../passbook*.deb .
|
||||||
- ./manage.py nexus_upload --method post --url $NEXUS_URL --auth $NEXUS_AUTH --repo apt passbook*deb
|
- ./manage.py nexus_upload --method post --url $NEXUS_URL --auth $NEXUS_AUTH --repo apt passbook*deb
|
||||||
artifacts:
|
artifacts:
|
||||||
paths:
|
paths:
|
||||||
- passbook*deb
|
- passbook*deb
|
||||||
expire_in: 2 days
|
expire_in: 2 days
|
||||||
stage: build
|
stage: build
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
- /^version/.*$/
|
- /^version/.*$/
|
||||||
|
|
||||||
package-client-package-allauth:
|
package-client-package-allauth:
|
||||||
script:
|
script:
|
||||||
- cd client-packages/allauth
|
- cd client-packages/allauth
|
||||||
- python setup.py sdist
|
- python setup.py sdist
|
||||||
- twine upload --username $TWINE_USERNAME --password $TWINE_PASSWORD dist/*
|
- twine upload --username $TWINE_USERNAME --password $TWINE_PASSWORD dist/*
|
||||||
stage: build
|
stage: build
|
||||||
only:
|
only:
|
||||||
refs:
|
refs:
|
||||||
- tags
|
- tags
|
||||||
- /^version/.*$/
|
- /^version/.*$/
|
||||||
changes:
|
changes:
|
||||||
- client-packages/allauth/**
|
- client-packages/allauth/**
|
||||||
|
|
||||||
package-client-package-sentry:
|
package-client-package-sentry:
|
||||||
script:
|
script:
|
||||||
- cd client-packages/sentry-auth-passbook
|
- cd client-packages/sentry-auth-passbook
|
||||||
- python setup.py sdist
|
- python setup.py sdist
|
||||||
- twine upload --username $TWINE_USERNAME --password $TWINE_PASSWORD dist/*
|
- twine upload --username $TWINE_USERNAME --password $TWINE_PASSWORD dist/*
|
||||||
stage: build
|
stage: build
|
||||||
only:
|
only:
|
||||||
refs:
|
refs:
|
||||||
- tags
|
- tags
|
||||||
- /^version/.*$/
|
- /^version/.*$/
|
||||||
changes:
|
changes:
|
||||||
- client-packages/sentry-auth-passbook/**
|
- client-packages/sentry-auth-passbook/**
|
||||||
|
|
||||||
# docs:
|
# docs:
|
||||||
# stage: docs
|
# stage: docs
|
||||||
# only:
|
# only:
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
FROM python:3.6
|
||||||
|
|
||||||
|
COPY ./passbook/ /app/passbook
|
||||||
|
COPY ./client-packages/ /app/client-packages
|
||||||
|
COPY ./requirements.txt /app/
|
||||||
|
COPY ./requirements-dev.txt /app/
|
||||||
|
|
||||||
|
WORKDIR /app/
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install libssl-dev libffi-dev libpq-dev -y && \
|
||||||
|
pip install -U -r requirements-dev.txt && \
|
||||||
|
rm -rf /app/*
|
Reference in New Issue