mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-25 19:31:44 +03:00
52 lines
1.2 KiB
Bash
Executable File
52 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# push [INTERVALSECS] - push to github CI branch, watch for a successful run, then push to master
|
|
|
|
set -e
|
|
|
|
INTERVAL="${1:-10}"
|
|
|
|
LOCALBRANCH=master
|
|
REMOTE=origin
|
|
REMOTECIBRANCH=ci
|
|
REMOTEMAINBRANCH=master
|
|
NUMRUNS=3
|
|
NUMCOMMITS=5
|
|
CISTARTDELAY=5 # between ci push and run start
|
|
MAINPUSHDELAY=5 # between run end and master push
|
|
|
|
gitlog() {
|
|
REF=$1
|
|
git log --format='%ad %h %s%d' --date=short -$NUMCOMMITS ${REF:+"$REF"}
|
|
}
|
|
|
|
runlog() {
|
|
echo "latest runs are:"
|
|
gh run list -L$NUMRUNS
|
|
}
|
|
|
|
ciwait() {
|
|
runlog
|
|
echo "waiting for CI to start..."
|
|
sleep $CISTARTDELAY
|
|
runlog
|
|
echo "waiting for CI to finish..."
|
|
ciwatch "$INTERVAL"
|
|
runlog
|
|
echo "waiting for master to notice CI success..."
|
|
sleep $MAINPUSHDELAY
|
|
}
|
|
|
|
# ensure git's output paging doesn't stop progress
|
|
export PAGER=cat
|
|
|
|
echo "latest local commits are:"
|
|
gitlog
|
|
echo "force-pushing $LOCALBRANCH to $REMOTE/$REMOTECIBRANCH"
|
|
git push -f $REMOTE $LOCALBRANCH:$REMOTECIBRANCH
|
|
ciwait
|
|
echo "pushing CI-passing $LOCALBRANCH to $REMOTE/$REMOTEMAINBRANCH"
|
|
git push $REMOTE $LOCALBRANCH:$REMOTEMAINBRANCH
|
|
echo "latest commits on $REMOTE/$REMOTEMAINBRANCH are:"
|
|
gitlog $REMOTE/$REMOTEMAINBRANCH
|
|
echo "done"
|