blob: 8701c3e46d5e712110568028028c7cc7f1f36eec [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"
Timon Stampfli742fde72024-12-15 16:39:31 +010027 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci build --//metropolis/cli/metroctl:buildkind=lite --platforms=@io_bazel_rules_go//go/toolchain:windows_arm64 //metropolis/cli/metroctl"
28 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci build --//metropolis/cli/metroctl:buildkind=lite --platforms=@io_bazel_rules_go//go/toolchain:windows_amd64 //metropolis/cli/metroctl"
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010029 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci test --config 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-*'"
Jan Schär5d1bf6a2024-11-12 13:34:40 +010052 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci mod tidy --lockfile_mode=update"
Tim Windelschmidtd7f59932024-07-24 23:37:03 +020053 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci run //:go -- mod tidy"
Tim Windelschmidt6c851e22024-01-11 15:23:48 +010054 sh "JENKINS_NODE_COOKIE=dontKillMe tools/bazel --bazelrc=.bazelrc.ci run //:gazelle -- update"
Serge Bazanski6feb7462021-05-18 15:49:15 +020055 }
56 post {
Jan Schär5d1bf6a2024-11-12 13:34:40 +010057 always {
58 script {
59 def diff = sh script: "git status --porcelain", returnStdout: true
60 if (diff.trim() != "") {
61 sh "git diff HEAD"
62 error """
63 Unclean working directory after running gazelle.
64 Please run:
65
66 \$ bazel mod tidy --lockfile_mode=update
67 \$ bazel run //:go -- mod tidy
68 \$ bazel run //:gazelle -- update
69
70 In your git checkout and amend the resulting diff to this changelist.
71 """
72 }
73 }
74 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020075 success {
76 gerritCheck checks: ['jenkins:gazelle': 'SUCCESSFUL']
77 }
78 unsuccessful {
79 gerritCheck checks: ['jenkins:gazelle': 'FAILED']
80 }
81 }
82 }
83 }
Leopold Schabelf1bdfbe2022-05-26 22:43:42 +020084
85 post {
86 success {
87 gerritReview labels: [Verified: 1]
88 }
89 unsuccessful {
90 gerritReview labels: [Verified: -1]
91 }
92 }
Serge Bazanski6feb7462021-05-18 15:49:15 +020093 }
94 }
95}