-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathsync-build-ingest.sh
executable file
·94 lines (79 loc) · 2.82 KB
/
sync-build-ingest.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/env bash
## Sync NuttX Mirror, Build NuttX Mirror and Ingest GitHub Actions Logs
## (1) Watch for Updates to NuttX Repo
## (2) Discard "Enable macOS" commit from NuttX Mirror
## (3) Sync NuttX Mirror with NuttX Repo
## (4) Build NuttX Mirror and Ingest GitHub Actions Logs
## (5) Repeat forever
## https://lupyuen.github.io/articles/ci4
set -e # Exit when any command fails
set -x # Echo commands
## Get the Script Directory
script_path="${BASH_SOURCE}"
script_dir="$(cd -P "$(dirname -- "${script_path}")" >/dev/null 2>&1 && pwd)"
tmp_dir=/tmp/sync-build-ingest
rm -rf $tmp_dir
mkdir $tmp_dir
cd $tmp_dir
git clone https://github.com/apache/nuttx upstream
git clone ssh://[email protected]/NuttX/nuttx downstream
set +x ; echo "**** Waiting for Build to Complete then Ingest GitHub Actions Logs..." ; set -x
pushd $script_dir/../ingest-nuttx-builds
./github.sh ## https://github.com/lupyuen/ingest-nuttx-builds/blob/main/github.sh
popd
## Repeat forever
for (( ; ; )); do
set +x ; echo "**** Checking Downstream Commit: Enable macOS Builds..." ; set -x
pushd downstream
git pull
downstream_msg=$(git log -1 --format="%s")
if [[ "$downstream_msg" != "Enable macOS Builds"* ]]; then
set +x ; echo "**** ERROR: Expected Downstream Commit to be 'Enable macOS Builds' but found: $downstream_msg" ; set -x
exit 1
fi
popd
set +x ; echo "**** Watching for Updates to NuttX Repo..." ; set -x
## Get the Latest Upstream Commit.
pushd upstream
git pull
upstream_date=$(git log -1 --format="%cI")
git --no-pager log -1
popd
## Get the Latest Downstream Commit (skip the "Enable macOS Builds")
pushd downstream
downstream_date=$(git log -1 --format="%cI" HEAD~1)
git --no-pager log -1 HEAD~1
popd
## If No Updates: Try again
if [[ "$upstream_date" == "$downstream_date" ]]; then
set +x ; echo "**** Waiting for upstream updates..." ; set -x
date ; sleep 900
continue
fi
set +x ; echo "**** Discarding 'Enable macOS' commit from NuttX Mirror..." ; set -x
pushd downstream
git --no-pager log -1
git reset --hard HEAD~1
git status
git push -f
popd
sleep 10
set +x ; echo "**** Syncing NuttX Mirror with NuttX Repo..." ; set -x
gh repo sync NuttX/nuttx --force
pushd downstream
git pull
git status
git --no-pager log -1
popd
sleep 10
set +x ; echo "**** Building NuttX Mirror..." ; set -x
$script_dir/enable-macos-windows.sh ## https://github.com/lupyuen/nuttx-release/blob/main/enable-macos-windows.sh
set +x ; echo "**** Waiting for Build to start..." ; set -x
date ; sleep 900
set +x ; echo "**** Waiting for Build to Complete then Ingest GitHub Actions Logs..." ; set -x
pushd $script_dir/../ingest-nuttx-builds
./github.sh ## https://github.com/lupyuen/ingest-nuttx-builds/blob/main/github.sh
popd
set +x ; echo "**** Done!" ; set -x
date ; sleep 900
done