variables: GITLAB_CI_IMAGE_ALPINE: 'alpine:3.9' GITLAB_CI_IMAGE_DOCKER: 'docker:18.09' GITLAB_CI_IMAGE_NODE: 'node:12.13.1' GITLAB_CI_IMAGE_PYTHON: 'python:3' GITLAB_CI_IMAGE_OPENAPI_GENERATOR_CLI: 'openapitools/openapi-generator-cli' GITLAB_CI_PYPI_DOCKER_COMPOSE: 'docker-compose~=1.23.0' GITLAB_CI_PYPI_TOX: 'tox~=3.8.0' GITLAB_CI_PYPI_TWINE: 'twine~=1.13.0' stages: - schema - api - static - build - test - deploy - trigger schema: stage: schema image: ${GITLAB_CI_IMAGE_PYTHON} script: - pip install --no-cache-dir --no-deps -r "requirements.txt" --force-reinstall . - ./manage.py generateschema > satnogs-db-api-client/api-schema.yml artifacts: expire_in: 1 week when: always paths: - satnogs-db-api-client api: stage: api image: ${GITLAB_CI_IMAGE_OPENAPI_GENERATOR_CLI} script: - >- docker-entrypoint.sh generate -i satnogs-db-api-client/api-schema.yml -g python -o satnogs-db-api-client -c satnogs-db-api-client/openapi-generator-config.json artifacts: expire_in: 1 week when: always paths: - satnogs-db-api-client static_js_css: stage: static image: ${GITLAB_CI_IMAGE_NODE} script: - npm ci - node_modules/.bin/gulp artifacts: expire_in: 1 week when: always paths: - db/static/lib static: stage: static image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TOX" script: - tox -e "flake8,isort,yapf,pylint" docs: stage: build image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TOX" script: - rm -rf docs/_build - tox -e "docs" artifacts: expire_in: 1 week when: always paths: - docs/_build/html build: stage: build image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TOX" script: - rm -rf dist - tox -e build - cd satnogs-db-api-client - rm -rf dist - python setup.py sdist bdist_wheel artifacts: expire_in: 1 week when: always paths: - dist - satnogs-db-api-client/dist test: stage: test image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TOX" script: - tox -e deps,pytest docker: stage: deploy image: ${GITLAB_CI_IMAGE_DOCKER} services: - ${GITLAB_CI_IMAGE_DOCKER}-dind before_script: - apk --update add py-pip - pip install "$GITLAB_CI_PYPI_DOCKER_COMPOSE" script: - | [ -z "$SATNOGS_DECODERS_VERSION" ] || sed -i 's/^\(satnogsdecoders\).*/\1=='"$SATNOGS_DECODERS_VERSION"'/' requirements.txt - | [ -z "$CI_REGISTRY_IMAGE" ] || { CACHE_IMAGE="$CI_REGISTRY_IMAGE/satnogs-db:$CI_COMMIT_REF_NAME" [ -z "$CI_COMMIT_TAG" ] || CACHE_IMAGE="$CI_REGISTRY_IMAGE/satnogs-db:latest" export CACHE_IMAGE } - docker-compose -f docker-compose.yml -f docker-compose.cache.yml pull cache_image || true - docker-compose -f docker-compose.yml -f docker-compose.cache.yml build --pull - | [ -z "$CI_REGISTRY_IMAGE" ] || { docker login -u $CI_REGISTRY_USER -p $CI_JOB_TOKEN $CI_REGISTRY docker tag satnogs-db:latest $CI_REGISTRY_IMAGE/satnogs-db:$CI_COMMIT_REF_NAME docker push $CI_REGISTRY_IMAGE/satnogs-db:$CI_COMMIT_REF_NAME [ -z "$CI_COMMIT_TAG" ] || { docker tag satnogs-db:latest $CI_REGISTRY_IMAGE/satnogs-db:latest docker push $CI_REGISTRY_IMAGE/satnogs-db:latest } } [ -z "$DOCKERHUB_PASSWORD" ] || { docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASSWORD docker tag satnogs-db:latest librespace/satnogs-db:$CI_COMMIT_REF_NAME docker push librespace/satnogs-db:$CI_COMMIT_REF_NAME [ -z "$CI_COMMIT_TAG" ] || { docker tag satnogs-db:latest librespace/satnogs-db:latest docker push librespace/satnogs-db:latest } } only: refs: - master - tags deploy: stage: deploy image: ${GITLAB_CI_IMAGE_PYTHON} before_script: - pip install "$GITLAB_CI_PYPI_TWINE" script: - rm -rf dist - python setup.py sdist bdist_wheel - twine upload -u "$PYPI_USERNAME" -p "$PYPI_PASSWORD" dist/* only: refs: - tags variables: - $PYPI_USERNAME - $PYPI_PASSWORD except: - triggers trigger_master: stage: trigger image: ${GITLAB_CI_IMAGE_ALPINE} before_script: - apk add --no-cache curl script: - for trigger in $PIPELINE_TRIGGERS_MASTER; do curl -X POST "$trigger"; done only: refs: - master variables: - $PIPELINE_TRIGGERS_MASTER trigger_latest: stage: trigger image: ${GITLAB_CI_IMAGE_ALPINE} before_script: - apk add --no-cache curl script: - for trigger in $PIPELINE_TRIGGERS_LATEST; do curl -X POST "$trigger"; done only: refs: - tags variables: - $PIPELINE_TRIGGERS_LATEST pages: stage: deploy image: ${GITLAB_CI_IMAGE_ALPINE} script: - mv docs/_build/html/ public/ artifacts: paths: - public only: - tags