Skip to content
name: Generate Package Versions
on:
workflow_dispatch: # can be triggered manually
schedule:
- cron: "0 0 * * 0" # weekly on Sunday at midnight
push:
branches:
- quinna.halim/add-supported-versions-json # TODO: remove, for testing
jobs:
generate-package-versions:
name: Generate package versions
runs-on: ubuntu-22.04
permissions:
actions: read
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Setup Python 3.7
uses: actions/setup-python@v5
with:
python-version: "3.7"
- name: Setup Python 3.8
uses: actions/setup-python@v5
with:
python-version: "3.8"
- name: Setup Python 3.9
uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Setup Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Setup Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Setup Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Install Docker Compose
run: |
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
- name: Start docker service
run: docker-compose up -d testagent
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libmariadb-dev
- name: Install hatch
uses: pypa/hatch@install
with:
version: "1.12.0"
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install packaging
pip install requests
pip install riot==0.20.1
pip install wrapt==1.16.0
- uses: actions/checkout@v4
with:
persist-credentials: false
path: ddtrace
- name: Install ddtrace
run: |
pip install ./ddtrace
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Run regenerate-riot-latest
run: scripts/regenerate-riot-latest.sh
- name: Get latest version
id: new-latest
run: |
NEW_LATEST=$(python scripts/get_latest_version.py ${{ env.VENV_NAME }})
echo "NEW_LATEST=$NEW_LATEST" >> $GITHUB_ENV
- name: Generate table
run: python scripts/generate_table.py
- run: git diff
# Generate the commit with potential conflicts
- name: Generate Commit
run: |
# Checkout a new branch
git config --global --add safe.directory "$GITHUB_WORKSPACE"
git checkout -b "upgrade-latest-${{ env.VENV_NAME }}-version"
# Stage and commit the changes
git add supported_versions_output.json supported_versions_table.csv
git commit -m "Test Package Versions update"
# Resolve conflicts if any during the rebase or cherry-pick
- name: Resolve Conflicts
run: |
# Attempt to cherry-pick or rebase changes onto the base branch
git fetch origin main
git rebase origin/main || true
# Resolve conflicts by keeping changes
git checkout --theirs supported_versions_output.json || true
git checkout --theirs supported_versions_table.csv || true
# Stage resolved changes
git add supported_versions_output.json supported_versions_table.csv || true
# Continue rebase
git rebase --continue || true
- name: Create Pull Request
id: pr
uses: peter-evans/create-pull-request@v6
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: "upgrade-latest-${{ env.VENV_NAME }}-version"
commit-message: "Update package version"
delete-branch: true
base: main
add-paths: |
supported_versions_table.csv
supported_versions_output.json
.riot/requirements/*
title: "chore: update ${{ env.VENV_NAME }} latest version to ${{ env.NEW_LATEST }}"
labels: changelog/no-changelog
body: |
Update ${{ env.VENV_NAME }} lockfiles and dependency package lockfiles.
This performs the following updates:
1) Some ${{ env.VENV_NAME }} lockfiles use ${{ env.VENV_NAME }} `latest`. This will update ${{ env.VENV_NAME }} and dependencies.
2) Some ${{ env.VENV_NAME }} lockfiles use a pinned (non-latest) version of ${{ env.VENV_NAME }}, but require the `latest` version of another package. This will update all such packages.
## Checklist
- [x] PR author has checked that all the criteria below are met
- The PR description includes an overview of the change
- The PR description articulates the motivation for the change
- The change includes tests OR the PR description describes a testing strategy
- The PR description notes risks associated with the change, if any
- Newly-added code is easy to change
- The change follows the [library release note guidelines](https://ddtrace.readthedocs.io/en/stable/releasenotes.html)
- The change includes or references documentation updates if necessary
- Backport labels are set (if [applicable](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting))
## Reviewer Checklist
- [ ] Reviewer has checked that all the criteria below are met
- Title is accurate
- All changes are related to the pull request's stated goal
- Avoids breaking [API](https://ddtrace.readthedocs.io/en/stable/versioning.html#interfaces) changes
- Testing strategy adequately addresses listed risks
- Newly-added code is easy to change
- Release note makes sense to a user of the library
- If necessary, author has acknowledged and discussed the performance implications of this PR as reported in the benchmarks PR comment
- Backport labels are set in a manner that is consistent with the [release branch maintenance policy](https://ddtrace.readthedocs.io/en/latest/contributing.html#backporting)