blob: c5d6aa739d0cee904ea37432fbcba7585d664c81 [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-repos"
53 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci run //:gazelle -- update"
Serge Bazanski6feb7462021-05-18 15:49:15 +020054
55 script {
56 def diff = sh script: "git status --porcelain", returnStdout: true
57 if (diff.trim() != "") {
58 sh "git diff HEAD"
59 error """
Lorenz Brund13c1c62022-03-30 19:58:58 +020060 Unclean working directory after running gazelle.
Serge Bazanski6feb7462021-05-18 15:49:15 +020061 Please run:
62
Tim Windelschmidtd7f59932024-07-24 23:37:03 +020063 \$ bazel mod deps --lockfile_mode=update
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}