Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
Commit 8d8db1ec authored by Dorian Turba's avatar Dorian Turba
Browse files

Merge branch 'template-depandabot' into 'main'

feat: add depandabot template

See merge request dorianturba/r2devops_catalog!1
parents b7d72087 170399fa
No related branches found
No related tags found
1 merge request!1feat: add depandabot template
Pipeline #25275 passed
Showing
with 148 additions and 10 deletions
...@@ -9,6 +9,7 @@ include: ...@@ -9,6 +9,7 @@ include:
- local: 'templates/python/code_quality/isort/isort.yml' - local: 'templates/python/code_quality/isort/isort.yml'
- local: 'templates/python/code_quality/mypy/mypy.yml' - local: 'templates/python/code_quality/mypy/mypy.yml'
- local: 'templates/python/code_quality/ruff/ruff.yml' - local: 'templates/python/code_quality/ruff/ruff.yml'
- local: 'templates/python/dependency_management/requirements-compile/requirements-compile.yml'
python_install: python_install:
extends: extends:
...@@ -57,3 +58,11 @@ ruff: ...@@ -57,3 +58,11 @@ ruff:
needs: [ "python_install" ] needs: [ "python_install" ]
variables: variables:
PROJECT_PATH: "tests/ruff_project" PROJECT_PATH: "tests/ruff_project"
requirements-compile:
stage: templates
needs: [ "python_install" ]
variables:
PROJECT_PATH: "tests/requirements-compile_project"
REQUIREMENTS_FILE_PATH: "${PROJECT_PATH}/requirements.in"
OUTPUT_FILE_PATH: "${PROJECT_PATH}/requirements.txt"
...@@ -10,4 +10,4 @@ Development Lead ...@@ -10,4 +10,4 @@ Development Lead
Contributors Contributors
------------ ------------
None yet. Why not be the first? * Simon Desnoe <0d3s3n@gmail.com>
...@@ -22,6 +22,8 @@ dependencies = [ ...@@ -22,6 +22,8 @@ dependencies = [
[project.optional-dependencies] [project.optional-dependencies]
QUALITY = [ QUALITY = [
"black",
"mypy",
"pre-commit", "pre-commit",
] ]
...@@ -29,3 +31,10 @@ QUALITY = [ ...@@ -29,3 +31,10 @@ QUALITY = [
strict-config = true strict-config = true
plugins.line-length.enabled = false plugins.line-length.enabled = false
[[tool.mypy.overrides]]
module = [
"packaging.requirements",
"packaging.specifiers",
"packaging",
]
ignore_missing_imports = true
\ No newline at end of file
files:
template: ../templates/python/dependency_management/requirements-compile/requirements-compile.yml
documentation: ../templates/python/dependency_management/requirements-compile/README.md
changelog: ../templates/python/dependency_management/requirements-compile/CHANGELOG.md
data:
description: "Run pip-compile to generate a requirements.txt and create a merge
request on your repository with the updated requirements.txt"
icon:
public: true
labels:
- Utilities
- Dependency management
- Gitlab
- Python
license: MIT
deprecated: false
# Changelog
All notable changes to this job will be documented in this file
## [0.1.0] - 2023-09-05
* Initial version
# requirements-compile template
## Objective
The objective of the `requirements-compile` job is to provide a way to update the
requirements.txt file and create a merge request on a Gitlab instance. This reusable job
can help speed up other jobs creation and ensure consistent configuration across CI
jobs.
## How to use it
1. Include the requirements-compile template in your CI/CD configuration (see quick use
above).
2. Create a job that extend the `requirements-compile` job template.
3. If you need to customize the job, check
the [jobs customization](https://docs.r2devops.io/get-started/use-templates/#job-templates-customization).
## Variables
| Name | Description | Default |
|--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------|
| `PROJECT_PATH` | The path to the project root directory. | `"."` |
| `REQUIREMENTS_FILE_PATH` | the path to the requirements file. | `"${PROJECT_PATH}/requirements.txt"` |
| `IMAGE_TAG` | The default tag for the docker image. See [Python Docker Official Image](https://hub.docker.com/_/python) for supported tags and respective Dockerfile links. | `"latest"` |
| `GITLAB_API_URL` | The host name of the GitLab instance | `${CI_SERVER_HOST}` |
## Example of use
```yaml
include:
# Include the python_install job template (don't forget to replace the version tag)
- remote: 'https://api.r2devops.io/job/r/gitlab/dorianturba/r2devops_catalog/r2_metadata/requirements-compile@0.1.0.yaml'
requirements311:
extends:
- .requirements-compile # extends the python_install job template
stage: dependency_management
variables:
REQUIREMENTS_FILE_PATH: "${PROJECT_PATH}/requirements-py312.txt" # override the default REQUIREMENTS_FILE_PATH variable
IMAGE_TAG: "3.12" # override the default IMAGE_TAG variable
GITLAB_API_URL: "gitlab.example.com" # override the default GITLAB_API_URL
script:
- !reference [ script ] # reuse the script from the requirements-compile job template
```
include:
- remote: 'https://api.r2devops.io/job/r/gitlab/dorianturba/r2devops_catalog/r2_metadata/python_install@latest.yaml'
requirements-compile:
extends:
- .python_install
stage: build
image: python:${IMAGE_TAG}
variables:
PYTHON_SETUP: pip install pip-tools requirements-compare
GITLAB_API_URL: "${CI_SERVER_HOST}"
REQUIREMENTS_FILE_PATH: "${PROJECT_PATH}/requirements.in"
OUTPUT_FILE_PATH: "${PROJECT_PATH}/requirements${IMAGE_TAG}.txt"
CI_DEBUG_TRACE: "true"
script:
- !reference [.python_install, script]
- DEPS_BRANCH="requirements-compile/requirements-txt/$(date +%s)"
- |
COMMIT_MESSAGE="build(deps): bump new versions"
- $([ -f ${OUTPUT_FILE_PATH} ]) && ACTION="update" || ACTION="create"
- pip-compile --quiet --strip-extras -o ${OUTPUT_FILE_PATH} ${REQUIREMENTS_FILE_PATH}
- if [ -n "$(git status --porcelain ${OUTPUT_FILE_PATH})" ]; then
- |
curl --header "Authorization: Bearer ${REQUIREMENTS_COMPILE_TOKEN}" \
--form "branch=$DEPS_BRANCH" \
--form "ref=${CI_DEFAULT_BRANCH}" \
"https://${GITLAB_API_URL}/api/v4/projects/${CI_PROJECT_ID}/repository/branches"
- |
curl --header "Authorization: Bearer ${REQUIREMENTS_COMPILE_TOKEN}" \
--form "branch=$DEPS_BRANCH" \
--form "commit_message=$COMMIT_MESSAGE" \
--form "actions[][action]=$ACTION" \
--form "actions[][file_path]=${OUTPUT_FILE_PATH}" \
--form "actions[][content]=<${OUTPUT_FILE_PATH}" \
"https://${GITLAB_API_URL}/api/v4/projects/${CI_PROJECT_ID}/repository/commits"
- requirements_compare ${OUTPUT_FILE_PATH} # Debug
- requirements_compare ${OUTPUT_FILE_PATH} > description.md
- |
curl --header "Authorization: Bearer ${REQUIREMENTS_COMPILE_TOKEN}" \
--form "source_branch=$DEPS_BRANCH" \
--form "target_branch=${CI_DEFAULT_BRANCH}" \
--form "title=$COMMIT_MESSAGE" \
--form "description=<description.md" \
"https://${GITLAB_API_URL}/api/v4/projects/${CI_PROJECT_ID}/merge_requests"
- fi
from flake8_project.main import main from flake8_project.main import main
__all__ = ['main'] __all__ = ["main"]
...@@ -7,5 +7,5 @@ def main() -> bool: ...@@ -7,5 +7,5 @@ def main() -> bool:
return True return True
if __name__ == '__main__': if __name__ == "__main__":
main() main()
def barfoo(): def barfoo():
... ...
\ No newline at end of file
from pytest_project.main import main from pytest_project.main import main
__all__ = ['main'] __all__ = ["main"]
...@@ -7,5 +7,5 @@ def main() -> bool: ...@@ -7,5 +7,5 @@ def main() -> bool:
return True return True
if __name__ == '__main__': if __name__ == "__main__":
main() main()
from pytest_project.main import main from pytest_project.main import main
__all__ = ['main'] __all__ = ["main"]
...@@ -7,5 +7,5 @@ def main() -> bool: ...@@ -7,5 +7,5 @@ def main() -> bool:
return True return True
if __name__ == '__main__': if __name__ == "__main__":
main() main()
requests
pytest
from flake8_project.main import main from flake8_project.main import main
__all__ = ['main'] __all__ = ["main"]
...@@ -7,5 +7,5 @@ def main() -> bool: ...@@ -7,5 +7,5 @@ def main() -> bool:
return True return True
if __name__ == '__main__': if __name__ == "__main__":
main() main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment