-
Notifications
You must be signed in to change notification settings - Fork 2
176 lines (152 loc) · 6.09 KB
/
build.yml
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
name: Pull Sources from Manifest and build
on:
push:
branches:
- '*'
pull_request:
branches:
- '*'
env:
CI_MANIFEST_NAME: default.xml
jobs:
pull_sources:
runs-on: oniro-runner
container:
image: swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2
steps:
- uses: actions/checkout@v4
- run: apt update
- name: Set up manifest workspace
run: |
# Tell git this repository is safe even if cloned with a different uid
git config --global --add safe.directory $GITHUB_WORKSPACE
# The repo tool seems to insist on having a branch checked out or
# something like that... Without this we get errors like
# fatal: couldn't find remote ref refs/heads/master
cd $GITHUB_WORKSPACE
git checkout -b master
# The repo command does not like shallow repos
if [ "$(git rev-parse --is-shallow-repository)" = "true" ] ; then
git fetch --unshallow ;
fi
- name: Cache restore gitee repositories
uses: actions/cache/restore@v4
with:
path: |
/bin/repo
/__w/repo-mirrors/developtools_smartperf_host.git
/__w/repo-mirrors/developtools_profiler.git
/__w/repo-mirrors/docs.git
/__w/repo-mirrors/global_i18n.git
/__w/repo-mirrors/multimedia_av_codec.git
/__w/repo-mirrors/update_updater.git
/__w/repo-mirrors/xts_acts.git
/__w/repo-mirrors/third_party_mindspore.git
/__w/repo-mirrors/third_party_vk-gl-cts.git
/__w/repo-mirrors/device_board_hihope.git
/__w/repo-mirrors/device_soc_rockchip.git
key:
cache-repos-${{ hashFiles('**/*.xml') }}
restore-keys:
cache-repos-
- name: Set up git-repo
run: |
if [ ! -f /bin/repo ]; then
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o /bin/repo
chmod a+x /bin/repo
fi
- name: Sync mirror
run: |
# Create/maintain a mirror of all manifest repositories in runner
# persistent storage, and use that as reference when initializing the
# build repo, effectively reducing the time spent fetching git repos to
# almost nothing.
#
# If for some reason, the repo mirror becomes corrupted, a pipeline with
# $REBUILD_REPO_MIRROR set to a non-empty value will remove the entire
# mirror, and rebuild it from scratch.
#
# Note the use of fd 9 to hold a lock while accessing the $REPO_MIRROR
# path, so we can handle parallel jobs. First we open the lock file on fd
# 9, then we lock it, and close/unlock it after repo sync.
REPO_MIRROR="/__w/repo-mirrors" ;
mkdir -p $(dirname $REPO_MIRROR) ;
exec 9>$REPO_MIRROR.lock ; flock 9 ;
if [ -n "$REBUILD_REPO_MIRROR" ] ; then
rm -rf "$REPO_MIRROR" ;
fi ;
if [ ! -e "$REPO_MIRROR" ] ; then
echo "Creating new repo mirror @ $REPO_MIRROR" ;
mkdir -p "$REPO_MIRROR" ;
pushd "$REPO_MIRROR" ;
repo init -u "$GITHUB_WORKSPACE" -m "$CI_MANIFEST_NAME" --mirror ;
else
echo "Reusing repo mirror @ $REPO_MIRROR" ;
pushd "$REPO_MIRROR" ;
repo init -u "$GITHUB_WORKSPACE" -m "$CI_MANIFEST_NAME";
fi ;
repo sync --no-repo-verify --force-sync -v;
popd ;
- name: Cache save gitee repositories
uses: actions/cache/save@v4
with:
path: |
/bin/repo
/__w/repo-mirrors/developtools_smartperf_host.git
/__w/repo-mirrors/developtools_profiler.git
/__w/repo-mirrors/docs.git
/__w/repo-mirrors/global_i18n.git
/__w/repo-mirrors/multimedia_av_codec.git
/__w/repo-mirrors/update_updater.git
/__w/repo-mirrors/xts_acts.git
/__w/repo-mirrors/third_party_mindspore.git
/__w/repo-mirrors/third_party_vk-gl-cts.git
/__w/repo-mirrors/device_board_hihope.git
/__w/repo-mirrors/device_soc_rockchip.git
key:
cache-repos-${{ hashFiles('**/*.xml') }}
- name: Fetch sources
run: |
# Create the build environment in a repo subdir
mkdir repo && cd repo
repo init \
--reference /__w/repo-mirrors \
--manifest-url "$GITHUB_WORKSPACE" \
--manifest-name "$CI_MANIFEST_NAME"
repo sync --no-repo-verify --force-sync -v
repo forall -c 'git lfs pull'
# Release repo mirror lock if held
if [ -n "$REPO_MIRROR_ARG" ] ; then exec 9>&- ; fi
- name: Cache restore OpenHarmony prebuilts
uses: actions/cache/restore@v4
with:
path: |
/__w/manifest/manifest/openharmony_prebuilts
key:
cache-openharmony-prebuilts-${{ hashFiles('**/*.xml') }}
restore-keys:
cache-openharmony-prebuilts-
- name: Download prebuilts
run: |
cd repo && ./build/prebuilts_download.sh
- name: Cache save OpenHarmony prebuilts
uses: actions/cache/save@v4
with:
path: |
/__w/manifest/manifest/openharmony_prebuilts
key:
cache-openharmony-prebuilts-${{ hashFiles('**/*.xml') }}
- name: ccache
uses: hendrikmuhs/[email protected]
- name: Build
run: |
# a shared ccache is used to speed up the build
# the build searches for the ccache in ~/.ccache but our ccache is
# located in $GITHUB_WORKSPACE/.ccache
ln -sf $GITHUB_WORKSPACE/.ccache ~/.ccache
cd repo && ./build.sh --ccache --product-name rk3568
- name: Archive board image artifacts
uses: actions/upload-artifact@v3
with:
name: rk3568_${{ github.ref_name }}
path: /__w/manifest/manifest/repo/out/rk3568/packages/phone/images/*