stages: - test - lint - publish - deploy test: image: python:3.5 stage: test services: - postgres:latest variables: POSTGRES_DB: ci POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB" script: - python -V - pip install -r requirements.txt - cp sikweb/settings-sample.py sikweb/default_settings.py - cp sikweb/.ci-settings.py sikweb/settings.py - python manage.py migrate --noinput - python manage.py createdefaultadmin - python manage.py test pycodestyle: image: python:3.5 stage: lint script: - pip install pycodestyle - pycodestyle --config=setup.cfg --count . eslint: image: node:alpine stage: lint before_script: - npm install script: - npm run eslint remark: image: node:alpine stage: lint before_script: - npm install script: - npm run remark # TODO: remove publish_dev: stage: publish image: docker:stable services: - docker:stable-dind only: - develop script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build . -t "$IMAGE_NAME_DEV" - docker push "$IMAGE_NAME_DEV" publish: stage: publish image: docker:stable services: - docker:stable-dind only: - master script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build . -f Dockerfile.prod -t "$IMAGE_NAME" - docker push "$IMAGE_NAME" deploy_dev: stage: deploy image: alpine:latest environment: name: dev url: http://web.sik.party:8000 only: - develop before_script: - pwd - apk add --update openssh - ssh -V - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config' script: - scp docker-compose.yml $DEV_SSH_USER@$DEV_SSH_HOST:~/deployment/docker-compose.yml - scp .deploy_dev.sh $DEV_SSH_USER@$DEV_SSH_HOST:~/deployment/deploy_dev.sh - ssh $DEV_SSH_USER@$DEV_SSH_HOST "docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY" - ssh $DEV_SSH_USER@$DEV_SSH_HOST "bash ~/deployment/deploy_dev.sh \"$IMAGE_NAME_DEV\"" # deploy_production: # stage: deploy # image: alpine:latest # environment: # name: production # url: https://sika.sahkoinsinoorikilta.fi # when: manual # only: # - master # before_script: # - pwd # - apk add --update openssh # - ssh -V # - mkdir -p ~/.ssh # - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa # - chmod 600 ~/.ssh/id_rsa # - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config # script: # - ssh $PROD_SSH_USER@$PROD_SSH_HOST "zsh ~/deploy.sh" deploy_production: stage: deploy image: docker:stable only: - master environment: name: production url: sika.sik.party 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"