← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] ~ruinedyourlife/launchpad:artifactory-env-var-for-sourcecraft-builds into launchpad:master

 

Quentin Debhi has proposed merging ~ruinedyourlife/launchpad:artifactory-env-var-for-sourcecraft-builds into launchpad:master.

Commit message:
Add environment variables for artifactory variables

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~ruinedyourlife/launchpad/+git/launchpad/+merge/480171
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of ~ruinedyourlife/launchpad:artifactory-env-var-for-sourcecraft-builds into launchpad:master.
diff --git a/lib/lp/crafts/model/craftrecipebuildbehaviour.py b/lib/lp/crafts/model/craftrecipebuildbehaviour.py
index 50cfe6d..5a3522e 100644
--- a/lib/lp/crafts/model/craftrecipebuildbehaviour.py
+++ b/lib/lp/crafts/model/craftrecipebuildbehaviour.py
@@ -10,6 +10,8 @@ __all__ = [
     "CraftRecipeBuildBehaviour",
 ]
 
+import json
+from configparser import NoSectionError
 from typing import Any, Generator
 
 from twisted.internet import defer
@@ -29,6 +31,7 @@ from lp.buildmaster.model.buildfarmjobbehaviour import (
 )
 from lp.crafts.interfaces.craftrecipebuild import ICraftRecipeBuild
 from lp.registry.interfaces.series import SeriesStatus
+from lp.services.config import config
 from lp.soyuz.adapters.archivedependencies import get_sources_list_for_building
 
 
@@ -72,6 +75,17 @@ class CraftRecipeBuildBehaviour(BuilderProxyMixin, BuildFarmJobBehaviourBase):
                 "Missing chroot for %s" % build.distro_arch_series.displayname
             )
 
+    def build_environment_variables(self, distribution_name: str) -> dict:
+        try:
+            pairs = config["craftbuild." + distribution_name][
+                "environment_variables"
+            ]
+        except NoSectionError:
+            return {}
+        if pairs is None:
+            return {}
+        return json.loads(pairs)
+
     @defer.inlineCallbacks
     def extraBuildArgs(self, logger=None) -> Generator[Any, Any, BuildArgs]:
         """
@@ -119,6 +133,10 @@ class CraftRecipeBuildBehaviour(BuilderProxyMixin, BuildFarmJobBehaviourBase):
                 )
             )
         args["private"] = build.is_private
+        distribution_name = build.distro_series.distribution.name
+        args["environment_variables"] = self.build_environment_variables(
+            distribution_name
+        )
         return args
 
     def verifySuccessfulBuild(self):
diff --git a/lib/lp/services/config/schema-lazr.conf b/lib/lp/services/config/schema-lazr.conf
index f634d11..dc3f97a 100644
--- a/lib/lp/services/config/schema-lazr.conf
+++ b/lib/lp/services/config/schema-lazr.conf
@@ -301,6 +301,20 @@ secrets: none
 scan_malware: False
 
 
+[craftbuild.soss]
+# value is a JSON Object
+# example:
+# environment_variables: {
+#    "CARGO_ARTIFACTORY1_URL": "https://canonical.jfrog.io/artifactory/api/cargo/cargo-upstream/index/";,
+#    "CARGO_ARTIFACTORY1_TOKEN": "<TOKEN>"
+#    "MAVEN_ARTIFACTORY1_URL": "https://canonical.jfrog.io/artifactory/api/maven/maven-upstream/index";,
+#    "MAVEN_ARTIFACTORY1_USERNAME": "user",
+#    "MAVEN_ARTIFACTORY1_PASSWORD": "pass"
+# }
+# 
+environment_variables: none 
+
+
 [codebrowse]
 # Where to store codebrowse's sqlite "files changed" caches.  If
 # empty, the logs will be stored in a folder called 'logs' next to the

Follow ups