83 lines
3.8 KiB
YAML
83 lines
3.8 KiB
YAML
|
|
.conventional_commit:
|
|
variables:
|
|
DEFAULT_ROOT_DIR: './gitlab-ci'
|
|
image: python:3.6-slim
|
|
stage: validation
|
|
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$MR_ACCESS_TOKEN" == "0" ]; then MR_ACCESS_TOKEN=$CI_JOB_TOKEN; fi
|
|
- echo "[DEBUG] MR_ACCESS_TOKEN[$MR_ACCESS_TOKEN]"
|
|
- if [ "0$JOB_ROOT_DIR" == "0" ]; then ROOT_DIR=$DEFAULT_ROOT_DIR; else ROOT_DIR=$JOB_ROOT_DIR ; fi
|
|
- echo "[DEBUG] ROOT_DIR[$ROOT_DIR]"
|
|
- if [ "0$MY_PROJECT_ID" == "0" ]; then PROJECT_ID=$CI_PROJECT_ID; else PROJECT_ID=$MY_PROJECT_ID ; fi
|
|
- echo "[DEBUG] PROJECT_ID[$PROJECT_ID]"
|
|
- export PYTHON_VERSION=`python -c 'import sys; version=sys.version_info[:3]; print("{0}.{1}.{2}".format(*version))'`
|
|
- apt update
|
|
- apt install --no-install-recommends -y git
|
|
- python3 -m venv env
|
|
- . env/bin/activate
|
|
- pip install --upgrade pip
|
|
- pip install -r $ROOT_DIR/conventional_commits/requirements.txt
|
|
- echo "[DEBUG] CI_PROJECT_ID[$CI_PROJECT_ID]"
|
|
- echo "[DEBUG] CI_COMMIT_BRANCH[$CI_COMMIT_BRANCH]"
|
|
- git fetch --all
|
|
- git checkout --track origin/$CI_COMMIT_BRANCH
|
|
- git show-branch -a
|
|
- target_branch=$(git show-branch -a | awk 'BEGIN { FS="\n\s+*" } { print $1 }' | awk '{print $2}' | grep '\[' | sed 's/.*\[origin\/\(.*\)\].*/\1/' | grep -v '\[' | grep -v $(git rev-parse --abbrev-ref HEAD) | grep -vi 'HEAD' | awk 'BEGIN{ RS = "" ; FS = "\n" }{print $1}')
|
|
- echo "[DEBUG] Target Branch[$target_branch]"
|
|
- if [ -d "gitlab-ci" ]; then ls -la gitlab-ci; fi
|
|
- first_sha1=$(git log origin/$target_branch..$CI_COMMIT_BRANCH --format=format:%H | tail -1)
|
|
- echo "[DEBUG] First Commit SHA[$first_sha1]"
|
|
- echo "[DEBUG] artifacts directory [$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME]"
|
|
after_script:
|
|
- ls -lR "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE"
|
|
- cd ..
|
|
- rm -Rf check
|
|
artifacts:
|
|
expire_in: 3 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: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
when: never
|
|
- if: '$CI_COMMIT_TAG'
|
|
when: never
|
|
- if: "$CI_COMMIT_AUTHOR =='nfc_bot <helpdesk@nofusscomputing.com>'"
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH == "master"'
|
|
exists:
|
|
- .cz.yaml
|
|
when: always
|
|
- if: '$CI_COMMIT_BRANCH'
|
|
exists:
|
|
- .cz.yaml
|
|
when: always
|
|
- when: never
|
|
|
|
|
|
MR Title:
|
|
extends:
|
|
- .conventional_commit
|
|
script:
|
|
- MR_TITLE=$($ROOT_DIR/conventional_commits/scripts/commit.py --token "$MR_ACCESS_TOKEN" --project $PROJECT_ID --title --branch $CI_COMMIT_BRANCH)
|
|
- echo "[DEBUG] MR_TITLE[$MR_TITLE]"
|
|
- cz_exit=0 && cz check --message "$MR_TITLE" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/cz_output.log" 2>&1 || cz_exit=$?
|
|
- . $ROOT_DIR/conventional_commits/scripts/cz_junit.sh > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$CI_JOB_NAME-cz.junit.xml"
|
|
|
|
|
|
Commit Messages:
|
|
extends:
|
|
- .conventional_commit
|
|
script:
|
|
- if [ "$(git log $first_sha1..HEAD --format=format:%H | wc -l)" -eq 0 ]; then echo "[DEBUG] Single Commit"; cz_exit=0 && cz check -m "$(git log HEAD --format=format:%B -1)" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/cz_output.log" 2>&1 || cz_exit=$?; fi
|
|
- if [ "$(git log $first_sha1..HEAD --format=format:%H | wc -l)" -gt 0 ]; then echo "[DEBUG] Commit range"; cz_exit=0 && cz check --rev-range $first_sha1..HEAD > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/cz_output.log" 2>&1 || cz_exit=$?; fi
|
|
- . $ROOT_DIR/conventional_commits/scripts/cz_junit.sh > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$CI_JOB_NAME-cz.junit.xml"
|