Reorganize template definition structure
[releng/global-jjb.git] / jjb / lf-python-jobs.yaml
1 ---
2 - job-group:
3     name: '{project-name}-python-jobs'
4
5     # This job group contains all the recommended jobs that should be deployed
6     # for any project ci that is using Gerrit.
7
8     jobs:
9       - gerrit-tox-verify
10
11 - job-group:
12     name: '{project-name}-github-python-jobs'
13
14     # This job group contains all the recommended jobs that should be deployed
15     # for any project ci that is using GitHub.
16
17     jobs:
18       - github-tox-verify
19
20 ##############
21 # Tox Verify #
22 ##############
23
24 - lf_tox_verify: &lf_tox_verify
25     name: lf-tox-verify
26
27     # Required Variables:
28     #     branch:    git branch (default: master)
29     #     tox-dir:   directory containing the project's tox.ini relative to
30     #                the workspace. Empty works if tox.ini is at project root.
31
32     project-type: freestyle
33     node: '{build-node}'
34     concurrent: true
35
36     ######################
37     # Default parameters #
38     ######################
39
40     branch: master
41     build-timeout: 10
42     git-url: '$GIT_URL/$GERRIT_PROJECT'
43     stream: master
44     submodule-recursive: true
45     tox-dir: ''
46     tox-envs: ''
47
48     #####################
49     # Job Configuration #
50     #####################
51
52     properties:
53       - lf-infra-properties:
54           build-days-to-keep: 7
55
56     parameters:
57       - lf-infra-parameters:
58           project: '{project}'
59           branch: '{branch}'
60           stream: '{stream}'
61       - lf-infra-tox-parameters:
62           tox-dir: '{tox-dir}'
63           tox-envs: '{tox-envs}'
64
65     wrappers:
66       - lf-infra-wrappers:
67           build-timeout: '{build-timeout}'
68           jenkins-ssh-credential: '{jenkins-ssh-credential}'
69
70     builders:
71       - shell: !include-raw-escape:
72           # Workaround issue where the tox run later breaks the lftools virtualenv.
73           # Without running the install first the run in the publisher will fail
74           # due to missing lftools because it gets installed into a tox venv.
75           - ../shell/lftools-install.sh
76       - shell: !include-raw-escape:
77           - ../shell/tox-install.sh
78           - ../shell/tox-run.sh
79
80     publishers:
81       - lf-infra-publish
82
83 - job-template:
84     # Python projects typically use tox to run testing.
85     name: '{project-name}-tox-verify-{stream}'
86     id: gerrit-tox-verify
87     <<: *lf_tox_verify
88
89     ######################
90     # Default parameters #
91     ######################
92
93     gerrit_verify_triggers:
94       - patchset-created-event:
95           exclude-drafts: false
96           exclude-trivial-rebase: false
97           exclude-no-code-change: false
98       - draft-published-event
99       - comment-added-contains-event:
100           comment-contains-value: recheck$
101
102     #####################
103     # Job Configuration #
104     #####################
105
106     scm:
107       - lf-infra-gerrit-scm:
108           jenkins-ssh-credential: '{jenkins-ssh-credential}'
109           git-url: '{git-url}'
110           refspec: '$GERRIT_REFSPEC'
111           branch: '$GERRIT_BRANCH'
112           submodule-recursive: '{submodule-recursive}'
113           choosing-strategy: gerrit
114
115     triggers:
116       - gerrit:
117           server-name: '{gerrit-server-name}'
118           trigger-on: '{obj:gerrit_verify_triggers}'
119           projects:
120             - project-compare-type: ANT
121               project-pattern: '{project}'
122               branches:
123                 - branch-compare-type: ANT
124                   branch-pattern: '**/{branch}'
125
126 - job-template:
127     # Python projects typically use tox to run testing.
128     name: '{project-name}-tox-verify-{stream}'
129     id: github-tox-verify
130     <<: *lf_tox_verify
131
132     properties:
133       - github:
134           url: '{git-url}/{github-org}/{project}'
135
136     scm:
137       - lf-infra-github-scm:
138           url: '{git-clone-url}{github-org}/{project}'
139           refspec: '+refs/pull/*:refs/remotes/origin/pr/*'
140           branch: '{branch}'
141           submodule-recursive: '{submodule-recursive}'
142           choosing-strategy: default
143           jenkins-ssh-credential: '{jenkins-ssh-credential}'
144
145     triggers:
146       - github-pull-request:
147           trigger-phrase: '^recheck$'
148           only-trigger-phrase: false
149           status-context: 'JJB Verify'
150           permit-all: true
151           github-hooks: true
152           auto-close-on-fail: false