forked from localstack/localstack
-
Notifications
You must be signed in to change notification settings - Fork 0
119 lines (103 loc) · 5.86 KB
/
asf-updates.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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
name: Update ASF APIs
on:
schedule:
- cron: 0 5 * * MON
workflow_dispatch:
jobs:
update-asf:
name: Update ASF APIs
runs-on: ubuntu-latest
steps:
- name: Checkout Open Source
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up system wide dependencies
run: |
sudo apt-get update
sudo apt-get install jq
- name: Set up Python 3.11
id: setup-python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install release helper dependencies
run: pip install --upgrade setuptools setuptools_scm
- name: Cache LocalStack community dependencies (venv)
uses: actions/cache@v4
with:
path: .venv
key: ${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-venv-${{ hashFiles('requirements-dev.txt') }}
- name: Install dependencies
run: make install-dev
- name: Update botocore (specs)
run: |
source .venv/bin/activate
python3 -m pip install --upgrade botocore
- name: Update ASF APIs
run: |
source .venv/bin/activate
python3 -m localstack.aws.scaffold upgrade
- name: Format code
run: |
source .venv/bin/activate
# explicitly perform an unsafe fix to remove unused imports in the generated ASF APIs
ruff check --select F401 --unsafe-fixes --fix . --config "lint.preview = true"
make format-modified
- name: Check for changes
id: check-for-changes
run: |
# Check if there are changed files and store the result in target/diff-check.log
# Check against the PR branch if it exists, otherwise against the master
# Store the result in target/diff-check.log and store the diff count in the GitHub Action output "diff-count"
mkdir -p target
(git diff --name-only origin/asf-auto-updates localstack-core/localstack/aws/api/ 2>/dev/null || git diff --name-only origin/master localstack-core/localstack/aws/api/ 2>/dev/null) | tee target/diff-check.log
echo "diff-count=$(cat target/diff-check.log | wc -l)" >> $GITHUB_OUTPUT
# Store a (multiline-sanitized) list of changed services (compared to the master) in the GitHub Action output "changed-services"
echo "changed-services<<EOF" >> $GITHUB_OUTPUT
echo "$(git diff --name-only origin/master localstack-core/localstack/aws/api/ | sed 's#localstack-core/localstack/aws/api/#- #g' | sed 's#/__init__.py##g' | sed 's/_/-/g')" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Update botocore and transitive pins
# only update the pin if we have updates in the ASF code
if: ${{ success() && steps.check-for-changes.outputs.diff-count != '0' && steps.check-for-changes.outputs.diff-count != '' }}
run: |
source .venv/bin/activate
# determine botocore version in venv
BOTOCORE_VERSION=$(python -c "import botocore; print(botocore.__version__)");
echo "Pinning botocore, boto3, and boto3-stubs to version $BOTOCORE_VERSION"
bin/release-helper.sh set-dep-ver botocore "==$BOTOCORE_VERSION"
bin/release-helper.sh set-dep-ver boto3 "==$BOTOCORE_VERSION"
# upgrade the requirements files only for the botocore package
pip install pip-tools
pip-compile --strip-extras --upgrade-package "botocore==$BOTOCORE_VERSION" --upgrade-package "boto3==$BOTOCORE_VERSION" --extra base-runtime -o requirements-base-runtime.txt pyproject.toml
pip-compile --strip-extras --upgrade-package "botocore==$BOTOCORE_VERSION" --upgrade-package "boto3==$BOTOCORE_VERSION" --upgrade-package "awscli" --extra runtime -o requirements-runtime.txt pyproject.toml
pip-compile --strip-extras --upgrade-package "botocore==$BOTOCORE_VERSION" --upgrade-package "boto3==$BOTOCORE_VERSION" --upgrade-package "awscli" --extra test -o requirements-test.txt pyproject.toml
pip-compile --strip-extras --upgrade-package "botocore==$BOTOCORE_VERSION" --upgrade-package "boto3==$BOTOCORE_VERSION" --upgrade-package "awscli" --extra dev -o requirements-dev.txt pyproject.toml
pip-compile --strip-extras --upgrade-package "botocore==$BOTOCORE_VERSION" --upgrade-package "boto3==$BOTOCORE_VERSION" --upgrade-package "awscli" --extra typehint -o requirements-typehint.txt pyproject.toml
- name: Read PR markdown template
if: ${{ success() && steps.check-for-changes.outputs.diff-count != '0' && steps.check-for-changes.outputs.diff-count != '' }}
id: template
uses: juliangruber/read-file-action@v1
with:
path: .github/bot_templates/ASF_UPGRADE_PR.md
- name: Add changed services to template
if: ${{ success() && steps.check-for-changes.outputs.diff-count != '0' && steps.check-for-changes.outputs.diff-count != '' }}
id: markdown
uses: mad9000/actions-find-and-replace-string@4
with:
source: ${{ steps.template.outputs.content }}
find: '{{ SERVICES }}'
replace: ${{ steps.check-for-changes.outputs.changed-services }}
- name: Create PR
uses: peter-evans/create-pull-request@v7
if: ${{ success() && steps.check-for-changes.outputs.diff-count != '0' && steps.check-for-changes.outputs.diff-count != '' }}
with:
title: "Update ASF APIs"
body: "${{ steps.markdown.outputs.value }}"
branch: "asf-auto-updates"
author: "LocalStack Bot <[email protected]>"
committer: "LocalStack Bot <[email protected]>"
commit-message: "update generated ASF APIs to latest version"
labels: "area: asf, area: dependencies, semver: patch"
token: ${{ secrets.PRO_ACCESS_TOKEN }}
reviewers: alexrashed