| # 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 Depedencies |
| |
| 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-20.04] |
| outputs: |
| properties: ${{ steps.test-properties.outputs.properties }} |
| steps: |
| - name: Checkout code |
| uses: actions/checkout@v4 |
| - id: test-properties |
| uses: ./.github/actions/setup-default-test-properties |
| |
| update_python_dependencies: |
| runs-on: [self-hosted, ubuntu-20.04] |
| needs: set-properties |
| name: Update Python Dependencies |
| steps: |
| - name: Checkout code |
| uses: actions/checkout@v4 |
| - name: Setup environment |
| uses: ./.github/actions/setup-environment-action |
| with: |
| python-version: | |
| 3.9 |
| 3.10 |
| 3.11 |
| 3.12 |
| 3.13 |
| java-version: default |
| go-version: default |
| disable-cache: true |
| |
| - 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 |