| # Copyright 2021 Google LLC |
| |
| # Licensed 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 |
| |
| # https://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. |
| |
| name: A workflow for updating discovery artifacts |
| # Controls when the action will run. |
| |
| on: |
| schedule: |
| # * is a special character in YAML so you have to quote this string |
| # Run this Github Action every Tuesday at 7 AM UTC |
| - cron: '0 7 * * 2' |
| workflow_dispatch: |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| build: |
| name: Update Discovery Artifacts PR |
| runs-on: ubuntu-latest |
| if: ${{github.repository == 'googleapis/google-api-python-client'}} |
| steps: |
| - name: Get current date |
| id: date |
| run: echo "::set-output name=current_date::$(date +'%Y-%m-%d-%HH%MM%SS')" |
| |
| - name: Sync fork |
| run: gh repo sync $REPOSITORY -b $BRANCH_NAME |
| env: |
| REPOSITORY: 'yoshi-code-bot/google-api-python-client' |
| BRANCH_NAME: 'refs/heads/main' |
| GITHUB_TOKEN: ${{ secrets.YOSHI_CODE_BOT_TOKEN }} |
| |
| - name: Check out main branch |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 |
| with: |
| ref: refs/heads/main |
| repository: 'yoshi-code-bot/google-api-python-client' |
| token: ${{secrets.YOSHI_CODE_BOT_TOKEN}} |
| persist-credentials: false |
| fetch-depth: 0 |
| |
| - name: Create branch |
| run: | |
| git checkout -b update-discovery-artifacts-${STEPS_DATE_OUTPUTS_CURRENT_DATE} |
| env: |
| STEPS_DATE_OUTPUTS_CURRENT_DATE: ${{ steps.date.outputs.current_date }} |
| |
| - name: Set up Python 3.14 |
| uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 |
| with: |
| python-version: 3.14 |
| |
| - name: Install google-api-python-client |
| run: pip3 install -e . |
| |
| - name: Install script dependencies |
| run: pip3 install -r requirements.txt |
| working-directory: ./scripts |
| |
| # Apply a workaround to discovery.py to avoid DefaultCredentialsError |
| # which is raised when calling `build_from_document()` as a result of |
| # `google.auth.default()`. The workaround is to bypass the code block that |
| # attempts to load default credentials. |
| - name: Workaround to avoid DefaultCredentialsError in discovery.py |
| run: sed -i -e 's/if credentials is None/if False/g' googleapiclient/discovery.py |
| |
| - name: Run Change Summary |
| run: python3 updatediscoveryartifacts.py |
| working-directory: ./scripts |
| |
| - name: Commit changes |
| run: ./createcommits.sh |
| working-directory: ./scripts |
| |
| - name: Push changes |
| env: |
| GH_TOKEN: ${{ secrets.YOSHI_CODE_BOT_TOKEN }} |
| BRANCH_NAME: update-discovery-artifacts-${{ steps.date.outputs.current_date }} |
| run: | |
| gh auth setup-git |
| git push -u origin "$BRANCH_NAME" |
| |
| - name: Prepare summary for PR Body |
| id: pr_body |
| shell: bash |
| run: | |
| python3 buildprbody.py |
| output=$(cat temp/allapis.summary) |
| output="${output//'%'/'%25'}" |
| output="${output//$'\n'/'%0A'}" |
| output="${output//$'\r'/'%0D'}" |
| echo "::set-output name=change_summary::$output" |
| working-directory: ./scripts |
| |
| - name: Create PR |
| env: |
| GITHUB_TOKEN: ${{ secrets.YOSHI_CODE_BOT_TOKEN }} |
| PR_TITLE: "chore: Update discovery artifacts" |
| STEPS_PR_BODY_OUTPUTS_CHANGE_SUMMARY: ${{ steps.pr_body.outputs.change_summary }} |
| run: | |
| gh pr create -R "googleapis/google-api-python-client" -B "main" --title "$PR_TITLE" --body "${STEPS_PR_BODY_OUTPUTS_CHANGE_SUMMARY}" |