blob: 3b9e719502618ff2982c883d80e163e593a4d28f [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 {
8 disableConcurrentBuilds()
9 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020010 stages {
11 stage('Parallel') {
12 parallel {
13 stage('Test') {
14 agent {
15 node {
16 label ""
17 customWorkspace '/home/ci/monogon'
18 }
19 }
20 steps {
21 gerritCheck checks: ['jenkins:test': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
Leopold Schabelda3be1b2021-10-17 22:15:10 +020022 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
Serge Bazanski6feb7462021-05-18 15:49:15 +020023 sh "git clean -fdx -e '/bazel-*'"
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010024 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci test //..."
25 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci build --//metropolis/cli/metroctl:buildkind=lite --platforms=@io_bazel_rules_go//go/toolchain:darwin_arm64 //metropolis/cli/metroctl"
26 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci build --//metropolis/cli/metroctl:buildkind=lite --platforms=@io_bazel_rules_go//go/toolchain:darwin_amd64 //metropolis/cli/metroctl"
27 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci test --config dbg //..."
Serge Bazanski6feb7462021-05-18 15:49:15 +020028 }
29 post {
30 success {
31 gerritCheck checks: ['jenkins:test': 'SUCCESSFUL']
32 }
33 unsuccessful {
34 gerritCheck checks: ['jenkins:test': 'FAILED']
35 }
36 }
37 }
38
39 stage('Gazelle') {
40 agent {
41 node {
42 label ""
43 customWorkspace '/home/ci/monogon'
44 }
45 }
46 steps {
47 gerritCheck checks: ['jenkins:gazelle': 'RUNNING'], message: "Running on ${env.NODE_NAME}"
Leopold Schabelda3be1b2021-10-17 22:15:10 +020048 echo "Gerrit change: ${GERRIT_CHANGE_URL}"
Serge Bazanski6feb7462021-05-18 15:49:15 +020049 sh "git clean -fdx -e '/bazel-*'"
Tim Windelschmidtd7f59932024-07-24 23:37:03 +020050 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci mod deps --lockfile_mode=update"
51 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci run //:go -- mod tidy"
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010052 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci run //:gazelle -- update"
Serge Bazanski6feb7462021-05-18 15:49:15 +020053
54 script {
55 def diff = sh script: "git status --porcelain", returnStdout: true
56 if (diff.trim() != "") {
57 sh "git diff HEAD"
58 error """
Lorenz Brund13c1c62022-03-30 19:58:58 +020059 Unclean working directory after running gazelle.
Serge Bazanski6feb7462021-05-18 15:49:15 +020060 Please run:
61
Tim Windelschmidtd7f59932024-07-24 23:37:03 +020062 \$ bazel mod deps --lockfile_mode=update
Tim Windelschmidte5e90a82024-07-17 23:46:22 +020063 \$ bazel run //:go -- mod tidy
Serge Bazanski6feb7462021-05-18 15:49:15 +020064 \$ bazel run //:gazelle -- update
65
66 In your git checkout and amend the resulting diff to this changelist.
67 """
68 }
69 }
70 }
71 post {
72 success {
73 gerritCheck checks: ['jenkins:gazelle': 'SUCCESSFUL']
74 }
75 unsuccessful {
76 gerritCheck checks: ['jenkins:gazelle': 'FAILED']
77 }
78 }
79 }
80 }
Leopold Schabelf1bdfbe2022-05-26 22:43:42 +020081
82 post {
83 success {
84 gerritReview labels: [Verified: 1]
85 }
86 unsuccessful {
87 gerritReview labels: [Verified: -1]
88 }
89 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020090 }
91 }
92}