Prototype merger support.

master
Simon Quigley 5 years ago
parent 6bf68cd794
commit 2112e13c3b

@ -121,9 +121,10 @@ class Generator:
template += text
template = Template(template)
url = data["packaging_url"]
branch = data["packaging_branch"]
if job_type == "package":
url = data["packaging_url"]
branch = data["packaging_branch"]
upstream = data["upstream_url"]
upload_target = data["upload_target"]
package_config = template.render(PACKAGING_URL=url,
@ -132,6 +133,12 @@ class Generator:
NAME=data["name"],
RELEASE=data["release"],
UPLOAD_TARGET=upload_target)
elif job_type == "merger":
default_branch = data["default_branch"]
package_config = template.render(PACKAGING_URL=url,
PACKAGING_BRANCH=branch,
NAME=data["name"],
DEFAULT_BRANCH=default_branch)
else:
raise ValueError("Invalid job type")
@ -153,8 +160,6 @@ class Generator:
# Authenticate to the Jenkins server
server = self.auth_jenkins_server()
# Assign the packagebuild template to a variable
# Iterate through the packages we have in our metadata and update the
# job config for each if they match. If there's no existing job found,
# just create it
@ -166,6 +171,21 @@ class Generator:
jobs.append(job_name)
for package in metadata:
# Create the merger jobs first
job_name = "merger_" + package["name"]
package_config = self.load_config("merger", package)
# TODO: This is duplicate code, and it should be consolidated
if job_name in jobs:
job = server.get_job(job_name)
job.update_config(package_config)
else:
job = server.create_job(job_name, str(package_config))
if "merger" in server.views:
view = server.views["merger"]
else:
view = server.views.create("merger")
view.add_job(job_name)
for release in package["releases"]:
job_name = release + "_" + package["name"]
# Load the config given the current data

@ -0,0 +1,75 @@
<?xml version='1.1' encoding='UTF-8'?>
<project>
<actions/>
<description></description>
<keepDependencies>false</keepDependencies>
<properties/>
<scm class="hudson.plugins.git.GitSCM" plugin="git@3.9.3">
<configVersion>2</configVersion>
<userRemoteConfigs>
<hudson.plugins.git.UserRemoteConfig>
<url>{{ PACKAGING_URL }}</url>
</hudson.plugins.git.UserRemoteConfig>
</userRemoteConfigs>
<branches>
<hudson.plugins.git.BranchSpec>
<name>*/{{ PACKAGING_BRANCH }}</name>
</hudson.plugins.git.BranchSpec>
</branches>
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations>
<submoduleCfg class="list"/>
<extensions>
<hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
<relativeTargetDir>{{ NAME }}</relativeTargetDir>
</hudson.plugins.git.extensions.impl.RelativeTargetDirectory>
</extensions>
</scm>
<canRoam>true</canRoam>
<disabled>false</disabled>
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
<blockBuildWhenUpstreamBuilding>true</blockBuildWhenUpstreamBuilding>
<triggers>
<jenkins.triggers.ReverseBuildTrigger>
<spec></spec>
<upstreamProjects>jobgenerator</upstreamProjects>
<threshold>
<name>SUCCESS</name>
<ordinal>0</ordinal>
<color>BLUE</color>
<completeBuild>true</completeBuild>
</threshold>
</jenkins.triggers.ReverseBuildTrigger>
<hudson.triggers.SCMTrigger>
<spec>*/5 * * * *</spec>
<ignorePostCommitHooks>false</ignorePostCommitHooks>
</hudson.triggers.SCMTrigger>
</triggers>
<concurrentBuild>false</concurrentBuild>
<builders>
<hudson.tasks.Shell>
<command>
git checkout {{ DEFAULT_BRANCH }}
git checkout {{ PACKAGING_BRANCH }}
git merge --ff-only {{ DEFAULT_BRANCH }}
git push origin {{ PACKAGING_BRANCH }}
</command>
</hudson.tasks.Shell>
</builders>
<publishers>
<hudson.plugins.ws__cleanup.WsCleanup plugin="ws-cleanup@0.37">
<patterns class="empty-list"/>
<deleteDirs>false</deleteDirs>
<skipWhenFailed>false</skipWhenFailed>
<cleanWhenSuccess>true</cleanWhenSuccess>
<cleanWhenUnstable>true</cleanWhenUnstable>
<cleanWhenFailure>true</cleanWhenFailure>
<cleanWhenNotBuilt>true</cleanWhenNotBuilt>
<cleanWhenAborted>true</cleanWhenAborted>
<notFailBuild>false</notFailBuild>
<cleanupMatrixParent>false</cleanupMatrixParent>
<externalDelete></externalDelete>
<disableDeferredWipeout>false</disableDeferredWipeout>
</hudson.plugins.ws__cleanup.WsCleanup>
</publishers>
<buildWrappers/>
</project>

@ -31,7 +31,7 @@
<triggers>
<jenkins.triggers.ReverseBuildTrigger>
<spec></spec>
<upstreamProjects>jobgenerator</upstreamProjects>
<upstreamProjects>merger_{{ NAME }}</upstreamProjects>
<threshold>
<name>SUCCESS</name>
<ordinal>0</ordinal>

Loading…
Cancel
Save