75 lines
3.9 KiB
YAML
75 lines
3.9 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]"
|
|
- $ROOT_DIR/conventional_commits/scripts/commit.py --token "$MR_ACCESS_TOKEN" --project $PROJECT_ID --branch $CI_COMMIT_BRANCH --target-branch
|
|
- target_branch=$($ROOT_DIR/conventional_commits/scripts/commit.py --token "$MR_ACCESS_TOKEN" --project $PROJECT_ID --branch $CI_COMMIT_BRANCH --target-branch)
|
|
|
|
- echo "[DEBUG] Target Branch[$target_branch]"
|
|
- git clone --depth 150 -b $target_branch $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
|
|
- if [ -d "gitlab-ci" ]; then ls -la gitlab-ci; fi
|
|
- first_sha1=$(git log $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: '$CI_COMMIT_BRANCH == "master"'
|
|
when: never
|
|
- if: '$CI_COMMIT_BRANCH'
|
|
when: always
|
|
- when: never
|
|
|
|
|
|
MR Title:
|
|
extends:
|
|
- .conventional_commit
|
|
script:
|
|
- cz_exit=0 && cz check --message "$($ROOT_DIR/conventional_commits/scripts/commit.py --token "$MR_ACCESS_TOKEN" --project $PROJECT_ID --title --branch $CI_COMMIT_BRANCH)" > "$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"
|