diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 031e625..0000000 --- a/Dockerfile +++ /dev/null @@ -1,11 +0,0 @@ -# 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"] diff --git a/buildbot/config/conf/auth.py b/buildbot/config/conf/auth.py index 1397212..30cb268 100644 --- a/buildbot/config/conf/auth.py +++ b/buildbot/config/conf/auth.py @@ -119,17 +119,4 @@ def fetch_authorization(environment: str): roleMatchers=file_based_group_username_role_matchers, ) - my_authz = buildbot.plugins.util.Authz( - allowRules=[ - buildbot.plugins.util.AnyControlEndpointMatcher( - role="Developers" - ), # Organization teams - ], - roleMatchers=[ - buildbot.plugins.util.RolesFromGroups( - groupPrefix="test-org/" - ) # Gitea organization - ], - ) - return my_authz diff --git a/buildbot/config/conf/local/auth.py b/buildbot/config/conf/local/auth.py index 33e611b..30eb7c2 100644 --- a/buildbot/config/conf/local/auth.py +++ b/buildbot/config/conf/local/auth.py @@ -2,9 +2,9 @@ # SPDX-FileCopyrightText: 2011-2024 Blender Authors # +# import buildbot.plugins import os from buildbot.www.oauth2 import OAuth2Auth -import buildbot.plugins from urllib.parse import urljoin # Buildbot admin with access to everything. @@ -29,8 +29,8 @@ gitea_client_secret = os.environ.get("GITEA_CLIENT_SECRET", default="") def get_authentication(environment: str): class GiteaAuth(OAuth2Auth): - name = "Gitea" - faIcon = "fa-gitea" + name = "projects.blender.org" + faIcon = "fa-cogs" AUTH_URL = "login/oauth/authorize" TOKEN_URL = "login/oauth/access_token" @@ -42,32 +42,10 @@ def get_authentication(environment: str): self.tokenUri = urljoin(endpoint, self.TOKEN_URL) def getUserInfoFromOAuthClient(self, c): - user_info = self.get(c, "/api/v1/user") + return self.get(c, "/api/v1/user") - orgs = self.get(c, "/api/v1/user/orgs") - org_groups = [org["username"] for org in orgs] + # class LocalEnvAuth(buildbot.plugins.util.CustomAuth): + # def check_credentials(self, user, password): + # return user.decode() == "admin" and password.decode() == "admin" - teams = self.get(c, "/api/v1/user/teams") - team_groups = [ - f"{team['organization']['username']}/{team['name']}" for team in teams - ] # Format: org/team - - groups = org_groups + team_groups - - user_data = { - "full_name": user_info.get("full_name", user_info.get("username")), - "email": user_info.get("email"), - "username": user_info.get("username"), - "groups": groups, - } - - return user_data - - class LocalEnvAuth(buildbot.plugins.util.CustomAuth): - def check_credentials(self, user, password): - return user.decode() == "admin" and password.decode() == "admin" - - if gitea_endpoint and gitea_client_id and gitea_client_secret: - return GiteaAuth(gitea_endpoint, gitea_client_id, gitea_client_secret) - else: - return LocalEnvAuth() + return GiteaAuth(gitea_endpoint, gitea_client_id, gitea_client_secret) diff --git a/buildbot/config/setup.py b/buildbot/config/setup.py index fc15bd1..7d73acf 100644 --- a/buildbot/config/setup.py +++ b/buildbot/config/setup.py @@ -85,12 +85,6 @@ def setup() -> Dict[str, Any]: else: c["services"] = [] - c["services"].append( - buildbot.plugins.reporters.Prometheus( - port=int(os.environ.get("BUILDBOT_PROMETHEUS_PORT", default=9100)) - ) - ) - ####### PROJECT IDENTITY # the 'title' string will appear at the top of this buildbot installation's @@ -105,48 +99,57 @@ def setup() -> Dict[str, Any]: # buildbot cannot figure out without some help. c["buildbotURL"] = os.environ.get("BUILDBOT_WEB_URL", "http://localhost:8010/") - # Initialize - c["www"] = {} - - # Port - c["www"]["port"] = os.environ.get("BUILDBOT_WEB_PORT", 8010) - - # Plugins - c["www"]["plugins"] = dict( - waterfall_view={}, - console_view={}, - grid_view={}, + # Minimalistic config to activate new web UI + c["www"] = dict( + port=os.environ.get("BUILDBOT_WEB_PORT", 8010), + plugins=dict(waterfall_view={}, console_view={}, grid_view={}), + 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 + }, ) - # 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 c["db"] = { "db_url": os.environ.get("BUILDBOT_DB_URL", "sqlite://").format(**os.environ) } - # Share usage data c["buildbotNetUsageData"] = None # Authentication c["www"]["auth"] = conf.auth.fetch_authentication(environment) # Authorization - c["www"]["authz"] = conf.auth.fetch_authorization(environment) + # c["www"]["authz"] = conf.auth.fetch_authorization(environment) + c["www"]["authz"] = buildbot.plugins.util.Authz( + allowRules=[ + buildbot.plugins.util.AnyControlEndpointMatcher( + role="Admins" + ), # Organization teams + ], + roleMatchers=[ + buildbot.plugins.util.RolesFromGroups( + groupPrefix="test-org/" + ) # Gitea organization + ], + ) + + # Disable UI - does not work + c["www"]["plugins"] = { + "waterfall_view": False, + "console_view": False, + "grid_view": False, + } # UI Defaults c["www"]["ui_default_config"] = { diff --git a/docker-compose.yml b/docker-compose.yml index fa67f08..b2dfb0b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,6 @@ services: buildbot-master: - # image: 'buildbot/buildbot-master:${BUILDBOT_IMAGE_TAG:-v4.1.0}' - build: - context: . + image: 'buildbot/buildbot-master:${BUILDBOT_IMAGE_TAG:-v4.1.0}' env_file: .env hostname: buildbot-master restart: unless-stopped @@ -18,7 +16,6 @@ services: - 'POSTGRES_USER=${POSTGRES_USER:-buildbot}' - 'POSTGRES_DB=${POSTGRES_DB:-buildbot}' - 'BUILDBOT_DB_URL=postgresql+psycopg2://{POSTGRES_USER}:{POSTGRES_PASSWORD}@postgresql/{POSTGRES_DB}' - - 'BUILDBOT_PROMETHEUS_PORT=9100' healthcheck: test: - CMD @@ -75,12 +72,6 @@ services: retries: 10 networks: buildbot: null - prometheus: - image: prom/prometheus - volumes: - - './prometheus.yml:/etc/prometheus/prometheus.yml' - ports: - - '9090:9090' volumes: buildbot-db: {} networks: diff --git a/prometheus.yml b/prometheus.yml deleted file mode 100644 index eba9cea..0000000 --- a/prometheus.yml +++ /dev/null @@ -1,7 +0,0 @@ -global: - scrape_interval: 60s -scrape_configs: - - job_name: buildbot - static_configs: - - targets: - - buildbot-master:9100 \ No newline at end of file diff --git a/provision/local/main.tf b/provision/local/main.tf deleted file mode 100644 index e9355dd..0000000 --- a/provision/local/main.tf +++ /dev/null @@ -1,49 +0,0 @@ -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}" -} \ No newline at end of file