diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..d93834d --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,69 @@ +--- +include: + - local: .gitlab-ci/versioning/gitversion.yml + - local: .gitlab-ci/git/create_tag.yml + +stages: + - build + - release + +gitversion: + extends: .versioning:gitversion + stage: .pre + tags: + - gitlab-org-docker + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch + +build: + stage: build + image: python:3.9.21 + tags: + - gitlab-org-docker + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch + needs: + - job: gitversion + artifacts: true + script: + - sed -i "s/^__version__ = .*/__version__ = \"${GitVersion_MajorMinorPatch}\"/" src/PyPiUpdater/__init__.py + - cat src/PyPiUpdater/__init__.py + - python3 -m pip install build + - python3 -m build + artifacts: + paths: + - dist/* + expire_in: 1 day + +publish: + stage: release + image: python:3.9.21 + tags: + - gitlab-org-docker + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch + variables: + TWINE_USERNAME: "__token__" + TWINE_PASSWORD: $TWINE_API + needs: + - job: build + artifacts: true + script: + - python3 -m pip install twine + - python3 -m twine upload dist/* + +create_tag: + extends: .git:create_tag + stage: release + tags: + - gitlab-org-docker + variables: + VERSION: $GitVersion_SemVer + TOKEN: $GITLAB_TOKEN + needs: + - job: gitversion + artifacts: true + rules: + - if: $CI_COMMIT_TAG + when: never # Do not run this job when a tag is created manually + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # Run this job when commits are pushed or merged to the default branch