Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

trigger devel and doc reconfiguration for changed repositories #345

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions ros_buildfarm/templates/misc/rosdistro_cache_job.xml.em
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,16 @@
'publisher_groovy-postbuild_reconfigure-updated-packages',
reconfigure_job_names=reconfigure_job_names,
))@
@(SNIPPET(
'publisher_groovy-postbuild_reconfigure-updated-repositories',
entry_type='doc',
reconfigure_repo_names=reconfigure_doc_repo_names,
))@
@(SNIPPET(
'publisher_groovy-postbuild_reconfigure-updated-repositories',
entry_type='source',
reconfigure_repo_names=reconfigure_source_repo_names,
))@
@(SNIPPET(
'publisher_mailer',
recipients=notification_emails,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
@(SNIPPET(
'publisher_groovy-postbuild',
script='\n'.join([
'// FIND UPDATED REPOSITORIES AND TRIGGER RECONFIGURE',
'import hudson.model.Cause.UserIdCause',
'import hudson.model.ParametersAction',
'import hudson.model.StringParameterValue',
'import java.io.BufferedReader',
'import java.util.regex.Matcher',
'import java.util.regex.Pattern',
'import jenkins.model.Jenkins',
'',
'reconfigure_repo_names = []',
] +
['reconfigure_repo_names << "%s"' % name for name in reconfigure_repo_names] +
[
'',
'pattern = Pattern.compile(".*- updated \'%s\' entry for repository \'(.+)\'")' % entry_type,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

'',
'repositories = []',
'r = manager.build.getLogReader()',
'br = new BufferedReader(r)',
'def line',
'while ((line = br.readLine()) != null) {',
' matcher = pattern.matcher(line)',
' if (matcher.matches()) {',
' repositories << matcher.group(1)',
' }',
'}',
'',
'if (repositories) {',
' description = "Updated %s repositories:"' % entry_type,
' repository_names = ""',
' for (repo_name in repositories) {',
' description += " " + repo_name',
' if (repository_names != "") repository_names += " "',
' repository_names += repo_name',
' }',
' manager.build.setDescription(description)',
'',
' for (p in Jenkins.instance.allItems) {',
' if (p.name in reconfigure_job_names) {',
' p.scheduleBuild(1, new UserIdCause(), new ParametersAction(new StringParameterValue("repository_names", repository_names)))',
' }',
' }',
'}',
]),
))@
24 changes: 23 additions & 1 deletion scripts/misc/generate_rosdistro_cache_job.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,15 @@
from ros_buildfarm.argument import add_argument_config_url
from ros_buildfarm.argument import add_argument_dry_run
from ros_buildfarm.argument import add_argument_rosdistro_name
from ros_buildfarm.common import get_doc_view_name
from ros_buildfarm.common import get_release_job_prefix
from ros_buildfarm.common import \
get_repositories_and_script_generating_key_files
from ros_buildfarm.common import get_devel_view_name
from ros_buildfarm.config import get_doc_build_files
from ros_buildfarm.config import get_index
from ros_buildfarm.config import get_release_build_files
from ros_buildfarm.common import get_release_job_prefix
from ros_buildfarm.config import get_source_build_files
from ros_buildfarm.git import get_repository
from ros_buildfarm.jenkins import configure_job
from ros_buildfarm.jenkins import configure_management_view
Expand Down Expand Up @@ -66,6 +70,22 @@ def get_job_config(args, config):
job_name = '%s_%s' % (group_name, 'reconfigure-jobs')
reconfigure_job_names.append(job_name)

reconfigure_doc_repo_names = []
build_files = get_doc_build_files(config, args.rosdistro_name)
for doc_build_name in sorted(build_files.keys()):
group_name = get_doc_view_name(
args.rosdistro_name, doc_build_name)
job_name = '%s_%s' % (group_name, 'reconfigure-jobs')
reconfigure_doc_repo_names.append(job_name)

reconfigure_source_repo_names = []
build_files = get_source_build_files(config, args.rosdistro_name)
for source_build_name in sorted(build_files.keys()):
group_name = get_devel_view_name(
args.rosdistro_name, doc_build_name)
job_name = '%s_%s' % (group_name, 'reconfigure-jobs')
reconfigure_source_repo_names.append(job_name)

job_data = copy.deepcopy(args.__dict__)
job_data.update({
'ros_buildfarm_repository': get_repository(),
Expand All @@ -77,6 +97,8 @@ def get_job_config(args, config):
'repository_args': repository_args,

'reconfigure_job_names': reconfigure_job_names,
'reconfigure_doc_repo_names': reconfigure_doc_repo_names,
'reconfigure_source_repo_names': reconfigure_source_repo_names,

'notification_emails':
config.distributions[args.rosdistro_name]['notification_emails'],
Expand Down