-
Notifications
You must be signed in to change notification settings - Fork 3
/
.gitlab-ci.yml
159 lines (149 loc) · 5.48 KB
/
.gitlab-ci.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
stages:
- test
- build
- deploy
default:
image: $TOOLCHAIN_DOCKER_IMAGE
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
DOCKER_IMAGE: scm.cms.hu-berlin.de:4567/berlinunited/tools/linuxtoolchain
# Note that reopen MR do not trigger pipeline execution: https://gitlab.com/gitlab-org/gitlab/-/issues/31116
.cppcheck:
stage: test
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "trigger"'
- if: $CI_COMMIT_BRANCH == "develop"
script:
- mkdir -p $CI_COMMIT_REF_NAME
- cppcheck -j 4 --enable=all --inconclusive --force --xml --xml-version=2 . 2> cppcheck-result.xml
- cppcheck-htmlreport --file=cppcheck-result.xml --report-dir=$CI_COMMIT_REF_NAME --source-dir=.
- python3 -m pip install -U cppcheck_codequality
- cppcheck-codequality --input-file=cppcheck-result.xml --output-file=cppcheck.json
artifacts:
paths:
- $CI_COMMIT_REF_NAME
reports:
codequality: cppcheck.json
compile_local_clang:
stage: build
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "trigger"'
- if: $CI_COMMIT_BRANCH == "develop"
script:
- cd NaoTHSoccer/Make
- export CC=$(which clang)
- export CXX=$(which clang++)
- export LD=$(which ld.lld)
- premake5 gmake2 --protoc
- cd ../build/gmake2
- make all -j 4
artifacts:
expire_in: 4 weeks
name: "local_gcc"
paths:
- NaoTHSoccer/dist/
compile_nao_clang:
stage: build
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "trigger"'
- if: $CI_COMMIT_BRANCH == "develop"
script:
- cd NaoTHSoccer/Make
- echo -en "NAO_CTC = \"/naoth/toolchain/toolchain_nao_ubuntu\"\n" > projectconfig.user.lua
- echo -en "if PLATFORM == \"Nao\" then\n _OPTIONS[\"crosscompiler\"] = \"clang\"\nend\n" >> projectconfig.user.lua
- clang++ --version
- ./compileGame.sh -j 4
- ./compileLoLaAdaptor.sh -j 4
artifacts:
expire_in: 4 weeks
name: "nao_clang"
paths:
- NaoTHSoccer/dist/
# we include the config folder of this job because it contains the built behavior, not sure
# what would happen if we included the config folder in the other job as well
- NaoTHSoccer/Config/
# this job must be named pages
pages:
stage: deploy
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "trigger"'
- if: $CI_COMMIT_BRANCH == "develop"
script:
# handle generation of the html folder structure for cppcheck output
- ./Utils/CI-Tools/pages.sh
# generate a index.html listing all the subfolders
- cd public/ && tree -L 1 -H . -o index.html && cd ..
artifacts:
paths:
- public
publish_naoth_docker:
stage: deploy
image: docker:latest
services:
- docker:dind
dependencies:
# select the job you want the artifacts from
# https://docs.gitlab.com/ee/ci/yaml/#dependencies
- compile_local_clang
- compile_nao_clang
rules:
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop"'
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "trigger"'
- if: $CI_COMMIT_BRANCH == "develop"
script:
# getting docker-tag friendly version of the current branch name: replace / with underscore
- branchname=`echo "${CI_COMMIT_REF_NAME}" | sed "s/\//_/g"`
# log into the gitlab registry with a ci token
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN scm.cms.hu-berlin.de:4567
# pull the same image we used in the jobs that built naoth binaries
- docker pull $TOOLCHAIN_DOCKER_IMAGE
# creates a container inside this job container based on the image
- docker create --name temp_container $TOOLCHAIN_DOCKER_IMAGE
# copy the current folder (always the repo this file is in) inside the container
- docker cp ./ temp_container:/naoth/repo/
# copy the binaries from the artifact inside the repo folder inside the new container
- docker cp NaoTHSoccer/dist temp_container:/naoth/repo/
# copy the configs from the artifacts to the repo folder
- docker cp NaoTHSoccer/Config/ temp_container:/naoth/repo/
# make an image out of the container
- docker commit temp_container scm.cms.hu-berlin.de:4567/berlinunited/naoth-2020:$branchname
# push the image with the branchname as tag
- docker push scm.cms.hu-berlin.de:4567/berlinunited/naoth-2020:$branchname
.publish_naoth_python_gitlab:
# run the publish command if the PUBLISH_NAOTH flag is set or the commit changes the develop with changes in the naoth package
stage: deploy
rules:
- if: '$PUBLISH_NAOTH'
- if: $CI_COMMIT_BRANCH == "develop"
changes:
- Utils/py/naoth/**/*
dependencies: [] # don't download any artifacts to this job for speed
script:
- cd NaoTHSoccer/Make
- premake5 gmake2 --protoc
- cd ../../Utils/py/naoth
- ./package_naoth.sh
publish_naoth_python_pypi:
# run the publish command if the PUBLISH_NAOTH flag is set or the commit changes the develop with changes in the naoth package
stage: deploy
rules:
- if: '$PUBLISH_NAOTH'
- if: $CI_COMMIT_BRANCH == "develop"
changes:
- Utils/py/naoth/**/*
dependencies: [] # don't download any artifacts to this job for speed
script:
- cd NaoTHSoccer/Make
- premake5 gmake2 --protoc
- cd ../../Utils/py/naoth
- ./package_naoth_pypi.sh