Loading README.md +18 −2 Original line number Diff line number Diff line Loading @@ -266,6 +266,23 @@ In addition to logs in the console, this job produces the following reports, kep | -------------- | ---------------------------------------------------------------------------- | ----------------- | | `$PYTHON_PROJECT_DIR/reports/py-sbom.cyclonedx.json` | [CycloneDX JSON](https://cyclonedx.org/docs/latest/json/) | [Security & Compliance integration](https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportscyclonedx) | ### `py-black` job This job **disabled by default** and runs [black](https://black.readthedocs.io) on the repo. It is bound to the build stage. | Input / Variable | Description | Default value | | ---------------- | ----------------------------------------------------------------------- | ----------------- | | `black-enabled` / `PYTHON_BLACK_ENABLED` | Set to `true` to enable black job | _none_ (disabled) | ### `py-isort` job This job **disabled by default** and runs [isort](https://pycqa.github.io/isort/) on the repo. It is bound to the build stage. | Input / Variable | Description | Default value | | ---------------- | ----------------------------------------------------------------------- | ----------------- | | `isort-enabled` / `PYTHON_ISORT_ENABLED` | Set to `true` to enable isort job | _none_ (disabled) | ### SonarQube analysis If you're using the SonarQube template to analyse your Python code, here is a sample `sonar-project.properties` file: Loading Loading @@ -413,7 +430,6 @@ variables: PIP_EXTRA_INDEX_URL: "${CI_SERVER_PROTOCOL}://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}:${CI_SERVER_PORT}/api/v4/groups/<group-id>/-/packages/pypi/simple" ``` ## Variants The Python template can be used in conjunction with template variants to cover specific cases. Loading kicker.json +12 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,18 @@ "default": "$CI_JOB_TOKEN" } ] }, { "id": "black", "name": "black", "description": "Code formatting based on [black](https://black.readthedocs.io)", "enable_with": "PYTHON_BLACK_ENABLED" }, { "id": "isort", "name": "isort", "description": "Check imports order with [isort](https://pycqa.github.io/isort)", "enable_with": "PYTHON_ISORT_ENABLED" } ], "variants": [ Loading templates/gitlab-ci-python.yml +37 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,14 @@ spec: _defaults to [GitLab project's packages repository](https://docs.gitlab.com/ee/user/packages/pypi_repository/)_ default: ${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/packages/pypi black-enabled: description: Enable black type: boolean default: false isort-enabled: description: Enable isort type: boolean default: false --- # default workflow rules: Merge Request pipelines workflow: Loading Loading @@ -260,6 +268,9 @@ variables: PYTHON_SBOM_DISABLED: $[[ inputs.sbom-disabled ]] PYTHON_RELEASE_ENABLED: $[[ inputs.release-enabled ]] PYTHON_BLACK_ENABLED: $[[ inputs.black-enabled ]] PYTHON_ISORT_ENABLED: $[[ inputs.isort-enabled ]] .python-scripts: &python-scripts | # BEGSCRIPT Loading Loading @@ -860,6 +871,32 @@ py-compile: when: never - !reference [.test-policy, rules] py-black: extends: .python-base stage: build script: - install_requirements - _pip install black - _run black . --check rules: # exclude if $PYTHON_BLACK_ENABLED not set - if: '$PYTHON_BLACK_ENABLED != "true"' when: never - !reference [.test-policy, rules] py-isort: extends: .python-base stage: build script: - install_requirements - _pip install isort - _run isort . --check-only rules: # exclude if $PYTHON_ISORT_ENABLED not set - if: '$PYTHON_ISORT_ENABLED != "true"' when: never - !reference [.test-policy, rules] ############################################################################################### # test stage # ############################################################################################### Loading Loading
README.md +18 −2 Original line number Diff line number Diff line Loading @@ -266,6 +266,23 @@ In addition to logs in the console, this job produces the following reports, kep | -------------- | ---------------------------------------------------------------------------- | ----------------- | | `$PYTHON_PROJECT_DIR/reports/py-sbom.cyclonedx.json` | [CycloneDX JSON](https://cyclonedx.org/docs/latest/json/) | [Security & Compliance integration](https://docs.gitlab.com/ee/ci/yaml/artifacts_reports.html#artifactsreportscyclonedx) | ### `py-black` job This job **disabled by default** and runs [black](https://black.readthedocs.io) on the repo. It is bound to the build stage. | Input / Variable | Description | Default value | | ---------------- | ----------------------------------------------------------------------- | ----------------- | | `black-enabled` / `PYTHON_BLACK_ENABLED` | Set to `true` to enable black job | _none_ (disabled) | ### `py-isort` job This job **disabled by default** and runs [isort](https://pycqa.github.io/isort/) on the repo. It is bound to the build stage. | Input / Variable | Description | Default value | | ---------------- | ----------------------------------------------------------------------- | ----------------- | | `isort-enabled` / `PYTHON_ISORT_ENABLED` | Set to `true` to enable isort job | _none_ (disabled) | ### SonarQube analysis If you're using the SonarQube template to analyse your Python code, here is a sample `sonar-project.properties` file: Loading Loading @@ -413,7 +430,6 @@ variables: PIP_EXTRA_INDEX_URL: "${CI_SERVER_PROTOCOL}://gitlab-ci-token:${CI_JOB_TOKEN}@${CI_SERVER_HOST}:${CI_SERVER_PORT}/api/v4/groups/<group-id>/-/packages/pypi/simple" ``` ## Variants The Python template can be used in conjunction with template variants to cover specific cases. Loading
kicker.json +12 −0 Original line number Diff line number Diff line Loading @@ -240,6 +240,18 @@ "default": "$CI_JOB_TOKEN" } ] }, { "id": "black", "name": "black", "description": "Code formatting based on [black](https://black.readthedocs.io)", "enable_with": "PYTHON_BLACK_ENABLED" }, { "id": "isort", "name": "isort", "description": "Check imports order with [isort](https://pycqa.github.io/isort)", "enable_with": "PYTHON_ISORT_ENABLED" } ], "variants": [ Loading
templates/gitlab-ci-python.yml +37 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,14 @@ spec: _defaults to [GitLab project's packages repository](https://docs.gitlab.com/ee/user/packages/pypi_repository/)_ default: ${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/packages/pypi black-enabled: description: Enable black type: boolean default: false isort-enabled: description: Enable isort type: boolean default: false --- # default workflow rules: Merge Request pipelines workflow: Loading Loading @@ -260,6 +268,9 @@ variables: PYTHON_SBOM_DISABLED: $[[ inputs.sbom-disabled ]] PYTHON_RELEASE_ENABLED: $[[ inputs.release-enabled ]] PYTHON_BLACK_ENABLED: $[[ inputs.black-enabled ]] PYTHON_ISORT_ENABLED: $[[ inputs.isort-enabled ]] .python-scripts: &python-scripts | # BEGSCRIPT Loading Loading @@ -860,6 +871,32 @@ py-compile: when: never - !reference [.test-policy, rules] py-black: extends: .python-base stage: build script: - install_requirements - _pip install black - _run black . --check rules: # exclude if $PYTHON_BLACK_ENABLED not set - if: '$PYTHON_BLACK_ENABLED != "true"' when: never - !reference [.test-policy, rules] py-isort: extends: .python-base stage: build script: - install_requirements - _pip install isort - _run isort . --check-only rules: # exclude if $PYTHON_ISORT_ENABLED not set - if: '$PYTHON_ISORT_ENABLED != "true"' when: never - !reference [.test-policy, rules] ############################################################################################### # test stage # ############################################################################################### Loading