Normalize some more job names.
[alexxy/gromacs.git] / admin / gitlab-ci / lint.gitlab-ci.yml
1 # Repository cleanliness. Source tidiness, linting, and policy compliance.
2
3 clang-tidy:configure:
4   extends:
5     - .gromacs:base:configure
6     - .use-clang7
7   needs:
8     - job: simple-build
9       artifacts: false
10   variables:
11     BUILD_DIR: build-clang-tidy
12     CMAKE_EXTRA_OPTIONS: -DCLANG_TIDY=clang-tidy-$COMPILER_MAJOR_VERSION -DGMX_CLANG_TIDY=ON -DGMX_COMPILER_WARNINGS=ON
13     EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
14     CMAKE_GMXAPI_OPTIONS: "-DGMX_PYTHON_PACKAGE=OFF"
15   # TODO: Enable GMX_PYTHON_PACKAGE for clang-tidy when dependencies are in Docker image.
16   except:
17     variables:
18       - $GROMACS_RELEASE
19
20 clang-tidy:build:
21   extends:
22     - .gromacs:base:build
23     - .use-ccache
24     - .variables:default
25     - .use-clang7
26   stage: source-check
27   needs:
28     - job: simple-build
29       artifacts: false
30     - job: clang-tidy:configure
31       artifacts: true
32   variables:
33     BUILD_DIR: build-clang-tidy
34     EXTRA_INSTALLS: clang-tidy-$COMPILER_MAJOR_VERSION
35   except:
36     variables:
37       - $GROMACS_RELEASE
38
39 clang-format:
40   extends:
41     - .gromacs:base:build
42     - .variables:default
43     - .use-clang7
44   cache: {}
45   stage: source-check
46   when: always
47   needs:
48     - job: simple-build
49       artifacts: false
50   variables:
51     KUBERNETES_CPU_LIMIT: 1
52     KUBERNETES_CPU_REQUEST: 1
53     KUBERNETES_MEMORY_LIMIT: 2Gi
54     EXTRA_INSTALLS: clang-format-$COMPILER_MAJOR_VERSION
55   except:
56     variables:
57       - $GROMACS_RELEASE
58   script:
59     - export CLANG_FORMAT=clang-format-$COMPILER_MAJOR_VERSION
60     - admin/clang-format.sh check --rev=HEAD^ --warnings=clang-format.log
61     - grep -iq "needs formatting" clang-format.log | tee formatting.txt || true
62     - if [ -s formatting.txt ] ; then echo "clang-format.sh found issues"; exit 1; fi
63   artifacts:
64     when: on_failure
65     paths:
66       - clang-format.log
67       - formatting.txt
68
69 copyright-check:
70   extends:
71     - .gromacs:base:build
72     - .variables:default
73     - .use-clang7
74   cache: {}
75   stage: source-check
76   when: always
77   needs:
78     - job: simple-build
79       artifacts: false
80   variables:
81     KUBERNETES_CPU_LIMIT: 1
82     KUBERNETES_CPU_REQUEST: 1
83     KUBERNETES_MEMORY_LIMIT: 2Gi
84   except:
85     variables:
86       - $GROMACS_RELEASE
87   script:
88     - admin/copyright.sh check --rev=HEAD^ --warnings=copyright.log
89     - grep -iq "copyright year" copyright.log | tee years.log || true
90     - grep -iq "copyright header" copyright.log | tee headers.log || true
91     - if [[ -s years.log || -s headers.log ]] ; then
92       echo "Copyright information needs updating" ;
93       exit 1 ;
94       fi
95   artifacts:
96     when: on_failure
97     paths:
98       - copyright.log
99       - years.log
100       - headers.log
101
102 check-source:
103   extends:
104     - .variables:default
105     - .docs:build
106     - .before_script:default
107   cache: {}
108   stage: source-check
109   needs:
110     - job: simple-build
111       artifacts: false
112     - job: docs:build
113       artifacts: true
114   variables:
115     KUBERNETES_CPU_LIMIT: 1
116     KUBERNETES_CPU_REQUEST: 1
117     KUBERNETES_MEMORY_LIMIT: 2Gi
118     BUILD_DIR: build-docs
119   except:
120     variables:
121       - $GROMACS_RELEASE
122   script:
123     - cd $BUILD_DIR
124     - cmake --build . --target check-source
125     - grep -qi "error" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee doxygenError.txt || true
126     - grep -qi "warning" docs/doxygen/doxygen*log docs/doxygen/check-source.log | tee -a doxygenError.txt || true
127     - if [ -s doxygenError.txt ] ; then echo "Found errors while running doxygen"; exit 1; fi
128   artifacts:
129     name: docs-artifacts-$CI_COMMIT_REF_SLUG
130     when: always
131     expire_in: 1 week
132     paths:
133       - $BUILD_DIR/docs/doxygen/doxygen-xml.log
134       - $BUILD_DIR/docs/doxygen/check-source.log
135
136 linkchecker:
137   extends:
138     - .webpage:build
139   stage: nightly-build
140   dependencies:
141     - webpage:build
142   only:
143     - web
144     - schedules
145     - triggers
146     - merge_requests
147   except:
148     variables:
149       - $GROMACS_RELEASE
150   variables:
151     KUBERNETES_CPU_LIMIT: 1
152     KUBERNETES_CPU_REQUEST: 1
153     KUBERNETES_MEMORY_LIMIT: 2Gi
154     BUILD_DIR: build-docs
155   script:
156     - cd $BUILD_DIR
157     - linkchecker docs/html/index.html -f ../docs/linkcheckerrc -Fxml --ignore-url html-full
158       --ignore-url html-user --ignore-url html-lib --ignore-url .tar.gz --ignore-url _sources
159       -o xml
160   artifacts:
161     reports:
162       junit: $BUILD_DIR/linkchecker-out.xml