feat(ci): implement rule changes

!41 #32
This commit is contained in:
2023-06-02 10:51:03 +09:30
parent e548474da5
commit d8c1939232
11 changed files with 308 additions and 148 deletions

View File

@ -114,11 +114,12 @@ PyLint:
gilab-ci.yml Lint (python 3.11):
variables:
YAML_LINT_PATH: ".gitlab-ci* ./**/*gitlab-ci*"
YAML_LINT_EXTRA_ARGS: "{ extends: lint/.yamllint.yaml, ignore: [website-template/*] }"
# variables:
# YAML_LINT_PATH: ".gitlab-ci* ./**/*gitlab-ci*"
# YAML_LINT_EXTRA_ARGS: "{ extends: lint/.yamllint.yaml, ignore: [website-template/*] }"
extends:
- .yaml_lint_defaults
# - .yaml_lint_defaults
- .Gitlab_CI.Lint.YAML
image: python:3.11-slim

View File

@ -13,6 +13,13 @@
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
.condition_master_or_dev_push: &condition_master_or_dev_push # condition_master_or_dev_push
(
$CI_COMMIT_BRANCH == "master" ||
$CI_COMMIT_BRANCH == "development"
)&&
$CI_PIPELINE_SOURCE == "push"
.condition_git_tag: &condition_git_tag # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null

View File

@ -46,22 +46,28 @@
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" &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
exists:
- .cz.yaml
when: always
- if: '$CI_COMMIT_BRANCH &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
# - 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: # condition_any_branch_push
$CI_COMMIT_BRANCH != null &&
$CI_COMMIT_TAG == null &&
$CI_PIPELINE_SOURCE == "push"
exists:
- .cz.yaml
when: always
# - if: '$CI_COMMIT_BRANCH &&
# ( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
# exists:
# - .cz.yaml
# when: always
- when: never

View File

@ -16,6 +16,7 @@ about: https://gitlab.com/nofusscomputing/projects/gitlab-ci
- other sub folders are for `` which **DO NOT** automagically create jobs, but are pure definitions only.
- notate how each of the stages run and under what circumstance. *i.e. gitlab-ci.yml rules.exist/rules.changes*
## CI Stages

View File

@ -17,12 +17,21 @@
rules:
- if: '$JOB_STOP_GIT_PUSH_MIRROR'
when: never
- if: '$CI_COMMIT_TAG && $GIT_SYNC_URL != null'
when: always
- if: '$CI_COMMIT_BRANCH == "master" && $GIT_SYNC_URL != null &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
- if: '$CI_COMMIT_BRANCH == "development" && $GIT_SYNC_URL != null &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
when: always
- when: never
- if: $GIT_SYNC_URL == null
when: never
- if: # condition_git_tag
$CI_COMMIT_TAG != null &&
$CI_COMMIT_BRANCH == null
when: always
- if: # condition_master_or_dev_push
(
$CI_COMMIT_BRANCH == "master" ||
$CI_COMMIT_BRANCH == "development"
) &&
$CI_PIPELINE_SOURCE == "push"
when: always
- when: never

View File

@ -100,12 +100,18 @@ commit footer refs:
rules:
- if: '$JOB_STOP_CONVENTIONAL_COMMITS'
when: never
- if: '$CI_COMMIT_BRANCH == "development" || $CI_COMMIT_BRANCH == "master"'
- if: $CHANGELOG_FOOTER_REFERENCES == "False"
when: never
- if: '$CI_COMMIT_BRANCH && $CHANGELOG_FOOTER_REFERENCES != "False" &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
# - 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
- when: never

View File

@ -43,17 +43,31 @@
MD_LINT_CONFIG_PATH: "$CI_PROJECT_DIR/website-template"
extends: .Lint_Markdown
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: '$CI_COMMIT_TAG'
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "docs/index.md"
- "pages/index.md"
- docs/**/*.md
- pages/**/*.md
changes:
paths:
- docs/**/*.md
- pages/**/*.md
compare_to: 'master'
when: always
- if: '$CI_COMMIT_BRANCH &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "docs/index.md"
- "pages/index.md"
- docs/**/*.md
- pages/**/*.md
changes:
paths:
- docs/**/*.md
- pages/**/*.md
compare_to: 'development'
when: always
- when: never
- when: never

View File

@ -1,49 +1,104 @@
.yaml_lint_defaults:
variables:
YAML_LINT_PATH: "."
YAML_LINT_EXTRA_ARGS: "{ extends: $ROOT_DIR/lint/.yamllint.yaml, ignore: [gitlab-ci/*] }"
stage: validation
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"
- 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/lint/requirements.txt
- mkdir $PYTHON_VERSION
script:
- echo "[DEBUG] YAML_LINT_PATH[$YAML_LINT_PATH]"
- echo "[DEBUG] YAML_LINT_CONFIG[$YAML_LINT_CONFIG]"
- yamllint $YAML_LINT_PATH -f parsable -d "$(echo $YAML_LINT_EXTRA_ARGS)" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-yaml-lint.log" 1>&1 || YAML_LINT=$?
- cat "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-yaml-lint.log" | ansible-lint-to-junit-xml > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$PYTHON_VERSION-yaml-lint.junit.xml"
- if [ $YAML_LINT > 0 ]; then echo "YAML lint failed with $YAML_LINT"; exit $YAML_LINT; fi
after_script:
- echo deactivate
artifacts:
expire_in: 3 days
when: always
variables:
YAML_LINT_PATH: "."
YAML_LINT_EXTRA_ARGS: "{ extends: $ROOT_DIR/lint/.yamllint.yaml, ignore: [gitlab-ci/*, website-template/*] }"
stage: validation
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"
- 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/lint/requirements.txt
- mkdir $PYTHON_VERSION
script:
- echo "[DEBUG] YAML_LINT_PATH[$YAML_LINT_PATH]"
- echo "[DEBUG] YAML_LINT_CONFIG[$YAML_LINT_CONFIG]"
- yamllint $YAML_LINT_PATH -f parsable -d "$(echo $YAML_LINT_EXTRA_ARGS)" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-yaml-lint.log" 1>&1 || YAML_LINT=$?
- cat "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/$PYTHON_VERSION-yaml-lint.log" | ansible-lint-to-junit-xml > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/$PYTHON_VERSION-yaml-lint.junit.xml"
- if [ $YAML_LINT > 0 ]; then echo "YAML lint failed with $YAML_LINT"; exit $YAML_LINT; fi
after_script:
- echo deactivate
artifacts:
expire_in: 3 days
when: always
paths:
- "artifacts/*"
reports:
junit:
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/*.junit.xml"
rules:
- if: '$JOB_STOP_YAML_LINT'
when: never
# - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
# when: never
# - if: '$CI_COMMIT_TAG'
# when: always
- if: '$CI_COMMIT_BRANCH == "master" &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
when: always
- if: '$CI_COMMIT_BRANCH &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
when: always
- when: never
.Gitlab_CI.Lint.YAML:
variables:
YAML_LINT_PATH: ".gitlab-ci* ./**/*gitlab-ci*"
YAML_LINT_EXTRA_ARGS: "{ extends: lint/.yamllint.yaml, ignore: [gitlab-ci/*, website-template/*] }"
extends:
- .yaml_lint_defaults
rules:
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "[!gitlab-ci/|!website-template|**|**/]*gitlab-ci*"
# - ".gitlab-ci*"
# - "**/*gitlab-ci*"
when: always
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "[!gitlab-ci/|!website-template|**|**/]*gitlab-ci*"
# - ".gitlab-ci*"
# - "**/*gitlab-ci*"
changes:
paths:
- "artifacts/*"
reports:
junit:
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/*.junit.xml"
rules:
- if: '$JOB_STOP_YAML_LINT'
when: never
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: '$CI_COMMIT_TAG'
when: always
- if: '$CI_COMMIT_BRANCH == "master" &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
when: always
- if: '$CI_COMMIT_BRANCH &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
when: always
- when: never
- ".gitlab-ci*"
- "**/*gitlab-ci*"
compare_to: 'master'
when: always
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "[!gitlab-ci/|!website-template|**|**/]*gitlab-ci*"
# - ".gitlab-ci*"
# - "**/*gitlab-ci*"
changes:
paths:
- "[!gitlab-ci/|!website-template/|**|**/]*gitlab-ci*"
# - ".gitlab-ci*"
# - "**/*gitlab-ci*"
compare_to: 'development'
when: always
- when: never

View File

@ -48,15 +48,33 @@
rules:
- if: '$JOB_STOP_MKDOCS_BUILD'
when: never
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: $CI_COMMIT_TAG
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "docs/index.md"
- docs/**/*.md
- pages/**/*.md
changes:
paths:
- docs/**/*.md
- pages/**/*.md
compare_to: 'master'
when: always
- if: '$CI_COMMIT_BRANCH &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "docs/index.md"
- docs/**/*.md
- pages/**/*.md
changes:
paths:
- docs/**/*.md
- pages/**/*.md
compare_to: 'development'
when: always
- when: never
- when: never

View File

@ -5,49 +5,81 @@
}" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/badge_pylint.json"
.PyLint:
variables:
PYLINT_PATH: "/*/python-module/*/*.py"
PYLINT_RC_PATH: "/python/.pylintrc"
stage: validation
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"
- 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/python/requirements.txt
- mkdir $PYTHON_VERSION
script:
- PYLINT_PATH=$ROOT_DIR$PYLINT_PATH
- echo "[DEBUG] PYLINT_PATH[$PYLINT_PATH]"
- PYLINT_RC_PATH=$ROOT_DIR$PYLINT_RC_PATH
- echo "[DEBUG] PYLINT_RC_PATH[$PYLINT_RC_PATH]"
- python3 -m pylint --rcfile $PYLINT_RC_PATH --exit-zero --output-format=pylint_gitlab.GitlabCodeClimateReporter $PYLINT_PATH > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/gl-code-quality-report.json"
variables:
PYLINT_PATH: "/*/python-module/*/*.py"
PYLINT_RC_PATH: "/python/.pylintrc"
stage: validation
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"
- 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/python/requirements.txt
- mkdir $PYTHON_VERSION
script:
- PYLINT_PATH=$ROOT_DIR$PYLINT_PATH
- echo "[DEBUG] PYLINT_PATH[$PYLINT_PATH]"
- PYLINT_RC_PATH=$ROOT_DIR$PYLINT_RC_PATH
- echo "[DEBUG] PYLINT_RC_PATH[$PYLINT_RC_PATH]"
- python3 -m pylint --rcfile $PYLINT_RC_PATH --exit-zero --output-format=pylint_gitlab.GitlabCodeClimateReporter $PYLINT_PATH > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/gl-code-quality-report.json"
- python3 -m pylint --rcfile $PYLINT_RC_PATH --exit-zero --output-format=pylint_gitlab.GitlabPagesHtmlReporter $PYLINT_PATH > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/gl-code-quality-report.html"
- python3 -m pylint --rcfile $PYLINT_RC_PATH --exit-zero --output-format=pylint_gitlab.GitlabPagesHtmlReporter $PYLINT_PATH > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/gl-code-quality-report.html"
- PyPIScore=$(python3 -m pylint --rcfile $PYLINT_RC_PATH --exit-zero $PYLINT_PATH | sed -n 's/^Your code has been rated at \([-0-9./]*\).*/\1/p')
- PyPIScore=$(python3 -m pylint --rcfile $PYLINT_RC_PATH --exit-zero $PYLINT_PATH | sed -n 's/^Your code has been rated at \([-0-9./]*\).*/\1/p')
- *pylint_badge
- *pylint_badge
after_script:
- echo deactivate
artifacts:
expire_in: 1 days
when: always
paths:
- "artifacts/*"
reports:
codequality: "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/gl-code-quality-report.json"
rules:
# - if: '$CI_COMMIT_BRANCH &&
# ( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
# when: always
- if: # condition_master_branch_push
$CI_COMMIT_BRANCH == "master" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "**/*.py"
when: always
after_script:
- echo deactivate
artifacts:
expire_in: 1 days
when: always
- if: # condition_development_branch_push
$CI_COMMIT_BRANCH == "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "**/*.py"
changes:
paths:
- "artifacts/*"
reports:
codequality: "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests/gl-code-quality-report.json"
rules:
- if: '$CI_COMMIT_BRANCH &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
when: always
- when: never
- "**/*.py"
- "**/*.py"
compare_to: 'master'
when: always
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "**/*.py"
changes:
paths:
- "**/*.py"
- "**/*.py"
compare_to: 'development'
when: always
- when: never

View File

@ -16,7 +16,7 @@ Documentation.Build:
needs: [ 'Documentation.Lint' ]
pages:
Documentation.Pages.Deploy:
stage: deploy
variables:
GIT_STRATEGY: none
@ -32,21 +32,32 @@ pages:
rules:
- if: '$JOB_STOP_GITLAB_PAGES'
when: never
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
when: never
- if: $CI_COMMIT_TAG
when: never
- if: '$CI_COMMIT_BRANCH == "development" &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
- if: # condition_dev_branch_push
$CI_COMMIT_BRANCH == "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "mkdocs.yaml"
- "mkdocs.yml"
- docs/**/*.md
- pages/**/*.md
changes:
paths:
- docs/**/*.md
- pages/**/*.md
compare_to: 'master'
when: always
- if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master" &&
( $CI_PIPELINE_SOURCE == "push" || $CI_PIPELINE_SOURCE == "pipeline")'
- if: # condition_not_master_or_dev_push
$CI_COMMIT_BRANCH != "master" &&
$CI_COMMIT_BRANCH != "development" &&
$CI_PIPELINE_SOURCE == "push"
exists:
- "mkdocs.yaml"
- "mkdocs.yml"
when: manual
allow_failure: true
- when: never
- docs/**/*.md
- pages/**/*.md
changes:
paths:
- docs/**/*.md
- pages/**/*.md
compare_to: 'development'
when: always
- when: never