for testing purposes
diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml new file mode 100644 index 0000000..281f9bb --- /dev/null +++ b/.github/workflows/testing.yml
@@ -0,0 +1,126 @@ +# 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: For testing purposes +# Controls when the action will run. + +on: + # Triggers the workflow on pull request events but only for the main branch + pull_request: + branches: [ main ] + + +jobs: + build: + name: For testing purposes + runs-on: ubuntu-latest + if: | + ${{github.event.pull_request.user.login == 'parthea' && github.event.pull_request.title == 'for testing purposes' && 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')" + + - name: Check out main branch + uses: actions/checkout@v3 + with: + ref: refs/heads/main + + - name: Create branch + run: | + git checkout -b update-discovery-artifacts-${{ steps.date.outputs.current_date }} + + - name: Set up Python 3.9 + uses: actions/setup-python@v3 + with: + python-version: 3.9 + + - 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 + run: git push -f --set-upstream origin update-discovery-artifacts-${{ steps.date.outputs.current_date }} + + - 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 + uses: actions/github-script@v6.0.0 + with: + github-token: ${{secrets.YOSHI_CODE_BOT_TOKEN}} + script: | + async function createPR () { + const { owner, repo } = context.repo + const branch = 'update-discovery-artifacts-${{ steps.date.outputs.current_date }}' + let prBody = `${{ steps.pr_body.outputs.change_summary }}` + const prTitle = 'chore: Update discovery artifacts' + const pullRequests = await github.pulls.list({ + owner: owner, + repo: repo, + head: `${owner}:${branch}`, + state: 'open' + }) + + if (pullRequests.data.length === 1) { + prNumber = pullRequests.data[0].number + await github.pulls.update({ + owner: owner, + repo: repo, + pull_number: prNumber, + title: prTitle, + body: prBody + }) + console.log('Updated PR') + } else { + const createPrResult = await github.pulls.create({ + owner: owner, + repo: repo, + base: 'main', + head: `${owner}:${branch}`, + title: prTitle, + body: prBody + }) + prNumber = createPrResult.data.number + console.log('Created PR') + } + } + createPR()