stages: - build - lint - deploy variables: CONTAINERS_NAME: sst_postamates IMAGE_NAME: $CI_REGISTRY_IMAGE default: tags: - deploy-remote .use_cached_requirements: &use_cached_requirements variables: PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip" cache: key: $CI_COMMIT_REF_SLUG paths: - .cache/pip policy: pull-push build-job: stage: build before_script: - sudo docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY - ls script: - sudo docker pull $IMAGE_NAME:latest || true - sudo docker build --cache-from $IMAGE_NAME:latest --tag $IMAGE_NAME:$CI_COMMIT_SHORT_SHA --tag $IMAGE_NAME:latest . - sudo docker push $IMAGE_NAME:$CI_COMMIT_SHORT_SHA - sudo docker push $IMAGE_NAME:latest rules: - if: $CI_COMMIT_BRANCH == 'sst_main' .deploy: &deploy-common stage: deploy before_script: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )' - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh - chmod 700 ~/.ssh - ssh-keyscan $REMOTE_HOST >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - ssh $REMOTE_USER docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY script: - cd $CI_PROJECT_DIR - ssh $REMOTE_USER docker pull $IMAGE_NAME:$CI_COMMIT_SHORT_SHA - DOCKER_HOST="ssh://$REMOTE_USER" docker-compose -f $COMPOSE up -d - DOCKER_HOST="ssh://$REMOTE_USER" docker restart sst_postamates_martin deploy-test-job: <<: *deploy-common variables: REMOTE_HOST: $REMOTE_HOST_TEST REMOTE_USER: $REMOTE_USER_TEST COMPOSE: docker-compose.test.yml rules: - if: $CI_COMMIT_BRANCH == 'sst_main' pylint: <<: *use_cached_requirements stage: lint before_script: - pip install flake8-codeclimate script: - set -x - FLIST=$(git --no-pager diff --diff-filter=d --name-only $(git merge-base --fork-point origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME) $CI_COMMIT_SHA | egrep ".py$" | grep -v ".docker/"|| true) - > if [ ! -z "$FLIST" ]; then mkdir -p build/reports; flake8 --format junit-xml $FLIST > build/reports/flake8-junit.xml || flake8 $FLIST; else echo "No files to lint" true; fi only: refs: - merge_requests artifacts: reports: junit: ./build/reports/flake8-junit.xml expire_in: 7 days allow_failure: false