Skip to content

Commit 713f3bf

Browse files
committed
Add .gitlab-ci.yml to support CI/CD
1 parent 6fbc606 commit 713f3bf

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed

.gitlab-ci.yml

+130
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
stages:
2+
- build
3+
- private_deploy
4+
- test
5+
6+
image: ${CI_DOCKER_REGISTRY}/llvm-build:1-6ff17268
7+
8+
variables:
9+
10+
CONF_TARGET: "xtensa-esp32-elf"
11+
CLANG_XTENSA_TOOLCHAIN: "${CONF_TARGET}-clang"
12+
PLATFORM_NAME: "linux-amd64"
13+
14+
ARCHIVE_TOOL: "tar cJf"
15+
UNARCHIVE_TOOL: "tar xf"
16+
ARCHIVE_EXT: "tar.xz"
17+
18+
.use_ci_tools: &use_ci_tools |
19+
curl -sSL ${CIT_LOADER_URL} -o cit_loader.sh && sh cit_loader.sh
20+
source citools/import_functions
21+
22+
.add_gitlab_key: &add_gitlab_key |
23+
cit_add_ssh_key "${GITLAB_KEY}"
24+
25+
before_script:
26+
- *use_ci_tools
27+
- *add_gitlab_key
28+
29+
# Prepare release name/number
30+
.get_release_name: &get_release_name |
31+
# using annotated tags
32+
REL_NUM=$(git describe --abbrev=7)
33+
REL_SFX="llvm10_0_1"
34+
REL_NAME=${CONF_TARGET}-${REL_SFX}-${REL_NUM}-${PLATFORM_NAME}
35+
ARCHIVE_NAME=${REL_NAME}.${ARCHIVE_EXT}
36+
echo "CONF_TARGET: $CONF_TARGET"
37+
echo "PLATFORM_NAME: $PLATFORM_NAME"
38+
echo "REL_NUM: $REL_NUM"
39+
echo "REL_NAME: $REL_NAME"
40+
echo "ARCHIVE_NAME: $ARCHIVE_NAME"
41+
42+
.build_clang: &build_clang |
43+
mkdir build
44+
cd build
45+
cmake ../llvm -DLLVM_TARGETS_TO_BUILD="X86" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=Xtensa -DCMAKE_BUILD_TYPE=Release -DLLVM_EXTERNAL_CLANG_SOURCE_DIR=../clang
46+
cmake --build . -- -j8
47+
cmake --build . --target check-llvm
48+
cd ..
49+
50+
# Get an existing crosstool-ng build for esp32
51+
.get_gcc_toolchain: &get_gcc_toolchain |
52+
wget https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp-2019r2-linux-amd64.tar.gz
53+
tar -xf xtensa-esp32-elf-gcc8_2_0-esp-2019r2-linux-amd64.tar.gz
54+
mv xtensa-esp32-elf ${CLANG_XTENSA_TOOLCHAIN}
55+
56+
.build_clang_wrappers: &build_clang_wrappers |
57+
git clone ${GITLAB_SSH_SERVER}/${XTENSA_CLANG_TOOLCHAIN_REPO}
58+
cd xtensa-clang-toolchain
59+
make build_clang_wrap
60+
cd ..
61+
62+
# Pack the toolchain
63+
.package_toolchain: &package_toolchain |
64+
${ARCHIVE_TOOL} ${ARCHIVE_NAME} ${CLANG_XTENSA_TOOLCHAIN}/
65+
mkdir -p dist
66+
mv ${ARCHIVE_NAME} dist/
67+
echo "${ARCHIVE_NAME}" > dist/file_${PLATFORM_NAME}_${CONF_TARGET}
68+
69+
build_clang_toolchain:
70+
stage: build
71+
artifacts:
72+
paths:
73+
- dist/
74+
when: always
75+
expire_in: 10 day
76+
script:
77+
- *get_release_name
78+
- *build_clang_wrappers
79+
- *build_clang
80+
- *get_gcc_toolchain
81+
- mv build/bin/clang ${CLANG_XTENSA_TOOLCHAIN}/bin/
82+
- mv build/bin/clang++ ${CLANG_XTENSA_TOOLCHAIN}/bin/
83+
- mv build/bin/clang-10 ${CLANG_XTENSA_TOOLCHAIN}/bin/
84+
- mv build/bin/clang-cl ${CLANG_XTENSA_TOOLCHAIN}/bin/
85+
- mv build/bin/clang-cpp ${CLANG_XTENSA_TOOLCHAIN}/bin/
86+
- mv build/bin/scan-build ${CLANG_XTENSA_TOOLCHAIN}/bin/
87+
- mv build/libexec/* ${CLANG_XTENSA_TOOLCHAIN}/libexec/
88+
- mv build/lib/clang ${CLANG_XTENSA_TOOLCHAIN}/lib/
89+
- mv xtensa-clang-toolchain/xtensa-esp32-elf-clang* ${CLANG_XTENSA_TOOLCHAIN}/bin/
90+
- *package_toolchain
91+
92+
testsuite:
93+
stage: test
94+
dependencies:
95+
- build_clang_toolchain
96+
script:
97+
- *get_release_name
98+
- ${UNARCHIVE_TOOL} dist/${ARCHIVE_NAME}
99+
100+
# getting testsuit
101+
- git clone -b feature/ci_llvm_multitarget --depth 1 $GITLAB_SSH_SERVER/idf/llvm-xtensa-testsuite.git
102+
103+
# preparing testsuit
104+
- export PATH=$PATH:${PWD}/${CLANG_XTENSA_TOOLCHAIN}/bin/
105+
- cd llvm-xtensa-testsuite
106+
107+
# qemu
108+
- ./qemu_esp32_install.sh
109+
110+
# run testsuite for esp32
111+
- ./run_esp32_tests.sh
112+
113+
upload_to_http:
114+
stage: private_deploy
115+
when: manual
116+
allow_failure: true
117+
tags: [ "deploy", "shiny" ]
118+
variables:
119+
# force the fetch strategy to clean old archives up in dist/ dir
120+
GIT_STRATEGY: fetch
121+
before_script:
122+
- *use_ci_tools
123+
script:
124+
- cit_add_ssh_key "${HTTP_UPLOAD_KEY}"
125+
# List of archives in dist/
126+
- FILES=$(find dist -name file_\* -exec cat {} \+)
127+
- cd dist
128+
- scp ${FILES} ${HTTP_UPLOAD_DIR}/ct-ng/llvm-builds
129+
# Show info
130+
- echo -e "\nArchives were published there:\n\n$(for n in ${FILES}; do echo "${HTTP_PUBLIC_DIR}/ct-ng/llvm-builds/${n}"; done)\n"

0 commit comments

Comments
 (0)