Skip to content

Commit 1457440

Browse files
committed
Refactor to make script sharing between Buildbot and Jenkins cleaner
Signed-off-by: Samuli Seppänen <[email protected]>
1 parent 3c9e476 commit 1457440

22 files changed

+121
-52
lines changed

buildbot-host/buildbot-worker-windows-server-2019/ec2.pkr.hcl

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ variable "buildmaster_address" {
4040
type = string
4141
}
4242

43-
variable "jenkinsmaster_address" {
44-
type = string
45-
}
46-
4743
source "amazon-ebs" "windows-server-2019" {
4844
communicator = "winrm"
4945
force_deregister = true
@@ -67,7 +63,7 @@ source "amazon-ebs" "windows-server-2019" {
6763
most_recent = true
6864
owners = ["801119661308"]
6965
}
70-
user_data = templatefile("${path.root}/bootstrap_win.pkrtpl.hcl", { winrm_password = var.buildbot_windows_server_2019_winrm_password })
66+
user_data = templatefile("${path.root}/../../pkrtpl/bootstrap_win.pkrtpl.hcl", { winrm_password = var.buildbot_windows_server_2019_winrm_password })
7167
winrm_password = var.buildbot_windows_server_2019_winrm_password
7268
winrm_username = "Administrator"
7369
}
@@ -79,7 +75,7 @@ build {
7975
}
8076

8177
provisioner "file" {
82-
sources = [ "../scripts/",
78+
sources = [ "../../scripts/",
8379
var.buildbot_authenticode_cert ]
8480
destination = "C:/Windows/Temp/"
8581
}
@@ -126,49 +122,3 @@ build {
126122
inline = ["C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/InitializeInstance.ps1 -Schedule"]
127123
}
128124
}
129-
130-
build {
131-
source "amazon-ebs.windows-server-2019" {
132-
name = "jenkins-agent-windows-server-2019"
133-
ami_name = "jenkins-agent-windows-server-2019-1"
134-
}
135-
136-
provisioner "file" {
137-
sources = [ "../scripts/" ]
138-
destination = "C:/Windows/Temp/"
139-
}
140-
provisioner "powershell" {
141-
inline = ["C:/Windows/Temp/base.ps1"]
142-
}
143-
provisioner "powershell" {
144-
inline = ["C:/Windows/Temp/git.ps1"]
145-
}
146-
provisioner "powershell" {
147-
inline = ["C:/Windows/Temp/cmake.ps1"]
148-
}
149-
provisioner "powershell" {
150-
inline = ["C:/Windows/Temp/python.ps1"]
151-
}
152-
provisioner "powershell" {
153-
inline = ["C:/Windows/Temp/pip.ps1"]
154-
}
155-
provisioner "powershell" {
156-
inline = ["C:/Windows/Temp/vcpkg.ps1 -workdir C:\\Jenkins"]
157-
}
158-
provisioner "powershell" {
159-
inline = ["C:/Windows/Temp/vsbuildtools.ps1"]
160-
}
161-
provisioner "powershell" {
162-
inline = ["C:/Windows/Temp/create-buildbot-user.ps1 -password ${var.buildbot_windows_server_2019_buildbot_user_password}"]
163-
}
164-
# Required for some installers
165-
provisioner "windows-restart" {}
166-
provisioner "powershell" {
167-
inline = ["C:/Windows/Temp/jenkins-agent.ps1 -workdir C:\\Jenkins -jenkins ${var.jenkinsmaster_address} -user buildbot -password ${var.buildbot_windows_server_2019_buildbot_user_password}"]
168-
}
169-
provisioner "powershell" {
170-
# make sure to run user data scripts on first boot from AMI
171-
inline = ["C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/InitializeInstance.ps1 -Schedule"]
172-
}
173-
174-
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
packer {
2+
required_plugins {
3+
amazon = {
4+
version = ">= 1.0.8"
5+
source = "github.com/hashicorp/amazon"
6+
}
7+
}
8+
}
9+
10+
variable "buildbot_authenticode_cert" {
11+
type = string
12+
}
13+
14+
variable "buildbot_authenticode_password" {
15+
type = string
16+
}
17+
18+
variable "buildbot_windows_server_2019_buildbot_user_password" {
19+
type = string
20+
}
21+
22+
variable "buildbot_windows_server_2019_ec2_region" {
23+
type = string
24+
}
25+
26+
variable "buildbot_windows_server_2019_ec2_subnet" {
27+
type = string
28+
default = null
29+
}
30+
31+
variable "buildbot_windows_server_2019_winrm_password" {
32+
type = string
33+
}
34+
35+
variable "buildbot_windows_server_2019_worker_password" {
36+
type = string
37+
}
38+
39+
variable "buildmaster_address" {
40+
type = string
41+
}
42+
43+
variable "jenkinsmaster_address" {
44+
type = string
45+
}
46+
47+
source "amazon-ebs" "windows-server-2019" {
48+
communicator = "winrm"
49+
force_deregister = true
50+
instance_type = "t3a.large"
51+
region = var.buildbot_windows_server_2019_ec2_region
52+
subnet_id = var.buildbot_windows_server_2019_ec2_subnet
53+
54+
launch_block_device_mappings {
55+
device_name = "/dev/sda1"
56+
volume_size = 80
57+
volume_type = "gp2"
58+
delete_on_termination = true
59+
}
60+
61+
source_ami_filter {
62+
filters = {
63+
name = "Windows_Server-2019-English-Full-Base-*"
64+
root-device-type = "ebs"
65+
virtualization-type = "hvm"
66+
}
67+
most_recent = true
68+
owners = ["801119661308"]
69+
}
70+
user_data = templatefile("${path.root}/../../pkrtpl/bootstrap_win.pkrtpl.hcl", { winrm_password = var.buildbot_windows_server_2019_winrm_password })
71+
winrm_password = var.buildbot_windows_server_2019_winrm_password
72+
winrm_username = "Administrator"
73+
}
74+
75+
build {
76+
source "amazon-ebs.windows-server-2019" {
77+
name = "jenkins-agent-windows-server-2019"
78+
ami_name = "jenkins-agent-windows-server-2019-1"
79+
}
80+
81+
provisioner "file" {
82+
sources = [ "../../scripts/" ]
83+
destination = "C:/Windows/Temp/"
84+
}
85+
provisioner "powershell" {
86+
inline = ["C:/Windows/Temp/base.ps1"]
87+
}
88+
provisioner "powershell" {
89+
inline = ["C:/Windows/Temp/git.ps1"]
90+
}
91+
provisioner "powershell" {
92+
inline = ["C:/Windows/Temp/cmake.ps1"]
93+
}
94+
provisioner "powershell" {
95+
inline = ["C:/Windows/Temp/python.ps1"]
96+
}
97+
provisioner "powershell" {
98+
inline = ["C:/Windows/Temp/pip.ps1"]
99+
}
100+
provisioner "powershell" {
101+
inline = ["C:/Windows/Temp/vcpkg.ps1 -workdir C:\\Jenkins"]
102+
}
103+
provisioner "powershell" {
104+
inline = ["C:/Windows/Temp/vsbuildtools.ps1"]
105+
}
106+
provisioner "powershell" {
107+
inline = ["C:/Windows/Temp/create-buildbot-user.ps1 -password ${var.buildbot_windows_server_2019_buildbot_user_password}"]
108+
}
109+
# Required for some installers
110+
provisioner "windows-restart" {}
111+
provisioner "powershell" {
112+
inline = ["C:/Windows/Temp/jenkins-agent.ps1 -workdir C:\\Jenkins -jenkins ${var.jenkinsmaster_address} -user buildbot -password ${var.buildbot_windows_server_2019_buildbot_user_password}"]
113+
}
114+
provisioner "powershell" {
115+
# make sure to run user data scripts on first boot from AMI
116+
inline = ["C:/ProgramData/Amazon/EC2-Windows/Launch/Scripts/InitializeInstance.ps1 -Schedule"]
117+
}
118+
119+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)