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 d4a4f4f7 authored by sdesnoe's avatar sdesnoe Committed by Dorian Turba
Browse files

feat: add depandabot template

parent 7684bcd5
No related branches found
No related tags found
1 merge request!1feat: add depandabot template
files:
template: ../templates/python/dependency_management/depandabot/depandabot.yml
documentation: ../templates/python/dependency_management/depandabot/README.md
changelog: ../templates/python/dependency_management/depandabot/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
\ No newline at end of file
## Objective
The objective of the `depandabot` 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 depandabot template in your CI/CD configuration (see quick use above).
2. Create a job that extend the `depandabot` 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"` |
| `PYTHON_SETUP` | Bash commands to setup your python environment. Default rely on `requirements.txt` to install all dependencies. | `"pip install -r ${REQUIREMENTS_FILE_PATH}"` |
## 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/depandabot@0.1.0.yaml'
requirements311:
extends:
- .depandabot # extends the python_install job template
stage: dependency_management
variables:
REQUIREMENTS_FILE_PATH: "${PROJECT_PATH}/requirements-py311.txt" # override the default REQUIREMENTS_FILE_PATH variable
IMAGE_TAG: "3.11" # 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 python_install job template
```
depandabot:
stage: dependency_management
image: python:${IMAGE_TAG}
variables:
PROJECT_PATH: "."
REQUIREMENTS_FILE_PATH: "${PROJECT_PATH}/requirements.txt"
IMAGE_TAG: "latest"
GITLAB_API_URL: "${CI_SERVER_HOST}"
before_script:
- python --version ; pip --version # debugging
- python -m venv venv --upgrade-deps || python -m venv venv
- source venv/bin/activate
- pip install pip-tools
script:
- DEPS_BRANCH="depandabot/requirements-txt/$(date +%s)"
- |
COMMIT_MESSAGE="build(deps): bump new versions"
- $([ -f ${REQUIREMENTS_FILE_PATH} ]) && ACTION="update" || ACTION="create"
- pip-compile --quiet -o ${REQUIREMENTS_FILE_PATH}
- if [ -n "$(git status --porcelain ${REQUIREMENTS_FILE_PATH})" ]; then
- |
curl --header "Authorization: Bearer ${DEPANDABOT_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 ${DEPANDABOT_TOKEN}" \
--form "branch=$DEPS_BRANCH" \
--form "commit_message=$COMMIT_MESSAGE" \
--form "actions[][action]=$ACTION" \
--form "actions[][file_path]=${REQUIREMENTS_FILE_PATH}" \
--form "actions[][content]=<${REQUIREMENTS_FILE_PATH}" \
"https://${GITLAB_API_URL}/api/v4/projects/${CI_PROJECT_ID}/repository/commits"
- |
curl --header "Authorization: Bearer ${DEPANDABOT_TOKEN}" \
--form "source_branch=$DEPS_BRANCH" \
--form "target_branch=${CI_DEFAULT_BRANCH}" \
--form "title=$COMMIT_MESSAGE" \
"https://${GITLAB_API_URL}/api/v4/projects/${CI_PROJECT_ID}/merge_requests"
- fi
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