blob: 7be25c2ca29f9446dd57096588f2d209141affcc [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"
Leopoldd6397762023-01-31 18:16:07 +010055 sh "JENKINS_NODE_COOKIE=dontKillMe ~/bazelisk run //:go -- mod tidy"
Serge Bazanski6feb7462021-05-18 15:49:15 +020056
57 script {
58 def diff = sh script: "git status --porcelain", returnStdout: true
59 if (diff.trim() != "") {
60 sh "git diff HEAD"
61 error """
Lorenz Brund13c1c62022-03-30 19:58:58 +020062 Unclean working directory after running gazelle.
Serge Bazanski6feb7462021-05-18 15:49:15 +020063 Please run:
64
Serge Bazanskiee4bfdb2022-04-06 15:30:52 +020065 \$ bazel run //:gazelle-update-repos
Serge Bazanski6feb7462021-05-18 15:49:15 +020066 \$ bazel run //:gazelle -- update
67
68 In your git checkout and amend the resulting diff to this changelist.
69 """
70 }
71 }
72 }
73 post {
74 success {
75 gerritCheck checks: ['jenkins:gazelle': 'SUCCESSFUL']
76 }
77 unsuccessful {
78 gerritCheck checks: ['jenkins:gazelle': 'FAILED']
79 }
80 }
81 }
82 }
Leopold Schabelf1bdfbe2022-05-26 22:43:42 +020083
84 post {
85 success {
86 gerritReview labels: [Verified: 1]
87 }
88 unsuccessful {
89 gerritReview labels: [Verified: -1]
90 }
91 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020092 }
93 }
94}