diff --git a/.github/workflows/graybox-sync-repos.yml b/.github/workflows/graybox-sync-repos.yml new file mode 100644 index 0000000..de8f046 --- /dev/null +++ b/.github/workflows/graybox-sync-repos.yml @@ -0,0 +1,76 @@ +name: Graybox Repo Sync + +on: + push: + branches: + - stage + - main + workflow_dispatch: + inputs: + syncBranch: + description: 'Branch to sync' + required: true + default: 'stage' + type: choice + options: + - 'stage' + - 'main' + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Generate a token + id: generate_token + uses: actions/create-github-app-token@v1 + with: + app-id: ${{ secrets.FG_SYNC_APP_ID }} + private-key: ${{ secrets.FG_SYNC_APP_PRIVATE_KEY }} + owner: ${{ github.repository_owner }} + repositories: "federal-graybox" + + - name: Checkout Repo + uses: actions/checkout@v2 + with: + persist-credentials: false + ref: ${{ inputs.syncBranch || github.ref_name }} + + - name: Clone Graybox Repository and Checkout Stage Branch + run: | + git clone https://github.com/adobecom/federal-graybox.git ../federal-graybox + cd ../federal-graybox + git checkout $GB_SYNC_BRANCH + echo "federal-graybox branch" + git branch + cd ../federal + echo "federal branch" + git branch + env: + GB_SYNC_BRANCH: ${{ inputs.syncBranch || github.ref_name }} + + - name: Overwrite graybox repo files with latest from source repo + run: | + rsync -av --exclude='fstab.yaml' --exclude='.github' --exclude='.kodiak' --exclude='.git' --exclude='.idea' --exclude='.husky' --exclude='.vscode' --exclude='tools/sidekick/config.json' ./ ../federal-graybox/ + + - name: Commit and Push Changes to Graybox Repository + run: | + cd ../federal-graybox + echo "federal-graybox branch" + git branch + git config user.email "$FG_SYNC_BOT_EMAIL" + git config user.name "milo-repo-sync[bot]" + git status + if [[ -n $(git status -s) ]]; then + git remote set-url origin https://oauth2:$GITHUB_TOKEN@github.com/adobecom/federal-graybox.git + git remote -v + git add . + git commit -m "Syncing federal to federal-graybox" + git push origin $GB_SYNC_BRANCH --force + echo ":heavy_check_mark: Syncing branch $GB_SYNC_BRANCH on federal to federal-graybox completed successfully." >> $GITHUB_STEP_SUMMARY + else + echo ":heavy_minus_sign: No changes detected on branch $GB_SYNC_BRANCH, nothing to sync." >> $GITHUB_STEP_SUMMARY + fi + env: + GITHUB_TOKEN: ${{ steps.generate_token.outputs.token }} + FG_SYNC_BOT_EMAIL: ${{ secrets.FG_SYNC_BOT_EMAIL }} + GB_SYNC_BRANCH: ${{ inputs.syncBranch || github.ref_name }} diff --git a/fstab.yaml b/fstab.yaml index a5962f6..836443f 100644 --- a/fstab.yaml +++ b/fstab.yaml @@ -1,5 +1,6 @@ # Notes: # +# # 1. The URL should be human readable as a path. It should not be a hash. # 2. Google Drive is no longer allowed for production Adobe projects.