This commit is contained in:
parent
2eb472cc20
commit
043a1b6ffa
5 changed files with 111 additions and 26 deletions
11
Dockerfile
Normal file
11
Dockerfile
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# Use the published buildbot/buildbot-master image as the base
|
||||||
|
FROM buildbot/buildbot-master:master
|
||||||
|
|
||||||
|
# Install buildbot-prometheus in the existing virtual environment
|
||||||
|
RUN /buildbot_venv/bin/pip3 install buildbot-prometheus
|
||||||
|
|
||||||
|
# Set the working directory to where the buildbot files are expected
|
||||||
|
WORKDIR /buildbot
|
||||||
|
|
||||||
|
# Keep the existing command to start buildbot
|
||||||
|
CMD ["dumb-init", "/usr/src/buildbot/start_buildbot.sh"]
|
|
@ -85,6 +85,12 @@ def setup() -> Dict[str, Any]:
|
||||||
else:
|
else:
|
||||||
c["services"] = []
|
c["services"] = []
|
||||||
|
|
||||||
|
c["services"].append(
|
||||||
|
buildbot.plugins.reporters.Prometheus(
|
||||||
|
port=int(os.environ.get("BUILDBOT_PROMETHEUS_PORT", default=9100))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
####### PROJECT IDENTITY
|
####### PROJECT IDENTITY
|
||||||
|
|
||||||
# the 'title' string will appear at the top of this buildbot installation's
|
# the 'title' string will appear at the top of this buildbot installation's
|
||||||
|
@ -99,31 +105,41 @@ def setup() -> Dict[str, Any]:
|
||||||
# buildbot cannot figure out without some help.
|
# buildbot cannot figure out without some help.
|
||||||
c["buildbotURL"] = os.environ.get("BUILDBOT_WEB_URL", "http://localhost:8010/")
|
c["buildbotURL"] = os.environ.get("BUILDBOT_WEB_URL", "http://localhost:8010/")
|
||||||
|
|
||||||
# Minimalistic config to activate new web UI
|
# Initialize
|
||||||
c["www"] = dict(
|
c["www"] = {}
|
||||||
port=os.environ.get("BUILDBOT_WEB_PORT", 8010),
|
|
||||||
plugins=dict(waterfall_view={}, console_view={}, grid_view={}),
|
# Port
|
||||||
theme={
|
c["www"]["port"] = os.environ.get("BUILDBOT_WEB_PORT", 8010)
|
||||||
"bb-sidebar-background-color": "#1F2226", # Eerie Black 2
|
|
||||||
"bb-sidebar-header-background-color": "#202327", # Eerie Black
|
# Plugins
|
||||||
"bb-sidebar-header-text-color": "#9fa3a8", # Dim Gray (Lighter gray for text)
|
c["www"]["plugins"] = dict(
|
||||||
"bb-sidebar-title-text-color": "#9fa3a8", # Dim Gray (Titles)
|
waterfall_view={},
|
||||||
"bb-sidebar-footer-background-color": "#292d32", # Jet
|
console_view={},
|
||||||
"bb-sidebar-button-text-color": "#9fa3a8", # Dim Gray (Button text)
|
grid_view={},
|
||||||
"bb-sidebar-button-hover-background-color": "#292d32", # Jet (Button hover background)
|
|
||||||
"bb-sidebar-button-hover-text-color": "#3dabf5", # Light blue for hover text
|
|
||||||
"bb-sidebar-button-current-background-color": "#292d32", # Jet (Current button background)
|
|
||||||
"bb-sidebar-button-current-text-color": "#3dabf5", # Light blue for current button text
|
|
||||||
"bb-sidebar-stripe-hover-color": "#3695D5", # Celestial Blue
|
|
||||||
"bb-sidebar-stripe-current-color": "#084F7E", # Indigo Dye
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Theme
|
||||||
|
c["www"]["theme"] = {
|
||||||
|
"bb-sidebar-background-color": "#1F2226", # Eerie Black 2
|
||||||
|
"bb-sidebar-header-background-color": "#202327", # Eerie Black
|
||||||
|
"bb-sidebar-header-text-color": "#9fa3a8", # Dim Gray (Lighter gray for text)
|
||||||
|
"bb-sidebar-title-text-color": "#9fa3a8", # Dim Gray (Titles)
|
||||||
|
"bb-sidebar-footer-background-color": "#292d32", # Jet
|
||||||
|
"bb-sidebar-button-text-color": "#9fa3a8", # Dim Gray (Button text)
|
||||||
|
"bb-sidebar-button-hover-background-color": "#292d32", # Jet (Button hover background)
|
||||||
|
"bb-sidebar-button-hover-text-color": "#3dabf5", # Light blue for hover text
|
||||||
|
"bb-sidebar-button-current-background-color": "#292d32", # Jet (Current button background)
|
||||||
|
"bb-sidebar-button-current-text-color": "#3dabf5", # Light blue for current button text
|
||||||
|
"bb-sidebar-stripe-hover-color": "#3695D5", # Celestial Blue
|
||||||
|
"bb-sidebar-stripe-current-color": "#084F7E", # Indigo Dye
|
||||||
|
}
|
||||||
|
|
||||||
# Database
|
# Database
|
||||||
c["db"] = {
|
c["db"] = {
|
||||||
"db_url": os.environ.get("BUILDBOT_DB_URL", "sqlite://").format(**os.environ)
|
"db_url": os.environ.get("BUILDBOT_DB_URL", "sqlite://").format(**os.environ)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Share usage data
|
||||||
c["buildbotNetUsageData"] = None
|
c["buildbotNetUsageData"] = None
|
||||||
|
|
||||||
# Authentication
|
# Authentication
|
||||||
|
@ -132,13 +148,6 @@ def setup() -> Dict[str, Any]:
|
||||||
# Authorization
|
# Authorization
|
||||||
c["www"]["authz"] = conf.auth.fetch_authorization(environment)
|
c["www"]["authz"] = conf.auth.fetch_authorization(environment)
|
||||||
|
|
||||||
# Disable UI - does not work
|
|
||||||
c["www"]["plugins"] = {
|
|
||||||
"waterfall_view": False,
|
|
||||||
"console_view": False,
|
|
||||||
"grid_view": False,
|
|
||||||
}
|
|
||||||
|
|
||||||
# UI Defaults
|
# UI Defaults
|
||||||
c["www"]["ui_default_config"] = {
|
c["www"]["ui_default_config"] = {
|
||||||
"Grid.fullChanges": True,
|
"Grid.fullChanges": True,
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
services:
|
services:
|
||||||
buildbot-master:
|
buildbot-master:
|
||||||
image: 'buildbot/buildbot-master:${BUILDBOT_IMAGE_TAG:-v4.1.0}'
|
# image: 'buildbot/buildbot-master:${BUILDBOT_IMAGE_TAG:-v4.1.0}'
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
env_file: .env
|
env_file: .env
|
||||||
hostname: buildbot-master
|
hostname: buildbot-master
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
@ -16,6 +18,7 @@ services:
|
||||||
- 'POSTGRES_USER=${POSTGRES_USER:-buildbot}'
|
- 'POSTGRES_USER=${POSTGRES_USER:-buildbot}'
|
||||||
- 'POSTGRES_DB=${POSTGRES_DB:-buildbot}'
|
- 'POSTGRES_DB=${POSTGRES_DB:-buildbot}'
|
||||||
- 'BUILDBOT_DB_URL=postgresql+psycopg2://{POSTGRES_USER}:{POSTGRES_PASSWORD}@postgresql/{POSTGRES_DB}'
|
- 'BUILDBOT_DB_URL=postgresql+psycopg2://{POSTGRES_USER}:{POSTGRES_PASSWORD}@postgresql/{POSTGRES_DB}'
|
||||||
|
- 'BUILDBOT_PROMETHEUS_PORT=9100'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
- CMD
|
- CMD
|
||||||
|
@ -72,6 +75,12 @@ services:
|
||||||
retries: 10
|
retries: 10
|
||||||
networks:
|
networks:
|
||||||
buildbot: null
|
buildbot: null
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus
|
||||||
|
volumes:
|
||||||
|
- './prometheus.yml:/etc/prometheus/prometheus.yml'
|
||||||
|
ports:
|
||||||
|
- '9090:9090'
|
||||||
volumes:
|
volumes:
|
||||||
buildbot-db: {}
|
buildbot-db: {}
|
||||||
networks:
|
networks:
|
||||||
|
|
7
prometheus.yml
Normal file
7
prometheus.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
global:
|
||||||
|
scrape_interval: 60s
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: buildbot
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
- buildbot-master:9100
|
49
provision/local/main.tf
Normal file
49
provision/local/main.tf
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
libvirt = {
|
||||||
|
source = "dmacvicar/libvirt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "libvirt" {
|
||||||
|
uri = "qemu:///system"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "libvirt_volume" "win11-ltsc-cloudbase-init" {
|
||||||
|
name = "win11-ltsc-cloudbase-init.qcow2"
|
||||||
|
pool = "default" # List storage pools using virsh pool-list
|
||||||
|
source = "win11-ltsc-original.qcow2"
|
||||||
|
format = "qcow2"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "libvirt_domain" "win11-ltsc-cloudbase-init" {
|
||||||
|
name = "win11-ltsc-cloudbase-init"
|
||||||
|
memory = "8192"
|
||||||
|
vcpu = 4
|
||||||
|
|
||||||
|
network_interface {
|
||||||
|
network_name = "default" # List networks with virsh net-list
|
||||||
|
}
|
||||||
|
|
||||||
|
disk {
|
||||||
|
volume_id = "${libvirt_volume.win11-ltsc-cloudbase-init.id}"
|
||||||
|
}
|
||||||
|
|
||||||
|
console {
|
||||||
|
type = "pty"
|
||||||
|
target_type = "serial"
|
||||||
|
target_port = "0"
|
||||||
|
}
|
||||||
|
|
||||||
|
graphics {
|
||||||
|
type = "spice"
|
||||||
|
listen_type = "address"
|
||||||
|
autoport = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Output Server IP
|
||||||
|
output "ip" {
|
||||||
|
value = "${libvirt_domain.centos7.network_interface.0.addresses.0}"
|
||||||
|
}
|
Loading…
Reference in a new issue