Fix mirror - take 2 #4999 #851
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Mirror | |
on: [push, delete] | |
jobs: | |
mirror: | |
if: ${{ github.repository == 'authgear/authgear-server' }} | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# Set fetch-depth: 0 to fetch all history for all branches and tags. | |
# https://github.com/actions/checkout#:~:text=Set%20fetch%2Ddepth%3A%200%20to%20fetch%20all%20history%20for%20all%20branches%20and%20tags. | |
fetch-depth: 0 | |
- name: Import GitHub Deploy Key of the mirror repository | |
env: | |
MIRROR_GITHUB_DEPLOY_KEY: ${{ secrets.MIRROR_GITHUB_DEPLOY_KEY_OURSKY }} | |
run: | | |
mkdir -p ~/.ssh | |
printf "$MIRROR_GITHUB_DEPLOY_KEY" | base64 --decode > ~/.ssh/id_ed25519 | |
chmod 600 ~/.ssh/id_ed25519 | |
if [ -e ~/.ssh/known_hosts ]; then ssh-keygen -R github.com; fi | |
ssh-keyscan github.com >> ~/.ssh/known_hosts | |
- name: Mirror | |
run: | | |
export GIT_SSH_COMMAND="ssh -v -i ~/.ssh/id_ed25519" | |
# Print the git version for debugging purpose. | |
git --version | |
# Print the output of git show-ref for debugging purpose. | |
git show-ref | |
git remote add mirror [email protected]:oursky/authgear-server.git | |
# This expansion includes refs/remotes/origin/HEAD:refs/heads/HEAD | |
# That would create a branch named HEAD in the mirror repository. | |
# I tried to use the following command to exclude HEAD | |
# | |
# git show-ref | awk '{ print $2 }' | perl -n -e 'if (/(^refs\/remotes\/origin\/(.+)$)/ ) { if ($2 != "HEAD") { print "$1:refs/heads/$2\n" } }' | xargs -x git push --tags --force --prune "[email protected]:oursky/authgear-server.git" | |
# | |
# But that command will just result in "Everything up-to-date". | |
# So I change GitHub actions to exclude the branch "HEAD" instead. | |
# At least we will not receive a GitHub actions error saying HEAD is not a valid branch name. | |
git push --tags --force --prune mirror "refs/remotes/origin/*:refs/heads/*" | |
- name: Clean up | |
if: ${{ always() }} | |
run: | | |
rm -f ~/.ssh/id_ed25519 | |
git remote remove mirror |