Sync fabricv4 API spec #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sync fabricv4 API spec | |
on: | |
workflow_dispatch: | |
jobs: | |
sync: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Get current date | |
id: date | |
run: echo "date=$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT" | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version-file: .python-version | |
- name: GitHub user | |
run: | | |
# https://api.github.com/users/github-actions[bot] | |
git config user.name 'github-actions[bot]' | |
git config user.email '41898282+github-actions[bot]@users.noreply.github.com' | |
- name: Fetch latest spec | |
id: fetch | |
run: | | |
make -f Makefile.fabricv4 fetch | |
git add spec/services/fabricv4 | |
echo `git commit -m 'sync: fetch ${{ steps.date.outputs.date }} spec and apply patches'` | |
- name: Apply spec patches | |
id: patch | |
if: ${{ always() && steps.fetch.conclusion == 'success' }} | |
run: | | |
make -f Makefile.fabricv4 patch | |
git add spec/services/fabricv4 | |
echo `git commit -m 'sync: patch spec with ${{ steps.date.outputs.date }} spec'` | |
- name: Generate code | |
id: generate | |
if: ${{ always() && steps.patch.conclusion == 'success' }} | |
run: | | |
make -f Makefile.fabricv4 generate | |
git add equinix/services/fabricv4 | |
echo `git commit -m 'sync: generate client with ${{ steps.date.outputs.date }} spec'` | |
- name: Create Pull Request | |
id: cpr | |
uses: peter-evans/create-pull-request@v7 | |
if: ${{ always() && steps.fetch.conclusion == 'success' }} | |
with: | |
branch: sync/gh | |
branch-suffix: timestamp | |
author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | |
commit-message: "sync: uncommitted changes detected when opening PR" | |
title: "feat: API Sync by GitHub Action for @${{ github.event.sender.login }}" | |
body: | | |
This API Sync PR was triggered by @${{ github.event.sender.login }} through [GitHub Actions workflow_displatch](https://github.com/equinix/equinix-sdk-python/actions?query=event%3Aworkflow_dispatch) | |
on ${{ steps.date.outputs.date }}. | |
* latest Swagger is fetched | |
* patches have been applied | |
* generated client has been updated | |
delete-branch: true | |
draft: ${{ steps.patch.conclusion == 'failure' || steps.generate.conclusion == 'failure' }} | |
- name: Comment for failed patch | |
uses: mshick/add-pr-comment@v2 | |
if: ${{ always() && steps.patch.conclusion == 'failure' && steps.cpr.conclusion == 'success' }} | |
with: | |
issue: ${{ steps.cpr.outputs.pull-request-number }} | |
message: Failed to patch latest spec. Someone with write access must fix this PR manually and then convert it from Draft status to Ready for Review. | |
- name: Comment for failed generate | |
uses: mshick/add-pr-comment@v2 | |
if: ${{ always() && steps.generate.conclusion == 'failure' && steps.cpr.conclusion == 'success' }} | |
with: | |
issue: ${{ steps.cpr.outputs.pull-request-number }} | |
message: Failed to generate code from latest patched spec. Someone with write access must fix this PR manually and then convert it from Draft status to Ready for Review. | |
- name: Check outputs | |
if: ${{ always() && steps.cpr.conclusion == 'success' }} | |
run: | | |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" | |
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" |