Skip to content

rc_api_sync

rc_api_sync #16

Workflow file for this run

name: rc_api_sync
on:
schedule:
- cron: '0 0 * * *' # run every day at midnight UTC time
workflow_dispatch: # or run on manual trigger
jobs:
rc_api_sync:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
actions: write
steps:
- name: 'Checkout'
uses: 'actions/checkout@v3'
- name: 'Fetch openapi json file'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
branch="rc_api_sync"
spec_change=false
# check if remote branch already exists
git fetch --all
set +e
git ls-remote --exit-code --heads origin "refs/heads/${branch}"
if [ "$?" -eq 0 ]; then
set -e
# if it does, create local branch off existing remote branch
git checkout -b "${branch}" "origin/${branch}"
git branch --set-upstream-to="origin/${branch}" "${branch}"
git pull
else
set -e
# otherwise, create local branch from main
git checkout -b "${branch}"
fi
curl -Ls https://api.redislabs.com/v1/cloud-api-docs \
| jq '(.. | .example? | try select(test("^{"))) |= fromjson' > content/operate/rc/api/api-reference/openapi.json
spec_is_different=$(git diff content/operate/rc/api/api-reference/openapi.json)
if [[ ! -z $spec_is_different ]]; then
spec_change=true
git add "content/operate/rc/api/api-reference/openapi.json"
git config user.email "177626021+redisdocsapp[bot]@users.noreply.github.com"
git config user.name "redisdocsapp[bot]"
git commit -m "Update content/operate/rc/api/api-reference/openapi.json"
fi
if [ "$spec_change" = true ] ; then
git push origin "${branch}"
# If a pr is not already open, create one
set +e
gh search prs -R redis/docs --state open --match title "update rc openapi spec" | grep -q "update rc openapi spec"
if [ "$?" -eq 1 ]; then
set -e
gh pr create \
--body "update rc openapi spec" \
--title "update rc openapi spec" \
--head "$branch" \
--base "main"
fi
fi