blob: cf7b705b0976b2283d41022697119426a510604f [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
Leopold7fbf1042023-01-06 19:57:37 +01005// TODO(leo): remove once CI image has been updated.
Leopoldbc93c2b2023-01-14 13:12:23 +01006def gazelle_build = "curl -o ~/bazelisk https://storage.googleapis.com/monogon-infra-public/bazelisk-v1.15.0 && chmod +x ~/bazelisk"
Leopold7fbf1042023-01-06 19:57:37 +01007
Serge Bazanski6feb7462021-05-18 15:49:15 +02008pipeline {
9 agent none
Serge Bazanski3bb23212021-08-24 16:27:21 +020010 options {
11 disableConcurrentBuilds()
12 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020013 stages {
14 stage('Parallel') {
15 parallel {
16 stage('Test') {
17 agent {
18 node {
19 label ""
20 customWorkspace '/home/ci/monogon'
21 }
22 }
23 steps {
24 gerritCheck checks: ['jenkins:test': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
Leopold Schabelda3be1b2021-10-17 22:15:10 +020025 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
Serge Bazanski6feb7462021-05-18 15:49:15 +020026 sh "git clean -fdx -e '/bazel-*'"
Leopold7fbf1042023-01-06 19:57:37 +010027 sh gazelle_build
Leopoldbc93c2b2023-01-14 13:12:23 +010028 sh "JENKINS_NODE_COOKIE=dontKillMe ~/bazelisk test //..."
29 sh "JENKINS_NODE_COOKIE=dontKillMe ~/bazelisk test -c dbg //..."
Serge Bazanski6feb7462021-05-18 15:49:15 +020030 }
31 post {
32 success {
33 gerritCheck checks: ['jenkins:test': 'SUCCESSFUL']
34 }
35 unsuccessful {
36 gerritCheck checks: ['jenkins:test': 'FAILED']
37 }
38 }
39 }
40
41 stage('Gazelle') {
42 agent {
43 node {
44 label ""
45 customWorkspace '/home/ci/monogon'
46 }
47 }
48 steps {
49 gerritCheck checks: ['jenkins:gazelle': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
Leopold Schabelda3be1b2021-10-17 22:15:10 +020050 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
Serge Bazanski6feb7462021-05-18 15:49:15 +020051 sh "git clean -fdx -e '/bazel-*'"
Leopold7fbf1042023-01-06 19:57:37 +010052 sh gazelle_build
Leopoldbc93c2b2023-01-14 13:12:23 +010053 sh "JENKINS_NODE_COOKIE=dontKillMe ~/bazelisk run //:gazelle-update-repos"
54 sh "JENKINS_NODE_COOKIE=dontKillMe ~/bazelisk run //:gazelle -- update"
Serge Bazanski6feb7462021-05-18 15:49:15 +020055
56 script {
57 def diff = sh script: "git status --porcelain", returnStdout: true
58 if (diff.trim() != "") {
59 sh "git diff HEAD"
60 error """
Lorenz Brund13c1c62022-03-30 19:58:58 +020061 Unclean working directory after running gazelle.
Serge Bazanski6feb7462021-05-18 15:49:15 +020062 Please run:
63
Serge Bazanskiee4bfdb2022-04-06 15:30:52 +020064 \$ bazel run //:gazelle-update-repos
Serge Bazanski6feb7462021-05-18 15:49:15 +020065 \$ bazel run //:gazelle -- update
66
67 In your git checkout and amend the resulting diff to this changelist.
68 """
69 }
70 }
71 }
72 post {
73 success {
74 gerritCheck checks: ['jenkins:gazelle': 'SUCCESSFUL']
75 }
76 unsuccessful {
77 gerritCheck checks: ['jenkins:gazelle': 'FAILED']
78 }
79 }
80 }
81 }
Leopold Schabelf1bdfbe2022-05-26 22:43:42 +020082
83 post {
84 success {
85 gerritReview labels: [Verified: 1]
86 }
87 unsuccessful {
88 gerritReview labels: [Verified: -1]
89 }
90 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020091 }
92 }
93}