.gitlab-ci.yml 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. build-upload:
  21. image: python:3.11
  22. stage: build
  23. before_script:
  24. - python -V
  25. - echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
  26. script:
  27. - pip install build twine flit
  28. - FLIT_INDEX_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi flit build
  29. - 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/*
  30. rules:
  31. - if: $CI_COMMIT_TAG
  32. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  33. when: manual
  34. allow_failure: true
  35. build-upload-pypi:
  36. image: python:3.11
  37. stage: build
  38. before_script:
  39. - python -V
  40. - echo "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi"
  41. script:
  42. - pip install build twine flit
  43. - flit build
  44. - python -m twine upload dist/*
  45. rules:
  46. - if: $CI_COMMIT_TAG
  47. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  48. when: manual
  49. allow_failure: true
  50. build-docker:
  51. stage: build
  52. script:
  53. - docker pull $DOCKER_BRANCH || true
  54. - docker build --cache-from $DOCKER_BRANCH -f ./Dockerfile --tag $DOCKER_BRANCH .
  55. - docker push $DOCKER_BRANCH
  56. rules:
  57. - if: $CI_COMMIT_TAG || $CI_COMMIT_BRANCH == "main"
  58. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  59. when: manual
  60. allow_failure: true
  61. build-tagged-docker:
  62. stage: build
  63. script:
  64. - docker pull $DOCKER_BRANCH || true
  65. - docker tag $DOCKER_BRANCH $DOCKER_LATEST
  66. - docker push $DOCKER_LATEST
  67. - docker tag $DOCKER_BRANCH $DOCKER_TAG
  68. - docker push $DOCKER_TAG
  69. rules:
  70. - if: $CI_COMMIT_TAG
  71. - if: $CI_PIPELINE_SOURCE == "push" || $CI_COMMIT_BRANCH == "dev"
  72. when: manual
  73. allow_failure: true