blob: fb94051c8bee3a22addadebe170b477d618aed9d [file] [log] [blame]
Serge Bazanski6feb7462021-05-18 15:49:15 +02001// This is a 'Jenkinsfile'-style declarative 'Pipeline' definition. It is
2// executed by Jenkins for presubmit checks, ie. checks that run against an
3// open Gerrit change request.
4
5pipeline {
6 agent none
Serge Bazanski3bb23212021-08-24 16:27:21 +02007 options {
Tim Windelschmidta16e6f92025-07-16 23:48:18 +02008 disableConcurrentBuilds(abortPrevious: true)
9 parallelsAlwaysFailFast()
Serge Bazanski3bb23212021-08-24 16:27:21 +020010 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020011 stages {
Tim Windelschmidta16e6f92025-07-16 23:48:18 +020012 stage('Gazelle') {
13 agent {
14 node {
15 label ""
16 customWorkspace '/home/ci/monogon'
17 }
18 }
19 steps {
20 gerritCheck checks: ['jenkins:gazelle': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
21 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
22 sh "git clean -fdx -e '/bazel-*'"
23 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci mod tidy --lockfile_mode=update"
24 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci run //:tidy"
25 }
26 post {
27 always {
28 script {
29 def diff = sh script: "git status --porcelain", returnStdout: true
30 if (diff.trim() != "") {
31 sh "git diff HEAD"
32 error """
33 Unclean working directory after running gazelle.
34 Please run:
35
36 \$ bazel mod tidy --lockfile_mode=update
37 \$ bazel run //:tidy
38
39 In your git checkout and amend the resulting diff to this changelist.
40 """
41 }
42 }
43 }
44 success {
45 gerritCheck checks: ['jenkins:gazelle': 'SUCCESSFUL']
46 }
47 unsuccessful {
48 gerritCheck checks: ['jenkins:gazelle': 'FAILED']
49 }
50 }
51 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020052 stage('Parallel') {
53 parallel {
Tim Windelschmidtdf4ab3c2025-07-17 15:21:25 +020054 stage('Build - Toolchain Bundle') {
55 agent {
56 node {
57 label ""
58 customWorkspace '/home/ci/monogon'
59 }
60 }
61 steps {
62 gerritCheck checks: ['jenkins:build_toolchain_bundle': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
63 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
64 sh "git clean -fdx -e '/bazel-*'"
65
66 sh "JENKINS_NODE_COOKIE=dontKillMe nix-build build/toolchain/toolchain-bundle/default.nix"
67 }
68 post {
69 success {
70 gerritCheck checks: ['jenkins:build_toolchain_bundle': 'SUCCESSFUL']
71 }
72 unsuccessful {
73 gerritCheck checks: ['jenkins:build_toolchain_bundle': 'FAILED']
74 }
75 }
76 }
Tim Windelschmidta16e6f92025-07-16 23:48:18 +020077 stage('Test - Default') {
Serge Bazanski6feb7462021-05-18 15:49:15 +020078 agent {
79 node {
80 label ""
81 customWorkspace '/home/ci/monogon'
82 }
83 }
84 steps {
Tim Windelschmidta16e6f92025-07-16 23:48:18 +020085 gerritCheck checks: ['jenkins:test_default': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
Leopold Schabelda3be1b2021-10-17 22:15:10 +020086 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
Serge Bazanski6feb7462021-05-18 15:49:15 +020087 sh "git clean -fdx -e '/bazel-*'"
Tim Windelschmidta16e6f92025-07-16 23:48:18 +020088
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010089 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci test //..."
Tim Windelschmidta16e6f92025-07-16 23:48:18 +020090 }
91 post {
92 success {
93 gerritCheck checks: ['jenkins:test_default': 'SUCCESSFUL']
94 }
95 unsuccessful {
96 gerritCheck checks: ['jenkins:test_default': 'FAILED']
97 }
98 }
99 }
100 stage('Test - Debug') {
101 agent {
102 node {
103 label ""
104 customWorkspace '/home/ci/monogon'
105 }
106 }
107 steps {
108 gerritCheck checks: ['jenkins:test_debug': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
109 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
110 sh "git clean -fdx -e '/bazel-*'"
111
Tim Windelschmidt6c851e22024-01-11 15:23:48 +0100112 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci test --config dbg //..."
Tim Windelschmidta16e6f92025-07-16 23:48:18 +0200113 }
114 post {
115 success {
116 gerritCheck checks: ['jenkins:test_debug': 'SUCCESSFUL']
117 }
118 unsuccessful {
119 gerritCheck checks: ['jenkins:test_debug': 'FAILED']
120 }
121 }
122 }
123 stage('Test - Race') {
124 agent {
125 node {
126 label ""
127 customWorkspace '/home/ci/monogon'
128 }
129 }
130 steps {
131 gerritCheck checks: ['jenkins:test_race': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
132 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
133 sh "git clean -fdx -e '/bazel-*'"
134
Tim Windelschmidt3a171d12024-12-09 23:51:23 +0100135 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci test --config race //..."
Serge Bazanski6feb7462021-05-18 15:49:15 +0200136 }
137 post {
138 success {
Tim Windelschmidta16e6f92025-07-16 23:48:18 +0200139 gerritCheck checks: ['jenkins:test_race': 'SUCCESSFUL']
Serge Bazanski6feb7462021-05-18 15:49:15 +0200140 }
141 unsuccessful {
Tim Windelschmidta16e6f92025-07-16 23:48:18 +0200142 gerritCheck checks: ['jenkins:test_race': 'FAILED']
Serge Bazanski6feb7462021-05-18 15:49:15 +0200143 }
144 }
145 }
Leopold Schabelf1bdfbe2022-05-26 22:43:42 +0200146 }
Serge Bazanski6feb7462021-05-18 15:49:15 +0200147 }
148 }
Tim Windelschmidta16e6f92025-07-16 23:48:18 +0200149 post {
150 success {
151 gerritReview labels: [Verified: 1]
152 }
153 unsuccessful {
154 gerritReview labels: [Verified: -1]
155 }
156 }
157}