Skip to content

Update ASF APIs

Update ASF APIs #2

Workflow file for this run

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: 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.ignore-init-module-imports = false"
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/aws/api/ 2>/dev/null || git diff --name-only origin/master 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/aws/api/ | sed 's#localstack/aws/api/#- #g' | sed 's#/__init__.py##g' | sed 's/_/-/g')" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Update botocore pin
# 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 to version $BOTOCORE_VERSION"
bin/release-helper.sh set-dep-ver botocore "==$BOTOCORE_VERSION"
# upgrade the requirements files only for the botocore package
pip install pip-tools
pip-compile --upgrade-package botocore --upgrade-package boto3 --extra base-runtime -o requirements-base-runtime.txt pyproject.toml
pip-compile --upgrade-package botocore --upgrade-package boto3 --upgrade-package awscli --extra runtime -o requirements-runtime.txt pyproject.toml
pip-compile --upgrade-package botocore --upgrade-package boto3 --upgrade-package awscli --extra test -o requirements-test.txt pyproject.toml
pip-compile --upgrade-package botocore --upgrade-package boto3 --upgrade-package awscli --extra dev -o requirements-dev.txt pyproject.toml
pip-compile --upgrade-package botocore --upgrade-package boto3 --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@v6
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 <localstack-bot@users.noreply.github.com>"
committer: "LocalStack Bot <localstack-bot@users.noreply.github.com>"
commit-message: "update generated ASF APIs to latest version"
labels: "area: asf, area: dependencies, semver: patch"
token: ${{ secrets.PRO_ACCESS_TOKEN }}
reviewers: alexrashed