{"action":"created","comment":{"url":"https://api.github.com/repos/ros2/ci/pulls/comments/127263642","pull_request_review_id":49828910,"id":127263642,"diff_hunk":"@@ -114,73 +116,89 @@ def main(argv=None):\n     if not args.commit:\n         jenkins_kwargs['dry_run'] = True\n \n-    # configure os specific jobs\n-    for os_name in sorted(os_configs.keys()):\n+    def create_job(os_name, job_name, template_file, additional_dict):\n         job_data = dict(data)\n         job_data['os_name'] = os_name\n         job_data.update(os_configs[os_name])\n+        job_data.update(additional_dict)\n+        job_config = expand_template(template_file, job_data)\n+        configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n \n+    # configure os specific jobs\n+    for os_name in sorted(os_configs.keys()):\n         # configure manual triggered job\n-        job_name = 'ci_' + os_name\n-        job_data['cmake_build_type'] = 'None'\n-        job_config = expand_template('ci_job.xml.em', job_data)\n-        configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n+        create_job(os_name, 'ci_' + os_name, 'ci_job.xml.em', {\n+            'cmake_build_type': 'None',\n+        })\n \n         # configure a manual version of the packaging job\n-        job_name = 'ci_packaging_' + os_name\n-        job_data['cmake_build_type'] = 'RelWithDebInfo'\n-        job_data['test_bridge_default'] = 'true'\n-        job_config = expand_template('packaging_job.xml.em', job_data)\n-        configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n-\n-        # all following jobs are triggered nightly with email notification\n-        job_data['time_trigger_spec'] = '30 7 * * *'\n-        # for now, skip emailing about Windows failures\n-        job_data['mailer_recipients'] = 'ros2-buildfarm@googlegroups.com'\n+        create_job(os_name, 'ci_packaging_' + os_name, 'packaging_job.xml.em', {\n+            'cmake_build_type': 'RelWithDebInfo',\n+            'test_bridge_default': 'true',\n+        })\n \n         # configure packaging job\n-        job_name = 'packaging_' + os_name\n-        job_data['cmake_build_type'] = 'RelWithDebInfo'\n-        job_data['test_bridge_default'] = 'true'\n-        job_config = expand_template('packaging_job.xml.em', job_data)\n-        configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n+        create_job(os_name, 'packaging_' + os_name, 'packaging_job.xml.em', {\n+            'cmake_build_type': 'RelWithDebInfo',\n+            'test_bridge_default': 'true',\n+            'time_trigger_spec': PERIODIC_JOB_SPEC,\n+            'mailer_recipients': DEFAULT_MAIL_RECIPIENTS,\n+        })\n \n-        # keeping the paths on Windows shorter\n-        os_name = os_name.replace('windows', 'win')\n         # configure nightly triggered job\n-        job_name = 'nightly_' + os_name + '_debug'\n-        if os_name == 'win':\n-            job_name = job_name[0:-2]\n-        job_data['cmake_build_type'] = 'Debug'\n-        job_config = expand_template('ci_job.xml.em', job_data)\n-        configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n+        short_name = 'nightly_' + os_name + '_debug'\n+        if os_name == 'windows':\n+            short_name = 'nightly_win_deb'\n+        create_job(os_name, short_name, 'ci_job.xml.em', {\n+            'cmake_build_type': 'Debug',\n+            'time_trigger_spec': PERIODIC_JOB_SPEC,\n+            'mailer_recipients': DEFAULT_MAIL_RECIPIENTS,\n+        })\n \n         # configure nightly coverage job on x86 Linux only\n         if os_name == 'linux':\n-            job_name = 'nightly_' + os_name + '_coverage'\n-            job_data['cmake_build_type'] = 'Debug'\n-            job_data['enable_c_coverage_default'] = 'true'\n-            job_config = expand_template('ci_job.xml.em', job_data)\n-            configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n-            job_data['enable_c_coverage_default'] = 'false'\n+            create_job(os_name, 'nightly_linux_coverage', 'ci_job.xml.em', {\n+                'cmake_build_type': 'Debug',\n+                'enable_c_coverage_default': 'true',\n+                'time_trigger_spec': PERIODIC_JOB_SPEC,\n+                'mailer_recipients': DEFAULT_MAIL_RECIPIENTS,\n+            })\n \n         # configure nightly triggered job\n-        job_name = 'nightly_' + os_name + '_release'\n-        if os_name == 'win':\n-            job_name = job_name[0:-4]\n-        job_data['cmake_build_type'] = 'Release'\n-        job_config = expand_template('ci_job.xml.em', job_data)\n-        configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n+        short_name = 'nightly_' + os_name + '_release'\n+        if os_name == 'windows':\n+            short_name = 'nightly_win_rel'\n+        create_job(os_name, short_name, 'ci_job.xml.em', {\n+            'cmake_build_type': 'Release',\n+            'time_trigger_spec': PERIODIC_JOB_SPEC,\n+            'mailer_recipients': DEFAULT_MAIL_RECIPIENTS,\n+        })\n \n         # configure nightly triggered job with repeated testing\n-        job_name = 'nightly_' + os_name + '_repeated'\n-        if os_name == 'win':\n-            job_name = job_name[0:-5]\n-        job_data['time_trigger_spec'] = '30 7 * * *'\n-        job_data['cmake_build_type'] = 'None'\n-        job_data['ament_test_args_default'] = '--retest-until-fail 20 --ctest-args -LE linter --'\n-        job_config = expand_template('ci_job.xml.em', job_data)\n-        configure_job(jenkins, job_name, job_config, **jenkins_kwargs)\n+        short_name = 'nightly_' + os_name + '_repeated'\n+        if os_name == 'windows':\n+            short_name = 'nightly_win_rep'\n+        create_job(os_name, short_name, 'ci_job.xml.em', {\n+            'cmake_build_type': 'None',\n+            'time_trigger_spec': PERIODIC_JOB_SPEC,\n+            'mailer_recipients': DEFAULT_MAIL_RECIPIENTS,\n+            'ament_test_args_default': '--retest-until-fail 20 --ctest-args -LE linter --',\n+        })\n+\n+        # configure turtlebot jobs on Linux only for now\n+        if os_name in ['linux', 'linux-aarch64']:\n+            create_job(os_name, 'ci_turtlebot-demo_%s' % (os_name), 'ci_job.xml.em', {\n+                'cmake_build_type': 'None',","path":"create_jenkins_job.py","position":134,"original_position":134,"commit_id":"6b5fbfab9ec23fd459cc3dafe89b11b608884a98","original_commit_id":"6b5fbfab9ec23fd459cc3dafe89b11b608884a98","user":{"login":"mikaelarguedas","id":6644208,"avatar_url":"https://avatars2.githubusercontent.com/u/6644208?v=3","gravatar_id":"","url":"https://api.github.com/users/mikaelarguedas","html_url":"https://github.com/mikaelarguedas","followers_url":"https://api.github.com/users/mikaelarguedas/followers","following_url":"https://api.github.com/users/mikaelarguedas/following{/other_user}","gists_url":"https://api.github.com/users/mikaelarguedas/gists{/gist_id}","starred_url":"https://api.github.com/users/mikaelarguedas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mikaelarguedas/subscriptions","organizations_url":"https://api.github.com/users/mikaelarguedas/orgs","repos_url":"https://api.github.com/users/mikaelarguedas/repos","events_url":"https://api.github.com/users/mikaelarguedas/events{/privacy}","received_events_url":"https://api.github.com/users/mikaelarguedas/received_events","type":"User","site_admin":false},"body":"We usually never have None nightlies, is there a reason to have one for the turtlebot job ?","created_at":"2017-07-13T16:20:34Z","updated_at":"2017-07-13T16:32:58Z","html_url":"https://github.com/ros2/ci/pull/92#discussion_r127263642","pull_request_url":"https://api.github.com/repos/ros2/ci/pulls/92","_links":{"self":{"href":"https://api.github.com/repos/ros2/ci/pulls/comments/127263642"},"html":{"href":"https://github.com/ros2/ci/pull/92#discussion_r127263642"},"pull_request":{"href":"https://api.github.com/repos/ros2/ci/pulls/92"}}},"pull_request":{"url":"https://api.github.com/repos/ros2/ci/pulls/92","id":130241000,"html_url":"https://github.com/ros2/ci/pull/92","diff_url":"https://github.com/ros2/ci/pull/92.diff","patch_url":"https://github.com/ros2/ci/pull/92.patch","issue_url":"https://api.github.com/repos/ros2/ci/issues/92","number":92,"state":"open","locked":false,"title":"Add nightly turtlebot","user":{"login":"clalancette","id":163000,"avatar_url":"https://avatars3.githubusercontent.com/u/163000?v=3","gravatar_id":"","url":"https://api.github.com/users/clalancette","html_url":"https://github.com/clalancette","followers_url":"https://api.github.com/users/clalancette/followers","following_url":"https://api.github.com/users/clalancette/following{/other_user}","gists_url":"https://api.github.com/users/clalancette/gists{/gist_id}","starred_url":"https://api.github.com/users/clalancette/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/clalancette/subscriptions","organizations_url":"https://api.github.com/users/clalancette/orgs","repos_url":"https://api.github.com/users/clalancette/repos","events_url":"https://api.github.com/users/clalancette/events{/privacy}","received_events_url":"https://api.github.com/users/clalancette/received_events","type":"User","site_admin":false},"body":"The change I really wanted to do was to add a nightly build job for turtlebot.  However, I found the way the current jobs are created to be confusing, so I also rewrote the loop in the first patch.  See the commit message for the first patch for an explanation.\r\n\r\nI tested this in a dry-run locally; the only things that were going to be different from before were a small typo fix in the nightly_*_repeated jobs (an extra space at the end of the spec), and the creation of the two new nightly turtlebot jobs.","created_at":"2017-07-12T21:29:03Z","updated_at":"2017-07-13T16:32:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ba970d780ddc11fc3fb6f65f7315c76154245239","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/ros2/ci/pulls/92/commits","review_comments_url":"https://api.github.com/repos/ros2/ci/pulls/92/comments","review_comment_url":"https://api.github.com/repos/ros2/ci/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ros2/ci/issues/92/comments","statuses_url":"https://api.github.com/repos/ros2/ci/statuses/6b5fbfab9ec23fd459cc3dafe89b11b608884a98","head":{"label":"ros2:add-nightly-turtlebot","ref":"add-nightly-turtlebot","sha":"6b5fbfab9ec23fd459cc3dafe89b11b608884a98","user":{"login":"ros2","id":3979232,"avatar_url":"https://avatars2.githubusercontent.com/u/3979232?v=3","gravatar_id":"","url":"https://api.github.com/users/ros2","html_url":"https://github.com/ros2","followers_url":"https://api.github.com/users/ros2/followers","following_url":"https://api.github.com/users/ros2/following{/other_user}","gists_url":"https://api.github.com/users/ros2/gists{/gist_id}","starred_url":"https://api.github.com/users/ros2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros2/subscriptions","organizations_url":"https://api.github.com/users/ros2/orgs","repos_url":"https://api.github.com/users/ros2/repos","events_url":"https://api.github.com/users/ros2/events{/privacy}","received_events_url":"https://api.github.com/users/ros2/received_events","type":"Organization","site_admin":false},"repo":{"id":69404013,"name":"ci","full_name":"ros2/ci","owner":{"login":"ros2","id":3979232,"avatar_url":"https://avatars2.githubusercontent.com/u/3979232?v=3","gravatar_id":"","url":"https://api.github.com/users/ros2","html_url":"https://github.com/ros2","followers_url":"https://api.github.com/users/ros2/followers","following_url":"https://api.github.com/users/ros2/following{/other_user}","gists_url":"https://api.github.com/users/ros2/gists{/gist_id}","starred_url":"https://api.github.com/users/ros2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros2/subscriptions","organizations_url":"https://api.github.com/users/ros2/orgs","repos_url":"https://api.github.com/users/ros2/repos","events_url":"https://api.github.com/users/ros2/events{/privacy}","received_events_url":"https://api.github.com/users/ros2/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ros2/ci","description":"ROS 2 CI Infrastructure","fork":false,"url":"https://api.github.com/repos/ros2/ci","forks_url":"https://api.github.com/repos/ros2/ci/forks","keys_url":"https://api.github.com/repos/ros2/ci/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ros2/ci/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ros2/ci/teams","hooks_url":"https://api.github.com/repos/ros2/ci/hooks","issue_events_url":"https://api.github.com/repos/ros2/ci/issues/events{/number}","events_url":"https://api.github.com/repos/ros2/ci/events","assignees_url":"https://api.github.com/repos/ros2/ci/assignees{/user}","branches_url":"https://api.github.com/repos/ros2/ci/branches{/branch}","tags_url":"https://api.github.com/repos/ros2/ci/tags","blobs_url":"https://api.github.com/repos/ros2/ci/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ros2/ci/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ros2/ci/git/refs{/sha}","trees_url":"https://api.github.com/repos/ros2/ci/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ros2/ci/statuses/{sha}","languages_url":"https://api.github.com/repos/ros2/ci/languages","stargazers_url":"https://api.github.com/repos/ros2/ci/stargazers","contributors_url":"https://api.github.com/repos/ros2/ci/contributors","subscribers_url":"https://api.github.com/repos/ros2/ci/subscribers","subscription_url":"https://api.github.com/repos/ros2/ci/subscription","commits_url":"https://api.github.com/repos/ros2/ci/commits{/sha}","git_commits_url":"https://api.github.com/repos/ros2/ci/git/commits{/sha}","comments_url":"https://api.github.com/repos/ros2/ci/comments{/number}","issue_comment_url":"https://api.github.com/repos/ros2/ci/issues/comments{/number}","contents_url":"https://api.github.com/repos/ros2/ci/contents/{+path}","compare_url":"https://api.github.com/repos/ros2/ci/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ros2/ci/merges","archive_url":"https://api.github.com/repos/ros2/ci/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ros2/ci/downloads","issues_url":"https://api.github.com/repos/ros2/ci/issues{/number}","pulls_url":"https://api.github.com/repos/ros2/ci/pulls{/number}","milestones_url":"https://api.github.com/repos/ros2/ci/milestones{/number}","notifications_url":"https://api.github.com/repos/ros2/ci/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ros2/ci/labels{/name}","releases_url":"https://api.github.com/repos/ros2/ci/releases{/id}","deployments_url":"https://api.github.com/repos/ros2/ci/deployments","created_at":"2016-09-27T22:29:57Z","updated_at":"2017-07-01T02:25:39Z","pushed_at":"2017-07-13T12:51:56Z","git_url":"git://github.com/ros2/ci.git","ssh_url":"git@github.com:ros2/ci.git","clone_url":"https://github.com/ros2/ci.git","svn_url":"https://github.com/ros2/ci","homepage":"http://ci.ros2.org/","size":376,"stargazers_count":3,"watchers_count":3,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":6,"forks":2,"open_issues":6,"watchers":3,"default_branch":"master"}},"base":{"label":"ros2:master","ref":"master","sha":"1726fd4573d98f30759779d030523371e6e8445f","user":{"login":"ros2","id":3979232,"avatar_url":"https://avatars2.githubusercontent.com/u/3979232?v=3","gravatar_id":"","url":"https://api.github.com/users/ros2","html_url":"https://github.com/ros2","followers_url":"https://api.github.com/users/ros2/followers","following_url":"https://api.github.com/users/ros2/following{/other_user}","gists_url":"https://api.github.com/users/ros2/gists{/gist_id}","starred_url":"https://api.github.com/users/ros2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros2/subscriptions","organizations_url":"https://api.github.com/users/ros2/orgs","repos_url":"https://api.github.com/users/ros2/repos","events_url":"https://api.github.com/users/ros2/events{/privacy}","received_events_url":"https://api.github.com/users/ros2/received_events","type":"Organization","site_admin":false},"repo":{"id":69404013,"name":"ci","full_name":"ros2/ci","owner":{"login":"ros2","id":3979232,"avatar_url":"https://avatars2.githubusercontent.com/u/3979232?v=3","gravatar_id":"","url":"https://api.github.com/users/ros2","html_url":"https://github.com/ros2","followers_url":"https://api.github.com/users/ros2/followers","following_url":"https://api.github.com/users/ros2/following{/other_user}","gists_url":"https://api.github.com/users/ros2/gists{/gist_id}","starred_url":"https://api.github.com/users/ros2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ros2/subscriptions","organizations_url":"https://api.github.com/users/ros2/orgs","repos_url":"https://api.github.com/users/ros2/repos","events_url":"https://api.github.com/users/ros2/events{/privacy}","received_events_url":"https://api.github.com/users/ros2/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ros2/ci","description":"ROS 2 CI Infrastructure","fork":false,"url":"https://api.github.com/repos/ros2/ci","forks_url":"https://api.github.com/repos/ros2/ci/forks","keys_url":"https://api.github.com/repos/ros2/ci/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ros2/ci/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ros2/ci/teams","hooks_url":"https://api.github.com/repos/ros2/ci/hooks","issue_events_url":"https://api.github.com/repos/ros2/ci/issues/events{/number}","events_url":"https://api.github.com/repos/ros2/ci/events","assignees_url":"https://api.github.com/repos/ros2/ci/assignees{/user}","branches_url":"https://api.github.com/repos/ros2/ci/branches{/branch}","tags_url":"https://api.github.com/repos/ros2/ci/tags","blobs_url":"https://api.github.com/repos/ros2/ci/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ros2/ci/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ros2/ci/git/refs{/sha}","trees_url":"https://api.github.com/repos/ros2/ci/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ros2/ci/statuses/{sha}","languages_url":"https://api.github.com/repos/ros2/ci/languages","stargazers_url":"https://api.github.com/repos/ros2/ci/stargazers","contributors_url":"https://api.github.com/repos/ros2/ci/contributors","subscribers_url":"https://api.github.com/repos/ros2/ci/subscribers","subscription_url":"https://api.github.com/repos/ros2/ci/subscription","commits_url":"https://api.github.com/repos/ros2/ci/commits{/sha}","git_commits_url":"https://api.github.com/repos/ros2/ci/git/commits{/sha}","comments_url":"https://api.github.com/repos/ros2/ci/comments{/number}","issue_comment_url":"https://api.github.com/repos/ros2/ci/issues/comments{/number}","contents_url":"https://api.github.com/repos/ros2/ci/contents/{+path}","compare_url":"https://api.github.com/repos/ros2/ci/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ros2/ci/merges","archive_url":"https://api.github.com/repos/ros2/ci/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ros2/ci/downloads","issues_url":"https://api.github.com/repos/ros2/ci/issues{/number}","pulls_url":"https://api.github.com/repos/ros2/ci/pulls{/number}","milestones_url":"https://api.github.com/repos/ros2/ci/milestones{/number}","notifications_url":"https://api.github.com/repos/ros2/ci/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ros2/ci/labels{/name}","releases_url":"https://api.github.com/repos/ros2/ci/releases{/id}","deployments_url":"https://api.github.com/repos/ros2/ci/deployments","created_at":"2016-09-27T22:29:57Z","updated_at":"2017-07-01T02:25:39Z","pushed_at":"2017-07-13T12:51:56Z","git_url":"git://github.com/ros2/ci.git","ssh_url":"git@github.com:ros2/ci.git","clone_url":"https://github.com/ros2/ci.git","svn_url":"https://github.com/ros2/ci","homepage":"http://ci.ros2.org/","size":376,"stargazers_count":3,"watchers_count":3,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":6,"forks":2,"open_issues":6,"watchers":3,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ros2/ci/pulls/92"},"html":{"href":"https://github.com/ros2/ci/pull/92"},"issue":{"href":"https://api.github.com/repos/ros2/ci/issues/92"},"comments":{"href":"https://api.github.com/repos/ros2/ci/issues/92/comments"},"review_comments":{"href":"https://api.github.com/repos/ros2/ci/pulls/92/comments"},"review_comment":{"href":"https://api.github.com/repos/ros2/ci/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ros2/ci/pulls/92/commits"},"statuses":{"href":"https://api.github.com/repos/ros2/ci/statuses/6b5fbfab9ec23fd459cc3dafe89b11b608884a98"}}}}
{"actor":{"display_login":"mikaelarguedas"}}