.gitlab-ci.yml 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. image: docker:20.10.22
  2. variables:
  3. DOCKER_DRIVER: overlay2
  4. DOCKER_TLS_CERTDIR: "/certs"
  5. DOCKER_HOST: tcp://docker:2376
  6. # Where to publish this build's tagged working container.
  7. DOCKER_SHA: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
  8. DOCKER_BRANCH: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME
  9. DOCKER_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
  10. DOCKER_LATEST: $CI_REGISTRY_IMAGE:latest
  11. services:
  12. - docker:20.10.22-dind
  13. stages:
  14. - build
  15. - test
  16. - release
  17. before_script:
  18. - sudo apt install python3-dev python3-pip
  19. - python -V
  20. - echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
  21. - apt-get update && apt-get install -y git
  22. - docker info
  23. # Because we use a private registry (registry.rys.one), we first need to provide credentials.
  24. # This gives us access to pull and push to the registry.
  25. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  26. build-upload:
  27. stage: build
  28. script:
  29. - pip install build twine flit
  30. - FLIT_INDEX_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi flit build
  31. - TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
  32. only:
  33. - tags
  34. .build-upload-pypi:
  35. stage: build
  36. script:
  37. - pip install build twine flit
  38. - flit build
  39. - python -m twine upload dist/*
  40. only:
  41. - tags
  42. build_docker:
  43. stage: build
  44. script:
  45. - docker pull $DOCKER_BRANCH || true
  46. - docker build --cache-from $DOCKER_BRANCH -f ./Dockerfile --tag $DOCKER_BRANCH .
  47. - docker push $DOCKER_BRANCH
  48. only:
  49. refs:
  50. - master
  51. - tags
  52. build_tagged_docker:
  53. stage: build
  54. script:
  55. - docker pull $DOCKER_BRANCH || true
  56. - docker tag $DOCKER_BRANCH $DOCKER_LATEST
  57. - docker push $DOCKER_LATEST
  58. - docker tag $DOCKER_BRANCH $DOCKER_TAG
  59. - docker push $DOCKER_TAG
  60. only:
  61. - tags