From 88a69c2c2c0616f6afb7c6680b814a5907a6bcb9 Mon Sep 17 00:00:00 2001 From: saimedhi Date: Wed, 31 Jan 2024 14:43:46 -0800 Subject: [PATCH] Added an automated api update bot for opensearch-py Signed-off-by: saimedhi --- .github/workflows/update_api.yml | 76 ++++++++++++++++++++++++++++++++ CHANGELOG.md | 3 ++ 2 files changed, 79 insertions(+) create mode 100644 .github/workflows/update_api.yml diff --git a/.github/workflows/update_api.yml b/.github/workflows/update_api.yml new file mode 100644 index 00000000..afad8fab --- /dev/null +++ b/.github/workflows/update_api.yml @@ -0,0 +1,76 @@ +name: Update API +on: + workflow_dispatch: + schedule: + - cron: "30 3 * * *" +jobs: + update-api: + if: ${{ github.repository == 'opensearch-project/opensearch-py' }} + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Config git to rebase + run: git config --global pull.rebase true + - name: Set up Python 3.7 + uses: actions/setup-python@v4 + with: + python-version: 3.7 + - name: Install dependencies + run: | + python3.7 -m pip install nox + - name: Generate API + run: nox -s generate + - name: Get current date + id: date + run: echo "::set-output name=date::$(date +'%Y-%m-%d')" + - name: GitHub App token + id: github_app_token + uses: tibdex/github-app-token@v1.5.0 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.APP_PRIVATE_KEY }} + installation_id: 22958780 + - name: Create pull request + id: cpr + uses: peter-evans/create-pull-request@v5 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: Updated opensearch-py to reflect the latest OpenSearch API spec (${{ steps.date.outputs.date }}) + title: Updated opensearch-py to reflect the latest OpenSearch API spec + body: | + Updated [opensearch-py](https://github.com/opensearch-project/opensearch-py) to reflect the latest [OpenSearch API spec](https://github.com/opensearch-project/opensearch-api-specification/blob/main/OpenSearch.openapi.json) + Date: ${{ steps.date.outputs.date }} + branch: automated-api-update + base: main + committer: opensearchpy-api-update-bot + author: opensearchpy-api-update-bot + - name: Check out update branch + if: ${{ steps.cpr.outputs.pull-request-number != '' }} + run: | + git fetch origin automated-api-update + git checkout automated-api-update + - name: Update CHANGELOG + uses: jacobtomlinson/gha-find-replace@v3 + if: ${{ steps.cpr.outputs.pull-request-number != '' }} + with: + find: "- Your contribution here." + replace: "- Updated opensearch-py to reflect the latest OpenSearch API spec ([#${{steps.cpr.outputs.pull-request-number}}](https://github.com/opensearch-project/opensearch-py/pull/${{steps.cpr.outputs.pull-request-number}}))\n- Your contribution here." + include: "**CHANGELOG.md" + - name: Commit and Push + if: ${{ steps.cpr.outputs.pull-request-number != '' }} + run: | + git config --local user.name 'opensearchpy-api-update-bot' + git config --local user.email 'noreply@github.com' + git config --local --unset-all http.https://github.com/.extraheader || true + AUTH=$(echo -n "x-access-token:${{ steps.github_app_token.outputs.token || secrets.GITHUB_TOKEN }}" | base64) + echo "::add-mask::${AUTH}" + git config --local http.https://github.com/.extraheader "AUTHORIZATION: basic ${AUTH}" + git add CHANGELOG.md + git commit --amend --no-edit + git push origin automated-api-update -f diff --git a/CHANGELOG.md b/CHANGELOG.md index f4ce00af..a33fc503 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Added a log collection guide ([#579](https://github.com/opensearch-project/opensearch-py/pull/579)) - Added GHA release ([#614](https://github.com/opensearch-project/opensearch-py/pull/614)) - Incorporated API generation into CI workflow and fixed 'generate' nox session ([#660](https://github.com/opensearch-project/opensearch-py/pull/660)) +- Added an automated api update bot for opensearch-py ([#664](https://github.com/opensearch-project/opensearch-py/pull/664)) ### Changed - Updated the `get_policy` API in the index_management plugin to allow the policy_id argument as optional ([#633](https://github.com/opensearch-project/opensearch-py/pull/633)) - Updated the `point_in_time.md` guide with examples demonstrating the usage of the new APIs as alternatives to the deprecated ones. ([#661](https://github.com/opensearch-project/opensearch-py/pull/661)) @@ -21,6 +22,8 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ### Fixed - Fix KeyError when scroll return no hits ([#616](https://github.com/opensearch-project/opensearch-py/pull/616)) - Fix reuse of `OpenSearch` using `Urllib3HttpConnection` and `AsyncOpenSearch` after calling `close` ([#639](https://github.com/opensearch-project/opensearch-py/pull/639)) +### Automated API Update +- Your contribution here. ### Security ### Dependencies - Bumps `pytest-asyncio` from <=0.21.1 to <=0.23.4