Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ci-cd): add sync-docs action #105

Merged
merged 1 commit into from
Sep 8, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
97 changes: 97 additions & 0 deletions .github/workflows/sync-docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Sync Docs to arc-docs repo

on:
push:
branches:
- master

env:
DOCS_REPO: sourcefuse/arc-docs
BRANCH_PREFIX: automated-docs-sync/
GITHUB_TOKEN: ${{secrets.ARC_DOCS_API_TOKEN_GITHUB}}
CONFIG_USERNAME: ${{ vars.DOCS_PR_USERNAME }}
CONFIG_EMAIL: ${{ vars.DOCS_PR_EMAIL }}

jobs:
sync-docs:
runs-on: ubuntu-latest

steps:
- name: Checkout Extension Code
uses: actions/checkout@v3
with:
token: ${{env.GITHUB_TOKEN}}
path: './extension/'

- name: Checkout Docs Repository
uses: actions/checkout@v3
with:
token: ${{env.GITHUB_TOKEN}}
repository: ${{env.DOCS_REPO}}
path: './arc-docs/'

- name: Configure GIT
id: configure_git
working-directory: arc-docs
run: |
git config --global user.email $CONFIG_EMAIL
git config --global user.name $CONFIG_USERNAME

extension_branch="${{env.BRANCH_PREFIX}}$(basename $GITHUB_REPOSITORY)"
echo "extension_branch=$extension_branch" >> $GITHUB_OUTPUT

- name: Update Files
id: update_files
working-directory: arc-docs
run: |
extension_branch="${{ steps.configure_git.outputs.extension_branch }}"

# Create a new branch if it doesn't exist, or switch to it if it does
git checkout -B $extension_branch || git checkout $extension_branch

# Copy README from the extension repo
cp ../extension/README.md docs/arc-api-docs/extensions/$(basename $GITHUB_REPOSITORY)/
git add .

if git diff --quiet --cached; then
have_changes="false";
else
have_changes="true";
fi

echo "Have Changes to be commited: $have_changes"
echo "have_changes=$have_changes" >> $GITHUB_OUTPUT

- name: Commit Changes
id: commit
working-directory: arc-docs
if: steps.update_files.outputs.have_changes == 'true'
run: |
git commit -m "sync $(basename $GITHUB_REPOSITORY) docs"
- name: Push Changes
id: push_branch
if: steps.update_files.outputs.have_changes == 'true'
working-directory: arc-docs
run: |
extension_branch="${{ steps.configure_git.outputs.extension_branch }}"
git push https://oauth2:${GITHUB_TOKEN}@github.com/${{env.DOCS_REPO}}.git HEAD:$extension_branch --force

- name: Check PR Status
id: pr_status
if: steps.update_files.outputs.have_changes == 'true'
working-directory: arc-docs
run: |
extension_branch="${{ steps.configure_git.outputs.extension_branch }}"
gh pr status --json headRefName >> "${{github.workspace}}/pr-status.json"
pr_exists="$(jq --arg extension_branch "$extension_branch" '.createdBy[].headRefName == $extension_branch' "${{github.workspace}}/pr-status.json")"
echo "PR Exists: $pr_exists"
echo "pr_exists=$pr_exists" >> $GITHUB_OUTPUT

- name: Create Pull Request
id: create_pull_request
if: steps.pr_status.outputs.pr_exists != 'true' && steps.update_files.outputs.have_changes == 'true'
working-directory: arc-docs
run: |
extension_branch="${{ steps.configure_git.outputs.extension_branch }}"

gh pr create --head $(git branch --show-current) --title "Sync ${{ github.event.repository.name }} Docs" --body "This Pull Request has been created by the 'sync-docs' action within the '${{ github.event.repository.name }}' repository, with the purpose of updating markdown files."