Merge "Add package lists to job logs"
[releng/global-jjb.git] / docs / jjb / lf-macros.rst
1 #############
2 Global Macros
3 #############
4
5 Builders
6 ========
7
8 lf-fetch-dependent-patches
9 --------------------------
10
11 Fetch all patches provided via comment trigger
12
13 This macro will fetch all patches provided via comment trigger and will
14 create a list of projects from those patches via environment variable
15 called DEPENDENCY_BUILD_ORDER which can be used if necessary to build
16 projects in the specified order. The order is determined by first patch
17 instance for a project in the patch list.
18
19 lf-infra-create-netrc
20 ---------------------
21
22 Create a ~/.netrc file from a Maven settings.xml
23
24 :Required parameters:
25
26     :server-id: The id of a server as defined in settings.xml.
27
28 :Optional parameters:
29
30     :ALT_NEXUS_SERVER: URL of custom nexus server.
31         If set this will take precedence.
32         Use this to point at nexus3.$PROJECTDOMAIN
33         for example.
34
35 lf-infra-deploy-maven-file
36 --------------------------
37
38 Deploy files to a repository.
39
40 :Required parameters:
41
42     :global-settings-file: Global settings file to use.
43     :group-id: Group ID of the repository.
44     :maven-repo-url: URL of a Maven repository to upload to.
45     :mvn-version: Version of Maven to use.
46     :repo-id: Repository ID
47     :settings-file: Maven settings file to use.
48     :upload-files-dir: Path to directory containing one or more files
49
50 lf-infra-docker-login
51 ---------------------
52
53 Login into a custom hosted docker registry and / or docker.io
54
55 The Jenkins system should have the following global variables defined
56
57 :Environment variables:
58
59     :DOCKER_REGISTRY: The DNS address of the registry (IP or FQDN)
60         ex: nexus3.example.com (GLOBAL variable)
61
62     :REGISTRY_PORTS: Required if DOCKER_REGISTRY is set. Space separated list
63         of the registry ports to login to. ex: 10001 10002 10003 10004
64         (GLOBAL variable)
65
66     :DOCKERHUB_EMAIL: If this variable is set then an attempt to login to
67         DockerHub (docker.io) will be also made. It should be set to the email
68         address for the credentials that will get looked up. Only _one_
69         credential will ever be found in the maven settings file for DockerHub.
70         (GLOBAL variable)
71
72 lf-infra-gpg-verify-git-signature
73 ---------------------------------
74
75 Verify gpg signature of the latest commit message in $WORKSPACE.
76 This command assumes that $WORKSPACE is a git repo.
77
78 lf-infra-packer-build
79 ---------------------
80
81 Run `packer build` to build system images.
82
83 lf-infra-packer-validate
84 ------------------------
85
86 Run `packer validate` to verify packer configuration.
87
88 :Required parameters:
89
90     :packer-cloud-settings: Cloud configuration file. Loaded on the build
91         server as CLOUDENV environment variable.
92     :packer-version: Version of packer to use.
93
94 lf-infra-push-gerrit-patch
95 --------------------------
96
97 Push a change through a Jenkins job to a Gerrit repository in an automated
98 way using git-review.
99
100 :Required parameters:
101
102     :gerrit-commit-message: Commit message to assign.
103     :gerrit-host: Gerrit hostname.
104     :gerrit-topic: Gerrit topic.
105     :gerrit-user: Gerrit user-id used for submitting the change.
106     :reviewers-email: Reviewers email. Space-separated list of
107         email addresses to CC on the patch.
108     :project: Gerrit project name.
109
110 .. _lf-infra-ship-logs:
111
112 lf-infra-ship-logs
113 ------------------
114
115 Gather and deploy logs to a log server.
116
117 lf-infra-sysstat
118 ----------------
119
120 Retrieves system stats.
121
122 lf-jacoco-nojava-workaround
123 ---------------------------
124
125 Workaround for Jenkins not able to find Java in JaCoCo runs.
126
127 lf-maven-install
128 ----------------
129
130 Call maven-target builder with a goal of --version to force Jenkins to
131 install the need provided version of Maven. This is needed for any shell scripts
132 that want to use Maven.
133
134 :Required parameters:
135
136     :mvn-version: Version of Maven to install.
137
138 lf-pip-install
139 --------------
140
141 Call pip install to install packages into a virtualenv located in
142 /tmp/v/VENV
143
144 .. note:: The first package listed in PIP_PACKAGES is used as the VENV name.
145
146 .. _lf-provide-maven-settings:
147
148 lf-provide-maven-settings
149 -------------------------
150
151 Push a global settings and user settings maven files to the build node.
152
153 lf-provide-maven-settings-cleanup
154 ---------------------------------
155
156 Cleanup maven settings.xml configuration. This should be called at the end of
157 any macros that calles the
158 :ref:`lf-provide-maven-settings <lf-provide-maven-settings>` macro.
159
160 lf-rtd-trigger-build
161 --------------------
162
163 Script to trigger a build on http://readthedocs.org
164
165 lf-rtd-verify
166 -------------
167
168 ReadTheDocs verify script.
169
170 lf-infra-provide-docker-cleanup
171 -------------------------------
172
173 Forcibly removes all of the docker images.
174
175 Parameters
176 ==========
177
178 lf-infra-maven-parameters
179 -------------------------
180
181 Provides parameters needed by Maven. Should be used by any jobs that need to
182 call the mvn cli.
183
184 lf-infra-parameters
185 -------------------
186
187 Standard parameters used in the LF CI environments. Gerrit variables are
188 not used by GitHub projects, but defining them is not harmful. Should be used
189 in every job template.
190
191 lf-infra-node-parameters
192 ------------------------
193
194 Provides parameters needed by NodeJS and NPM. Should be used by any jobs that
195 need to run NodeJS or NPM.
196
197 lf-infra-tox-parameters
198 -----------------------
199
200 Provides parameters needed by python-tox. Should be used by any jobs that need
201 to run `tox <https://tox.readthedocs.io>`.
202
203 Properties
204 ==========
205
206 lf-infra-properties
207 -------------------
208
209 Configures the build-discarder plugin for Jenkins with the recommended lf-infra
210 settings. Should be used in all job-templates.
211
212 Publishers
213 ==========
214
215 lf-jacoco-report
216 ----------------
217
218 Provides basic configuration for the JaCoCo plugin.
219
220 lf-infra-publish
221 ----------------
222
223 Provides basic lf-infra recommended publisher configurations which should be
224 used in all job templates. This primary objective of this trigger is to
225 gather build logs and copy them to a log server.
226
227 SCM
228 ===
229
230 lf-infra-gerrit-scm
231 -------------------
232
233 Basic SCM configuration for Gerrit based projects.
234
235 lf-infra-github-scm
236 -------------------
237
238 Basic SCM configuration for GitHub based projects.
239
240 On the `branch` variable you can assign `$sha1` or `$ghprbActualCommit`
241 as the value.  This will require that the job be triggered via
242 the GHPRB plugin and not manually.
243
244 Triggers
245 ========
246
247 lf-infra-github-pr-trigger
248 --------------------------
249
250 Provides configuration for a GitHub PR Trigger.
251
252 Wrappers
253 ========
254
255 lf-infra-wrappers
256 -----------------
257
258 Provides lf-infra recommended wrappers which should be used in every
259 job-template.
260
261 This wrapper requires that a managed file called `npmrc` exists in the Jenkins.  The main use
262 case here is to point to a npm proxy, on Nexus for example.
263 The type of the file should be "Custom file".  You can set various npmrc settings in it.
264 Documentation on npm configuration can be found at https://docs.npmjs.com/files/npmrc.
265 If you are not using npm then it is fine for the file to be empty.
266
267 Example npmrc:
268
269 .. code-block:: bash
270
271    registry=https://nexus3.onap.org/repository/npm.public/