Skip to content

Commit

Permalink
sync api by pipeline
Browse files Browse the repository at this point in the history
Signed-off-by: rokkiter <101091030+rokkiter@users.noreply.github.com>
  • Loading branch information
rokkiter committed Nov 8, 2022
1 parent c00a76d commit fdd365f
Show file tree
Hide file tree
Showing 2 changed files with 103 additions and 0 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/sync-api.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Sync Api
on:
push:
paths:
- 'staging/src/github.com/clusterpedia-io/api/*'
jobs:
sync-api:
name: Sync Api
runs-on: ubuntu-latest
env:
WORKSPACE: ${{ github.workspace }}/src/github.com/clusterpedia-io/clusterpedia
GH_TOKEN: ${{ secrets.CLUSTERPEDIA_BOT_TOKEN }}
MESSAGE: ${{ github.event.head_commit.message }}
REFTYPE: ${{ github.ref_type }}
TAGNAME: ${{ github.ref_name }}
REF: ${{ github.ref }}
defaults:
run:
working-directory: ${{ env.WORKSPACE }}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
token: ${{ secrets.CLUSTERPEDIA_BOT_TOKEN }}
path: ${{ env.WORKSPACE }}
ref: ${{ github.ref }}
fetch-depth: 0
- run: hack/sync-api.sh

74 changes: 74 additions & 0 deletions hack/sync-api.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#!/usr/bin/env bash

set -o errexit
set -o nounset
set -o pipefail

function usage() {
cat <<EOF
ENV:
RAW: current repo the branch which contain github action ${{ github_ref }}
BRANCH_NAME: current branch name
eg. BRANCH_NAME=main
GH_TOKEN: github token for api repo auth.
EOF
}

set +e; RAW=$(git branch -r --contains $REF 2>/dev/null);set -e
if [ -z $RAW ]; then
echo "the current directory is not in the clusterpedia path"
usege
exit 1
else
BRANCH_NAME=${RAW/origin\/}
if [ -z $BRANCH_NAME ]; then
echo "can not get current branch"
usage
exit 1
fi
fi

if [ -z $GH_TOKEN ]; then
echo "the github token is not in the env, please check CLUSTERPEDIA_BOT_TOKEN"
usage
exit 1
else
API_REPO="https://$GH_TOKEN@github.com/clusterpedia/api.git"
fi

TAG_MESSAGE=$(git tag -l --format="%(contents)" $TAGNAME)

install_filter_repo(){
python3 -m pip install --user git-filter-repo
}

# check tag, if exist, delete it
check_tag(){
git tag -d $TAGNAME
if [ -n "$(git ls-remote --tags origin -l $TAGNAME)" ]; then
echo "tag already exist, delete it before retag"
git push -d origin $TAGNAME
git tag -d $TAGNAME
fi
}

sync_api(){
if [ $REFTYPE == "tag" ]; then
git filter-repo --subdirectory-filter staging/src/github.com/clusterpedia-io/api --force
git remote add origin $API_REPO
check_tag
git tag $TAGNAME -a -m $TAG_MESSAGE
git push origin $TAGNAME
echo "push tag success~"
else
git filter-repo --subdirectory-filter staging/src/github.com/clusterpedia-io/api --force
git remote add origin $API_REPO
git push origin $BRANCH_NAME
echo "sync code success~"
fi
}

install_filter_repo

sync_api

0 comments on commit fdd365f

Please sign in to comment.