131 lines
3.1 KiB
YAML
131 lines
3.1 KiB
YAML
stages:
|
|
- setup
|
|
- audit
|
|
- lint
|
|
- test
|
|
- publish
|
|
- deploy
|
|
|
|
install:
|
|
image: node:14
|
|
stage: setup
|
|
script:
|
|
- npm ci
|
|
artifacts:
|
|
paths:
|
|
- node_modules
|
|
expire_in: 1 week
|
|
|
|
audit:
|
|
image: python:3.9
|
|
stage: audit
|
|
needs: []
|
|
before_script:
|
|
- pip install poetry==1.1.4
|
|
- poetry config virtualenvs.create false
|
|
- poetry install --no-interaction --no-ansi
|
|
script:
|
|
- safety check
|
|
|
|
test:
|
|
image: python:3.9
|
|
stage: test
|
|
needs: []
|
|
services:
|
|
- postgres:12
|
|
variables:
|
|
POSTGRES_DB: ci
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres
|
|
DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB"
|
|
DB_HOST: postgres
|
|
before_script:
|
|
- pip install poetry==1.1.4
|
|
- poetry config virtualenvs.create false
|
|
- poetry install --no-interaction --no-ansi
|
|
script:
|
|
- python manage.py migrate --noinput
|
|
- python manage.py createdefaultadmin
|
|
- python manage.py test
|
|
|
|
lint:py:
|
|
image: python:3.9
|
|
stage: lint
|
|
needs: []
|
|
script:
|
|
- pip install black==21.12b0
|
|
- black --check .
|
|
|
|
lint:js:
|
|
image: node:14
|
|
stage: lint
|
|
needs: ["install"]
|
|
script:
|
|
- npm run lint:js
|
|
|
|
lint:md:
|
|
image: node:14
|
|
stage: lint
|
|
needs: ["install"]
|
|
script:
|
|
- npm run lint:md
|
|
|
|
publish:
|
|
stage: publish
|
|
image: docker:stable
|
|
needs: ["test", "lint:py", "lint:js", "lint:md"]
|
|
services:
|
|
- docker:stable-dind
|
|
only:
|
|
- develop
|
|
- master
|
|
script:
|
|
- docker info
|
|
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
|
|
- docker build . -t "$IMAGE_NAME"
|
|
- docker push "$IMAGE_NAME"
|
|
|
|
deploy:dev:
|
|
stage: deploy
|
|
image: docker:stable
|
|
only:
|
|
- develop
|
|
environment:
|
|
name: dev
|
|
url: http://api.dev.sahkoinsinoorikilta.fi
|
|
variables:
|
|
DOCKER_HOST: $DEV_CI_DOCKER_HOST
|
|
DOCKER_TLS_VERIFY: 1
|
|
before_script:
|
|
- mkdir -p ~/.docker
|
|
- echo "$DEV_TLSCACERT" > ~/.docker/ca.pem
|
|
- echo "$DEV_TLSCERT" > ~/.docker/cert.pem
|
|
- echo "$DEV_TLSKEY" > ~/.docker/key.pem
|
|
- docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY"
|
|
script:
|
|
- docker stack deploy --with-registry-auth -c stack-compose-dev.yml "$SERVICE_NAME"
|
|
after_script:
|
|
- docker logout "$CI_REGISTRY"
|
|
|
|
deploy:production:
|
|
stage: deploy
|
|
image: docker:stable
|
|
only:
|
|
- master
|
|
environment:
|
|
name: production
|
|
url: https://api.sahkoinsinoorikilta.fi
|
|
when: manual
|
|
variables:
|
|
DOCKER_HOST: $CI_DOCKER_HOST
|
|
DOCKER_TLS_VERIFY: 1
|
|
before_script:
|
|
- mkdir -p ~/.docker
|
|
- echo "$TLSCACERT" > ~/.docker/ca.pem
|
|
- echo "$TLSCERT" > ~/.docker/cert.pem
|
|
- echo "$TLSKEY" > ~/.docker/key.pem
|
|
- docker login -u gitlab-ci-token -p "$CI_BUILD_TOKEN" "$CI_REGISTRY"
|
|
script:
|
|
- docker stack deploy --with-registry-auth -c stack-compose.yml "$SERVICE_NAME"
|
|
after_script:
|
|
- docker logout "$CI_REGISTRY" |