| author | wenzelm |
| Sun, 22 Sep 2024 16:12:15 +0200 | |
| changeset 80923 | 6c9628a116cc |
| parent 80483 | 5b539d1d3577 |
| child 81882 | 2adff49492f0 |
| permissions | -rw-r--r-- |
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
1 |
/* Title: Pure/Build/build_ci.scala |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
2 |
Author: Fabian Huch, TU Munich |
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
3 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
4 |
Module for automated (continuous integration) builds. |
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
5 |
*/ |
|
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
6 |
|
|
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
7 |
package isabelle |
|
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
8 |
|
|
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
9 |
|
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
10 |
import scala.collection.mutable |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
11 |
|
|
63328
7a8515c58271
read Java system properties from ISABELLE_CI_PROPERTIES
Lars Hupel <lars.hupel@mytum.de>
parents:
63294
diff
changeset
|
12 |
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
13 |
object Build_CI {
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
14 |
def section(title: String): String = "\n=== " + title + " ===\n" |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
15 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
16 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
17 |
/* mailing */ |
|
75628
6a5e4f17f285
switched to statically compiled ci profile;
Fabian Huch <huch@in.tum.de>
parents:
75393
diff
changeset
|
18 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
19 |
object Mail_System {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
20 |
def try_open(options: Options): Option[Mail_System] = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
21 |
Exn.capture(new Mail_System(options)) match {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
22 |
case Exn.Res(res) if res.server.defined => Some(res) |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
23 |
case _ => None |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
24 |
} |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
25 |
} |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
26 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
27 |
class Mail_System private(options: Options) {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
28 |
val from: Mail.Address = Mail.address(options.string("ci_mail_from"))
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
29 |
val to: Mail.Address = Mail.address(options.string("ci_mail_to"))
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
30 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
31 |
val server: Mail.Server = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
32 |
new Mail.Server(Mail.address(options.string("ci_mail_sender")),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
33 |
smtp_host = options.string("ci_mail_smtp_host"),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
34 |
smtp_port = options.int("ci_mail_smtp_port"),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
35 |
user = options.string("ci_mail_user"),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
36 |
password = options.string("ci_mail_password"))
|
|
73934
39e0c7fac69e
jenkins: pre/post-hook results
Fabian Huch <huch@in.tum.de>
parents:
73359
diff
changeset
|
37 |
} |
|
39e0c7fac69e
jenkins: pre/post-hook results
Fabian Huch <huch@in.tum.de>
parents:
73359
diff
changeset
|
38 |
|
|
75628
6a5e4f17f285
switched to statically compiled ci profile;
Fabian Huch <huch@in.tum.de>
parents:
75393
diff
changeset
|
39 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
40 |
/** ci build jobs **/ |
|
75628
6a5e4f17f285
switched to statically compiled ci profile;
Fabian Huch <huch@in.tum.de>
parents:
75393
diff
changeset
|
41 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
42 |
/* hosts */ |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
43 |
|
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
44 |
sealed trait Hosts {
|
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
45 |
def hosts_spec: String |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
46 |
def max_jobs: Option[Int] |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
47 |
def prefs: List[Options.Spec] |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
48 |
def numa_shuffling: Boolean |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
49 |
def build_cluster: Boolean |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
50 |
} |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
51 |
|
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
52 |
case class Local(host_spec: String, jobs: Int, threads: Int, numa_shuffling: Boolean = true) |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
53 |
extends Hosts {
|
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
54 |
def hosts_spec: String = host_spec |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
55 |
def max_jobs: Option[Int] = Some(jobs) |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
56 |
def prefs: List[Options.Spec] = List(Options.Spec.eq("threads", threads.toString))
|
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
57 |
def build_cluster: Boolean = false |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
58 |
} |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
59 |
|
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
60 |
case class Cluster(hosts_spec: String, numa_shuffling: Boolean = true) extends Hosts {
|
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
61 |
def max_jobs: Option[Int] = None |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
62 |
def prefs: List[Options.Spec] = Nil |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
63 |
def build_cluster: Boolean = true |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
64 |
} |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
65 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
66 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
67 |
/* build triggers */ |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
68 |
|
|
80261
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
69 |
sealed trait Trigger |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
70 |
case object On_Commit extends Trigger |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
71 |
|
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
72 |
object Timed {
|
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
73 |
def nightly(start_time: Time = Time.zero): Timed = |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
74 |
Timed { (before, now) =>
|
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
75 |
val start0 = before.midnight + start_time |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
76 |
val start1 = now.midnight + start_time |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
77 |
(before.time < start0.time && start0.time <= now.time) || |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
78 |
(before.time < start1.time && start1.time <= now.time) |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
79 |
} |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
80 |
} |
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
81 |
|
|
80261
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
82 |
case class Timed(in_interval: (Date, Date) => Boolean) extends Trigger |
|
e3f472221f8f
add triggers to ci jobs: on commit vs timed;
Fabian Huch <huch@in.tum.de>
parents:
80260
diff
changeset
|
83 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
84 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
85 |
/* build hooks */ |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
86 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
87 |
trait Hook {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
88 |
def pre(options: Options, progress: Progress): Unit = () |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
89 |
def post( |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
90 |
options: Options, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
91 |
url: Option[Url], |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
92 |
results: Build.Results, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
93 |
progress: Progress |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
94 |
): Unit = () |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
95 |
} |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
96 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
97 |
object none extends Hook |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
98 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
99 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
100 |
/* jobs */ |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
101 |
|
|
80260
ed9b1598d293
manage components of ci builds;
Fabian Huch <huch@in.tum.de>
parents:
80245
diff
changeset
|
102 |
sealed case class Job( |
|
ed9b1598d293
manage components of ci builds;
Fabian Huch <huch@in.tum.de>
parents:
80245
diff
changeset
|
103 |
name: String, |
|
ed9b1598d293
manage components of ci builds;
Fabian Huch <huch@in.tum.de>
parents:
80245
diff
changeset
|
104 |
description: String, |
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
105 |
hosts: Hosts, |
|
80469
a3bae6dd7344
add timeout to build manager tasks/jobs (e.g. for cluster builds that don't terminate after error on host);
Fabian Huch <huch@in.tum.de>
parents:
80418
diff
changeset
|
106 |
timeout: Time, |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
107 |
afp: Boolean = false, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
108 |
selection: Sessions.Selection = Sessions.Selection.empty, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
109 |
presentation: Boolean = false, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
110 |
clean_build: Boolean = false, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
111 |
select_dirs: List[Path] = Nil, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
112 |
build_prefs: List[Options.Spec] = Nil, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
113 |
hook: Hook = none, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
114 |
extra_components: List[String] = Nil, |
|
80414
4b10ae56ed01
add Isabelle settings to managed tasks and ci jobs;
Fabian Huch <huch@in.tum.de>
parents:
80412
diff
changeset
|
115 |
other_settings: List[String] = Nil, |
|
80483
5b539d1d3577
clarified: control verbosity;
Fabian Huch <huch@in.tum.de>
parents:
80469
diff
changeset
|
116 |
trigger: Trigger = On_Commit, |
|
5b539d1d3577
clarified: control verbosity;
Fabian Huch <huch@in.tum.de>
parents:
80469
diff
changeset
|
117 |
verbose: Boolean = false |
|
80260
ed9b1598d293
manage components of ci builds;
Fabian Huch <huch@in.tum.de>
parents:
80245
diff
changeset
|
118 |
) {
|
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
119 |
override def toString: String = name |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
120 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
121 |
def afp_root: Option[Path] = if (!afp) None else Some(AFP.BASE) |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
122 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
123 |
def prefs: List[Options.Spec] = build_prefs ++ hosts.prefs ++ document_prefs |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
124 |
def document_prefs: List[Options.Spec] = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
125 |
if (!presentation) Nil |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
126 |
else List( |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
127 |
Options.Spec.eq("browser_info", "true"),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
128 |
Options.Spec.eq("document", "pdf"),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
129 |
Options.Spec.eq("document_variants", "document:outline=/proof,/ML"))
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
130 |
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
131 |
def components: List[String] = (if (!afp) Nil else List("AFP")) ::: extra_components
|
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
132 |
} |
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
133 |
|
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
134 |
private lazy val known_jobs: List[Job] = |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
135 |
Isabelle_System.make_services(classOf[Isabelle_CI_Jobs]).flatMap(_.jobs) |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
136 |
|
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
137 |
def show_jobs: String = |
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
138 |
cat_lines(known_jobs.sortBy(_.name).map(job => job.name + " - " + job.description)) |
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
139 |
|
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
140 |
def the_job(name: String): Job = known_jobs.find(job => job.name == name) getOrElse |
| 76225 | 141 |
error("Unknown job " + quote(name))
|
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
142 |
|
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
143 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
144 |
/* concrete jobs */ |
|
75628
6a5e4f17f285
switched to statically compiled ci profile;
Fabian Huch <huch@in.tum.de>
parents:
75393
diff
changeset
|
145 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
146 |
val timing = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
147 |
Job("benchmark",
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
148 |
description = "runs benchmark and timing sessions", |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
149 |
Local("benchmark", jobs = 1, threads = 6, numa_shuffling = false),
|
|
80469
a3bae6dd7344
add timeout to build manager tasks/jobs (e.g. for cluster builds that don't terminate after error on host);
Fabian Huch <huch@in.tum.de>
parents:
80418
diff
changeset
|
150 |
Time.hms(2, 0, 0), |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
151 |
selection = Sessions.Selection(session_groups = List("timing")),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
152 |
clean_build = true, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
153 |
select_dirs = List(Path.explode("~~/src/Benchmarks")),
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
154 |
trigger = Timed.nightly()) |
|
75628
6a5e4f17f285
switched to statically compiled ci profile;
Fabian Huch <huch@in.tum.de>
parents:
75393
diff
changeset
|
155 |
|
|
6a5e4f17f285
switched to statically compiled ci profile;
Fabian Huch <huch@in.tum.de>
parents:
75393
diff
changeset
|
156 |
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
157 |
/* build ci */ |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
158 |
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
159 |
def build_ci( |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
160 |
options: Options, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
161 |
job: Job, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
162 |
build_hosts: List[Build_Cluster.Host] = Nil, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
163 |
url: Option[Url] = None, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
164 |
progress: Progress = new Progress |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
165 |
): Unit = {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
166 |
def return_code(f: => Unit): Int = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
167 |
Exn.capture(f) match {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
168 |
case Exn.Res(_) => Process_Result.RC.ok |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
169 |
case Exn.Exn(e) => |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
170 |
progress.echo_error_message(e.getMessage) |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
171 |
Process_Result.RC.error |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
172 |
} |
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
173 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
174 |
val mail_result = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
175 |
return_code {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
176 |
Mail_System.try_open(options).getOrElse(error("No mail configuration")).server.check()
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
177 |
} |
|
63328
7a8515c58271
read Java system properties from ISABELLE_CI_PROPERTIES
Lars Hupel <lars.hupel@mytum.de>
parents:
63294
diff
changeset
|
178 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
179 |
val pre_result = return_code { job.hook.pre(options, progress) }
|
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
180 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
181 |
progress.echo(section("BUILD"))
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
182 |
val results = progress.interrupt_handler {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
183 |
Build.build( |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
184 |
options ++ job.prefs, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
185 |
build_hosts = build_hosts, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
186 |
selection = job.selection, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
187 |
progress = progress, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
188 |
clean_build = job.clean_build, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
189 |
afp_root = job.afp_root, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
190 |
select_dirs = job.select_dirs, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
191 |
numa_shuffling = job.hosts.numa_shuffling, |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
192 |
max_jobs = job.hosts.max_jobs) |
|
75628
6a5e4f17f285
switched to statically compiled ci profile;
Fabian Huch <huch@in.tum.de>
parents:
75393
diff
changeset
|
193 |
} |
| 63349 | 194 |
|
| 80418 | 195 |
val stop_date = progress.now() |
196 |
val elapsed_time = stop_date - progress.start |
|
197 |
progress.echo("\nFinished at " + Build_Log.print_date(stop_date))
|
|
198 |
||
199 |
progress.echo(section("TIMING"))
|
|
200 |
val total_timing = |
|
201 |
results.sessions.iterator.map(a => results(a).timing).foldLeft(Timing.zero)(_ + _). |
|
202 |
copy(elapsed = elapsed_time) |
|
203 |
progress.echo(total_timing.message_resources) |
|
204 |
||
|
80417
10ab5a74f6f5
clarified: use progress start date;
Fabian Huch <huch@in.tum.de>
parents:
80414
diff
changeset
|
205 |
val post_result = return_code { job.hook.post(options, url, results, progress) }
|
| 63385 | 206 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
207 |
val rc = List(mail_result, pre_result, results.rc, post_result).max |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
208 |
if (rc != Process_Result.RC.ok) {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
209 |
progress.echo(section("FAILED"))
|
|
63387
3395fe5e3893
more accurate total timing
Lars Hupel <lars.hupel@mytum.de>
parents:
63385
diff
changeset
|
210 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
211 |
if (mail_result != Process_Result.RC.ok) progress.echo("Mail: FAILED")
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
212 |
else {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
213 |
val mail_system = Mail_System.try_open(options).get |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
214 |
val content = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
215 |
"The job " + job.name + " failed. " + if_proper(url, " View the build at: " + url.get) |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
216 |
val mail = Mail("Build failed", List(mail_system.to), content, Some(mail_system.from))
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
217 |
mail_system.server.send(mail) |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
218 |
} |
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
219 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
220 |
if (pre_result != Process_Result.RC.ok) progress.echo("Pre-hook: FAILED")
|
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
221 |
for (name <- results.sessions) {
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
222 |
if (results.cancelled(name)) progress.echo("Session " + name + ": CANCELLED")
|
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
223 |
else {
|
|
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
224 |
val result = results(name) |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
225 |
if (!result.ok) progress.echo("Session " + name + ": FAILED " + result.rc)
|
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
226 |
} |
|
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
227 |
} |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
228 |
if (post_result != Process_Result.RC.ok) progress.echo("Post-hook: FAILED")
|
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
229 |
} |
|
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
230 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
231 |
sys.exit(rc) |
|
63288
e0513d6e4916
start moving actual Jenkins build scripts into the repository
Lars Hupel <lars.hupel@mytum.de>
parents:
diff
changeset
|
232 |
} |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
233 |
|
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
234 |
|
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
235 |
/* Isabelle tool wrapper */ |
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
236 |
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
237 |
val isabelle_tool = Isabelle_Tool("build_ci", "builds Isabelle jobs in ci environments",
|
|
78821
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
238 |
Scala_Project.here, |
|
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
239 |
{ args =>
|
|
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
240 |
var options = Options.init() |
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
241 |
val build_hosts = new mutable.ListBuffer[Build_Cluster.Host] |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
242 |
var url: Option[Url] = None |
|
78821
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
243 |
|
|
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
244 |
val getopts = Getopts("""
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
245 |
Usage: isabelle build_ci [OPTIONS] JOB |
|
78821
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
246 |
|
|
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
247 |
Options are: |
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
248 |
-H HOSTS host specifications of the form NAMES:PARAMETERS (separated by commas) |
|
78821
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
249 |
-o OPTION override Isabelle system OPTION (via NAME=VAL or NAME) |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
250 |
-u URL build url |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
251 |
|
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
252 |
Runs Isabelle builds in ci environment. For cluster builds, build hosts must |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
253 |
be passed explicitly (no registry). |
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
254 |
|
|
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
255 |
The following build jobs are available: |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
256 |
|
|
78821
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
257 |
""" + Library.indent_lines(4, show_jobs) + "\n", |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
258 |
"H:" -> (arg => build_hosts ++= Build_Cluster.Host.parse(Registry.load(Nil), arg)), |
|
80281
17d2f775907a
add cluster/hosts configurations to build manager: allows running jobs in parallel on distinct hardware;
Fabian Huch <huch@in.tum.de>
parents:
80261
diff
changeset
|
259 |
"o:" -> (arg => options = options + arg), |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
260 |
"u:" -> (arg => url = Some(Url(arg)))) |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
261 |
|
|
78821
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
262 |
val more_args = getopts(args) |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
263 |
|
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
264 |
val job = |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
265 |
more_args match {
|
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
266 |
case job :: Nil => the_job(job) |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
267 |
case _ => getopts.usage() |
|
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
268 |
} |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
269 |
|
|
80483
5b539d1d3577
clarified: control verbosity;
Fabian Huch <huch@in.tum.de>
parents:
80469
diff
changeset
|
270 |
val progress = new Console_Progress(verbose = job.verbose) |
|
80411
a9fce67fb8b2
overhauled ci_build: clarified, removed unused, removed implicit Jenkins assumptions;
Fabian Huch <huch@in.tum.de>
parents:
80281
diff
changeset
|
271 |
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
272 |
build_ci(options, job, url = url, build_hosts = build_hosts.toList, progress = progress) |
|
78821
4c5aadf1cb48
prefer Isabelle options for CI mail settings over ci.properties;
Fabian Huch <huch@in.tum.de>
parents:
77570
diff
changeset
|
273 |
}) |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
274 |
} |
|
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
275 |
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
276 |
class Isabelle_CI_Jobs(val jobs: Build_CI.Job*) extends Isabelle_System.Service |
|
76222
3c4e373922ca
restructured ci profile into modular ci build system;
Fabian Huch <huch@in.tum.de>
parents:
75633
diff
changeset
|
277 |
|
|
80412
a7f8249533e9
moved ci_build module to build_ci;
Fabian Huch <huch@in.tum.de>
parents:
80411
diff
changeset
|
278 |
class CI_Jobs extends Isabelle_CI_Jobs(Build_CI.timing) |