.gitlab-ci.yml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. image: docker:23.0.5
  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:23.0.5-dind
  13. stages:
  14. - build
  15. - test
  16. - release
  17. before_script:
  18. - docker info
  19. - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  20. pytest:
  21. image: python:3.11
  22. stage: test
  23. before_script:
  24. - python -V
  25. script:
  26. - pip install -r requirements.txt
  27. - pytest
  28. rules:
  29. - if: $CI_COMMIT_TAG
  30. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  31. when: manual
  32. allow_failure: true
  33. build-upload:
  34. image: python:3.11
  35. stage: release
  36. before_script:
  37. - python -V
  38. - echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
  39. script:
  40. - pip install build twine flit
  41. - FLIT_INDEX_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi flit build
  42. - 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/*
  43. rules:
  44. - if: $CI_COMMIT_TAG
  45. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  46. when: manual
  47. allow_failure: true
  48. .build-upload-pypi:
  49. image: python:3.11
  50. stage: release
  51. before_script:
  52. - python -V
  53. - echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
  54. script:
  55. - pip install build twine flit
  56. - flit build
  57. - python -m twine upload dist/*
  58. rules:
  59. - if: $CI_COMMIT_TAG
  60. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  61. when: manual
  62. allow_failure: true
  63. build-docker:
  64. stage: release
  65. script:
  66. - docker pull $DOCKER_BRANCH || true
  67. - docker build --cache-from $DOCKER_BRANCH -f ./Dockerfile --tag $DOCKER_BRANCH .
  68. - docker push $DOCKER_BRANCH
  69. rules:
  70. - if: $CI_COMMIT_TAG || $CI_COMMIT_BRANCH == "main"
  71. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  72. when: manual
  73. allow_failure: true
  74. build-tagged-docker:
  75. stage: release
  76. script:
  77. - docker pull $DOCKER_BRANCH || true
  78. - docker tag $DOCKER_BRANCH $DOCKER_LATEST
  79. - docker push $DOCKER_LATEST
  80. - docker tag $DOCKER_BRANCH $DOCKER_TAG
  81. - docker push $DOCKER_TAG
  82. rules:
  83. - if: $CI_COMMIT_TAG
  84. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  85. when: manual
  86. allow_failure: true