mirror of https://github.com/gofiber/fiber.git
improve docs sync script
parent
032bde9452
commit
fb9b57f534
|
@ -2,37 +2,69 @@
|
|||
|
||||
# Some env variables
|
||||
BRANCH="master"
|
||||
MAJOR_VERSION="v2"
|
||||
REPO_URL="github.com/gofiber/docs.git"
|
||||
AUTHOR_EMAIL="github-actions[bot]@users.noreply.github.com"
|
||||
AUTHOR_USERNAME="github-actions[bot]"
|
||||
VERSION_FILE="versions.json"
|
||||
REPO_DIR="core"
|
||||
COMMIT_URL="https://github.com/gofiber/fiber"
|
||||
DOCUSAURUS_COMMAND="npm run docusaurus -- docs:version"
|
||||
|
||||
# Set commit author
|
||||
git config --global user.email "${AUTHOR_EMAIL}"
|
||||
git config --global user.name "${AUTHOR_USERNAME}"
|
||||
|
||||
if [[ $EVENT == "push" ]]; then
|
||||
latest_commit=$(git rev-parse --short HEAD)
|
||||
log_output=$(git log --oneline ${BRANCH} HEAD~1..HEAD --name-status -- docs/)
|
||||
git clone https://${TOKEN}@${REPO_URL} fiber-docs
|
||||
|
||||
if [[ $log_output != "" ]]; then
|
||||
git clone https://${TOKEN}@${REPO_URL} fiber-docs
|
||||
cp -a docs/* fiber-docs/docs/core
|
||||
# Handle push event
|
||||
if [ "$EVENT" == "push" ]; then
|
||||
latest_commit=$(git rev-parse --short HEAD)
|
||||
log_output=$(git log --oneline ${BRANCH} HEAD~1..HEAD --name-status -- docs/)
|
||||
if [[ $log_output != "" ]]; then
|
||||
cp -a docs/* fiber-docs/docs/${REPO_DIR}
|
||||
fi
|
||||
|
||||
# Push changes for next docs
|
||||
cd fiber-docs/ || return
|
||||
git add .
|
||||
git commit -m "Add docs from https://github.com/gofiber/fiber/commit/${latest_commit}"
|
||||
git push https://${TOKEN}@${REPO_URL}
|
||||
fi
|
||||
elif [[ $EVENT == "release" ]]; then
|
||||
latest_tag=$(git describe --tags --abbrev=0)
|
||||
# Handle release event
|
||||
elif [ "$EVENT" == "release" ]; then
|
||||
major_version="${TAG_NAME%%.*}"
|
||||
|
||||
# Push changes for stable docs
|
||||
git clone https://${TOKEN}@${REPO_URL} fiber-docs
|
||||
cd fiber-docs/ || return
|
||||
cp -a docs/core/* versioned_docs/version-${MAJOR_VERSION}.x
|
||||
git add .
|
||||
git commit -m "Sync docs for ${latest_tag} release"
|
||||
git push https://${TOKEN}@${REPO_URL}
|
||||
# Form new version name
|
||||
new_version="${major_version}.x"
|
||||
|
||||
cd fiber-docs/ || true
|
||||
npm ci
|
||||
|
||||
# Check if contrib_versions.json exists and modify it if required
|
||||
if [[ -f $VERSION_FILE ]]; then
|
||||
jq --arg new_version "$new_version" 'del(.[] | select(. == $new_version))' $VERSION_FILE >temp.json && mv temp.json $VERSION_FILE
|
||||
jq -S . ${VERSION_FILE} >temp.json && mv temp.json ${VERSION_FILE}
|
||||
fi
|
||||
|
||||
# Run docusaurus versioning command
|
||||
$DOCUSAURUS_COMMAND "${new_version}"
|
||||
fi
|
||||
|
||||
# Push changes
|
||||
cd fiber-docs/ || true
|
||||
git add .
|
||||
if [[ $EVENT == "push" ]]; then
|
||||
git commit -m "Add docs from ${COMMIT_URL}/commit/${latest_commit}"
|
||||
elif [[ $EVENT == "release" ]]; then
|
||||
git commit -m "Sync docs for release ${COMMIT_URL}/releases/tag/${TAG_NAME}"
|
||||
fi
|
||||
|
||||
MAX_RETRIES=5
|
||||
DELAY=5
|
||||
retry=0
|
||||
|
||||
while ((retry < MAX_RETRIES)); do
|
||||
git push https://${TOKEN}@${REPO_URL} && break
|
||||
retry=$((retry + 1))
|
||||
git pull --rebase
|
||||
sleep $DELAY
|
||||
done
|
||||
|
||||
if ((retry == MAX_RETRIES)); then
|
||||
echo "Failed to push after $MAX_RETRIES attempts. Exiting with 1."
|
||||
exit 1
|
||||
fi
|
||||
|
|
|
@ -8,7 +8,7 @@ on:
|
|||
paths:
|
||||
- 'docs/**'
|
||||
release:
|
||||
types: [published]
|
||||
types: [ published ]
|
||||
|
||||
jobs:
|
||||
sync-docs:
|
||||
|
@ -20,8 +20,17 @@ jobs:
|
|||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
fetch-depth: 2
|
||||
|
||||
- name: Setup Node.js environment
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18'
|
||||
|
||||
- name: Install JQ
|
||||
run: sudo apt-get install jq
|
||||
|
||||
- name: Sync docs
|
||||
run: ./.github/scripts/sync_docs.sh
|
||||
env:
|
||||
EVENT: ${{ github.event_name }}
|
||||
TAG_NAME: ${{ github.ref_name }}
|
||||
TOKEN: ${{ secrets.DOC_SYNC_TOKEN }}
|
||||
|
|
Loading…
Reference in New Issue