-
Notifications
You must be signed in to change notification settings - Fork 0
97 lines (87 loc) · 3.55 KB
/
requirements-update.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
name: Requirements Update
on:
workflow_call:
inputs:
python_version:
type: string
required: false
description: "The version of Python the application uses"
requirements_input:
type: string
required: false
description: "The file containing input requirements, defaults to 'requirements.in'"
requirements_output:
type: string
required: false
description: "The file containing compiled requirements, defaults to 'requirements.txt'"
dev_requirements:
type: string
required: false
description: "The file containing dev requirements, defaults to 'dev-requirements.txt' (must contain pinned version of 'pip-tools')"
base_branch:
type: string
required: false
description: "The branch to use as the base branch for the pull request, defaults to 'development'"
secrets:
GH_TOKEN:
required: true
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
only-labels: dependencies,automated pr
stale-pr-message: 'This PR is stale because it has been open 7 days with no activity. Remove stale label or comment or this will be closed in 7 days.'
close-pr-message: 'This PR was closed because it has been stalled for 7 days with no activity.'
days-before-pr-stale: 7
days-before-pr-close: 7
delete-branch: true
build:
runs-on: ubuntu-latest
steps:
- name: Set input default values
id: set_input_values
run: |
PYTHON_VERSION=${{ inputs.python_version }}
echo "python_version=${PYTHON_VERSION:-"3.11"}" >> "$GITHUB_OUTPUT"
BASE_BRANCH=${{ inputs.base_branch }}
echo "base_branch=${BASE_BRANCH:-"development"}" >> "$GITHUB_OUTPUT"
REQUIREMENTS_INPUT=${{ inputs.requirements_input }}
echo "requirements_input=${REQUIREMENTS_INPUT:-"requirements.in"}" >> "$GITHUB_OUTPUT"
REQUIREMENTS_OUTPUT=${{ inputs.requirements_output }}
echo "requirements_output=${REQUIREMENTS_OUTPUT:-"requirements.txt"}" >> "$GITHUB_OUTPUT"
DEV_REQUIREMENTS=${{ inputs.dev_requirements }}
echo "dev_requirements=${DEV_REQUIREMENTS:-"dev-requirements.txt"}" >> "$GITHUB_OUTPUT"
- name: Checkout
uses: actions/checkout@v4.2.2
with:
ref: ${{ steps.set_input_values.outputs.base_branch }}
- name: Setup python
uses: actions/setup-python@v5.3.0
with:
python-version: ${{ steps.set_input_values.outputs.python_version }}
- name: Install dev Python packages
run: |
python -m pip install --upgrade pip
pip install -r ${{ steps.set_input_values.outputs.dev_requirements }}
- name: Check for pip-tools upgrades
run: |
pip-compile --generate-hashes \
--allow-unsafe \
--upgrade \
--output-file ${{ steps.set_input_values.outputs.requirements_output }} \
${{ steps.set_input_values.outputs.requirements_input }}
- name: Create Pull Request
uses: peter-evans/create-pull-request@v7.0.6
with:
token: ${{ secrets.GH_TOKEN }}
base: ${{ steps.set_input_values.outputs.base_branch }}
branch: requirements-updates
branch-suffix: timestamp
delete-branch: true
commit-message: "fix(requirements): Updated Python requirements"
title: 'Python Requirements Updates'
body: >
This PR is auto-generated by Github Actions job [requirements-update].
labels: dependencies, automated pr