121 lines
5.4 KiB
YAML
121 lines
5.4 KiB
YAML
.gitlab_release:
|
|
stage: release
|
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
before_script:
|
|
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=gitlab-ci; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
|
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME"
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests"
|
|
- apk update
|
|
- apk add git
|
|
- apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
|
|
- python -m ensurepip && ln -sf pip3 /usr/bin/pip
|
|
- pip install --upgrade pip
|
|
- pip install -r $ROOT_DIR/gitlab_release/requirements.txt
|
|
- pip install $ROOT_DIR/gitlab_release/python-module/cz_nfc/.
|
|
- 'CLONE_URL="https://gitlab-ci-token:$GIT_COMMIT_TOKEN@gitlab.com/$CI_PROJECT_PATH.git"'
|
|
- echo "[DEBUG] CLONE_URL[$CLONE_URL]"
|
|
- git clone -b development $CLONE_URL repo
|
|
- cd repo
|
|
- git branch
|
|
- git config --global user.email "helpdesk@nofusscomputing.com"
|
|
- git config --global user.name "nfc_bot"
|
|
- git push --set-upstream origin development
|
|
- RELEASE_VERSION_CURRENT=$(cz -n cz_nfc version --project)
|
|
script:
|
|
- "$MY_COMMAND"
|
|
- if [ "$CI_COMMIT_BRANCH" == "development" ] ; then RELEASE_CHANGELOG=$(cz -n cz_nfc bump --changelog --changelog-to-stdout --prerelease rc); else RELEASE_CHANGELOG=$(cz -n cz_nfc bump --changelog --changelog-to-stdout); fi
|
|
- RELEASE_VERSION_NEW=$(cz -n cz_nfc version --project)
|
|
- RELEASE_TAG=$RELEASE_VERSION_NEW
|
|
- echo "[DEBUG] RELEASE_VERSION_CURRENT[$RELEASE_VERSION_CURRENT]"
|
|
- echo "[DEBUG] RELEASE_CHANGELOG[$RELEASE_CHANGELOG]"
|
|
- echo "[DEBUG] RELEASE_VERSION_NEW[$RELEASE_VERSION_NEW]"
|
|
- echo "[DEBUG] RELEASE_TAG[$RELEASE_TAG]"
|
|
- RELEASE_TAG_SHA1=$(git log -n1 --format=format:"%H")
|
|
- echo "[DEBUG] RELEASE_TAG_SHA1[$RELEASE_TAG_SHA1]"
|
|
- if [ "0$RELEASE_VERSION_CURRENT" == "0$RELEASE_VERSION_NEW" ]; then echo "[DEBUG] No tag to delete, version was not bumped"; else git tag -d $RELEASE_TAG; fi
|
|
|
|
- if [ "0$RELEASE_VERSION_CURRENT" == "0$RELEASE_VERSION_NEW" ]; then echo "[DEBUG] No push will be conducted, version was not bumped"; else git push; fi
|
|
- if [ "0$RELEASE_VERSION_CURRENT" == "0$RELEASE_VERSION_NEW" ]; then echo "[DEBUG] No release will be created, version was not bumped"; else release-cli create --name "Release $RELEASE_TAG" --tag-name "$RELEASE_TAG" --ref "$RELEASE_TAG_SHA1" --description "$RELEASE_CHANGELOG"; fi
|
|
- if [ "$CI_COMMIT_BRANCH" == "master" ] ; then git checkout master; fi
|
|
- if [ "$CI_COMMIT_BRANCH" == "master" ] ; then git push --set-upstream origin master; fi
|
|
- if [ "$CI_COMMIT_BRANCH" == "master" ] ; then git merge --no-ff development; fi
|
|
- if [ "$CI_COMMIT_BRANCH" == "master" ] ; then git push origin master; fi
|
|
after_script:
|
|
- rm -Rf repo
|
|
rules:
|
|
- if: '$JOB_STOP_GITLAB_RELEASE'
|
|
when: never
|
|
|
|
- if: "$CI_COMMIT_AUTHOR =='nfc_bot <helpdesk@nofusscomputing.com>'"
|
|
when: never
|
|
|
|
- if: # condition_master_branch_push
|
|
$CI_COMMIT_BRANCH == "master" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
allow_failure: false
|
|
when: on_success
|
|
|
|
- if: # condition_dev_branch_push
|
|
$CI_COMMIT_BRANCH == "development" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
when: manual
|
|
allow_failure: true
|
|
|
|
# for testing
|
|
# - if: '$CI_COMMIT_BRANCH != "master"'
|
|
# when: always
|
|
# allow_failure: true
|
|
- when: never
|
|
|
|
|
|
commit footer refs:
|
|
stage: validation
|
|
image: python:3.6-slim
|
|
variables:
|
|
DEFAULT_ROOT_DIR: './gitlab-ci'
|
|
before_script:
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME"
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests"
|
|
- if [ "0$JOB_ROOT_DIR" == "0" ]; then export ROOT_DIR=$DEFAULT_ROOT_DIR; else export ROOT_DIR=$JOB_ROOT_DIR ; fi
|
|
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
|
- apt update
|
|
- apt install --no-install-recommends -y git
|
|
- pip install -e $ROOT_DIR/gitlab_release/python-module/commit_footer/.
|
|
- git clone --depth 150 -b development $CI_REPOSITORY_URL check
|
|
- cd check
|
|
- git remote rm origin
|
|
- git remote add origin $CI_REPOSITORY_URL
|
|
- git fetch --all
|
|
- git checkout --track origin/$CI_COMMIT_BRANCH
|
|
- git submodule update --init
|
|
script:
|
|
- commit_footer > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$CI_JOB_NAME.junit.xml"
|
|
artifacts:
|
|
expire_in: 1 days
|
|
when: always
|
|
paths:
|
|
- "$CI_PROJECT_DIR/artifacts/*"
|
|
reports:
|
|
junit:
|
|
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/*.junit.xml"
|
|
rules:
|
|
- if: '$JOB_STOP_CONVENTIONAL_COMMITS'
|
|
when: never
|
|
|
|
- if: $CHANGELOG_FOOTER_REFERENCES == "False"
|
|
when: never
|
|
|
|
# - if: '$CI_COMMIT_BRANCH == "development" || $CI_COMMIT_BRANCH == "master"'
|
|
# when: never
|
|
|
|
- if: # condition_any_branch_push
|
|
$CI_COMMIT_BRANCH != null &&
|
|
$CI_COMMIT_TAG == null &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- .cz.yaml
|
|
when: always
|
|
|
|
- when: never
|