126 lines
4.3 KiB
YAML
126 lines
4.3 KiB
YAML
# 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'
|
|
|
|
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')"
|
|
|
|
- name: Check out main branch
|
|
uses: actions/checkout@v2
|
|
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@v2
|
|
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@v4.0.2
|
|
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()
|