| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| # This workflow will update python dependencies as part of the release process | |
| # And commit the changes into the branch release, creating a PR into the branch | |
| name: Update Python Dependencies | |
| on: | |
| schedule: | |
| - cron: "0 0 * * 0" | |
| workflow_dispatch: | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| checks: read | |
| issues: read | |
| statuses: read | |
| env: | |
| DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | |
| jobs: | |
| set-properties: | |
| runs-on: [self-hosted, ubuntu-24.04, highmem] | |
| outputs: | |
| properties: ${{ steps.test-properties.outputs.properties }} | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| with: | |
| persist-credentials: false | |
| - id: test-properties | |
| uses: ./.github/actions/setup-default-test-properties | |
| update_python_dependencies: | |
| runs-on: [self-hosted, ubuntu-24.04, main] | |
| needs: set-properties | |
| name: Update Python Dependencies | |
| timeout-minutes: 180 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v7 | |
| with: | |
| persist-credentials: false | |
| - name: Setup environment | |
| uses: ./.github/actions/setup-environment-action | |
| with: | |
| python-version: | | |
| 3.11 | |
| 3.12 | |
| 3.13 | |
| 3.14 | |
| java-version: default | |
| go-version: default | |
| disable-cache: true | |
| # generatePythonRequirementsAll does not use tox. | |
| tox-cache: false | |
| - name: Update Python Dependencies | |
| uses: ./.github/actions/gradle-command-self-hosted-action | |
| with: | |
| gradle-command: :sdks:python:container:generatePythonRequirementsAll | |
| - name: Install gh cli | |
| uses: ./.github/actions/setup-gh-cli-linux | |
| - name: Set git config | |
| run: | | |
| git config user.name $GITHUB_ACTOR | |
| git config user.email actions@"$RUNNER_NAME".local | |
| - name: Commit Changes and create new PR | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GH_EVENT: ${{ github.event_name }} | |
| run: | | |
| # Take the current date, subtract from a release cut date in the past (Mar 6, 2024), | |
| # then get the num days % 42 (our release cadence is 42 days). | |
| # This will ensure it only runs the week after a release branch has been cut. | |
| days_diff=$(( ($(date +%s) - $(date --date="240306" +%s) )/(60*60*24)%42 )) | |
| if [[ $GH_EVENT != 'workflow_dispatch' && $days_diff -gt 6 ]]; then | |
| echo "Exiting early. We only update dependencies the week after we cut the release" | |
| exit 0 | |
| fi | |
| branchName=weekly_update_python_dependencies_$(date +%s) | |
| git checkout -b $branchName | |
| git add -A | |
| git diff-index --quiet HEAD || gitdiff=$? || echo $? | |
| if [[ $gitDiff != 0 ]]; then | |
| echo "Changes are ready to commit" | |
| git commit -m "Update Python Dependencies" --quiet | |
| git push origin $branchName --quiet | |
| GITHUB_PR_URL=$(gh pr create --title "Update Python Dependencies" --label "python" --body "This PR was created by automation - by default this does not execute tests due to a limitation in GitHub Actions. To review this PR, please (1) review the contents to make sure all dependency upgrades are formatted correctly, (2) close and reopen the PR (3) Approve/merge if tests pass successfully.") | |
| echo "Link of the new PR $GITHUB_PR_URL" | |
| else | |
| echo "No changes on the files" | |
| fi |