| name: New Client |
| on: |
| schedule: |
| - cron: '0 2 * * *' # nightly at 2 am UTC |
| push: |
| branches: [ main ] |
| paths: |
| - generation/** |
| pull_request: |
| branches: [ main ] |
| paths: |
| - generation/** |
| |
| workflow_dispatch: |
| |
| jobs: |
| generate: |
| runs-on: ubuntu-latest |
| env: |
| API_SHORT_NAME: apikeys |
| API_PRETTY_NAME: API Keys |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: actions/setup-python@v4 |
| with: |
| python-version: '3.9' |
| cache: 'pip' # caching pip dependencies |
| - name: Get current week within the year |
| id: date |
| run: echo "::set-output name=week_of_year::$(date +'%W' --utc)" |
| - uses: actions/setup-java@v3 |
| with: |
| distribution: zulu |
| java-version: 11 |
| - run: java -version |
| - uses: actions/cache@v3 |
| id: mvn-cache |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-maven-unified-${{ steps.date.outputs.week_of_year }} |
| - name: Install dependencies |
| run: pip install --require-hashes -r generation/new_client/requirements.txt |
| - name: Remove Client |
| run: | |
| rm -rf java-${API_SHORT_NAME} || true |
| sed -i "/${API_SHORT_NAME}/d" pom.xml |
| sed -i "/${API_SHORT_NAME}/d" gapic-libraries-bom/pom.xml |
| - name: Verify Client Removal |
| run: | |
| ! test -d java-${API_SHORT_NAME} |
| ! grep -q ${API_SHORT_NAME} pom.xml |
| ! grep -q ${API_SHORT_NAME} gapic-libraries-bom/pom.xml |
| - name: Generate |
| run: | |
| python generation/new_client/new-client.py generate \ |
| --api_shortname=${API_SHORT_NAME} \ |
| --proto-path=google/api/${API_SHORT_NAME} \ |
| --name-pretty="${API_PRETTY_NAME}" \ |
| --product-docs="https://github.com/googleapis/google-cloud-java/tree/main/java-${API_SHORT_NAME}" \ |
| --api-description="${API_PRETTY_NAME} Client lets you use ${API_PRETTY_NAME} API." \ |
| --googleapis-gen-url=https://yoshi-approver:${{ secrets.YOSHI_APPROVER_PRIVATE_TOKEN }}@github.com/googleapis/googleapis-gen.git |
| - name: Push to branch (helpful for troubleshooting) |
| run: | |
| [ -z "`git config user.email`" ] && git config --global user.email "${USERNAME:-script}@google.com" |
| [ -z "`git config user.name`" ] && git config --global user.name "${USERNAME:-script}" |
| git checkout -b newclient_output_${{ github.event_name }} |
| git add --all |
| git commit -m 'feat: re-generated ${API_SHORT_NAME}' |
| git remote add monorepo https://${{ github.actor }}:${{ github.token }}@github.com/${{ github.repository }}.git |
| git fetch -q --unshallow monorepo |
| git push -f monorepo newclient_output_${{ github.event_name }} |
| - name: Verify Client Creation |
| run: | |
| test -d java-${API_SHORT_NAME} |
| grep -q ${API_SHORT_NAME} pom.xml |
| grep -q ${API_SHORT_NAME} gapic-libraries-bom/pom.xml |
| - name: Test |
| run: mvn -B -ntp test -T C1 |