autoproj-jenkins 0.3.12 → 0.3.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b13ae4987a42da1d0a0c189cfd334388ee517144
4
- data.tar.gz: 8a9c5782ebb1d54b488d01dcb4aefbe0c1312071
3
+ metadata.gz: 72a9cb86a1c8f624ec17a0a6ce883707efc5404a
4
+ data.tar.gz: d86de73479511e2832c12ac3d72a25ee199b9246
5
5
  SHA512:
6
- metadata.gz: aabb3ee8fe4f6854088c23ce1b2c189acd4baf222a8a8437a76396efe7b104a5a9c09e242fdcec61444dbe11efa19ac2b48ca7b0a83f41981044a1ed8c4baff3
7
- data.tar.gz: 86f7d440a45487a65e1fd51fb00271877afeb4e4fa7fdfe27ce80741d9f9c80af9360e044c6c30a731bbf4cd3cbdb4830b4e50ea6530c87cc51f918f71158509
6
+ metadata.gz: a6dceca3786f5b619cd8b44261d6af87f7487775b4f174f45e606edd0f040d015c917929035f21c6e39b33c5f4f8d358c5b9dff0bdfdc331e5dbfdd42a42c1bc
7
+ data.tar.gz: b6feea0a79c995366cc9efd0fba0f0e34cd9daeeced9e274dcd6a8346eb15e73e6aaa47ae98dad1f700a028bbcc9da586f7e6ab1ae560e2270ebfabecca8dbe3
@@ -22,7 +22,7 @@ module Autoproj
22
22
  results
23
23
  end
24
24
 
25
- def create_or_update_buildconf_job(*package_names, dev: false, credentials_id: nil, vcs_credentials: [])
25
+ def create_or_update_buildconf_job(*package_names, seed: nil, dev: false, credentials_id: nil, vcs_credentials: [])
26
26
  initialize_and_load
27
27
 
28
28
  if dev
@@ -38,12 +38,13 @@ module Autoproj
38
38
  # the buildconf template, so that the metapackage gets resolved
39
39
  # each time instead of only at the point 'jenkins init' was done
40
40
  updater.create_or_update_buildconf_job(*package_names, gemfile: gemfile,
41
+ seed: seed,
41
42
  autoproj_install_path: autoproj_install_path, dev: dev,
42
43
  credentials_id: credentials_id,
43
44
  vcs_credentials: parse_vcs_credentials(vcs_credentials))
44
45
  end
45
46
 
46
- def add_or_update_packages(*package_names, dev: false, vcs_credentials: [])
47
+ def add_or_update_packages(*package_names, seed: nil, dev: false, vcs_credentials: [])
47
48
  initialize_and_load
48
49
  source_packages, _ = finalize_setup(package_names, non_imported_packages: :ignore)
49
50
  source_packages = source_packages.map do |package_name|
@@ -60,6 +61,7 @@ module Autoproj
60
61
 
61
62
  updater.update(
62
63
  *source_packages,
64
+ seed: seed,
63
65
  gemfile: gemfile,
64
66
  autoproj_install_path: autoproj_install_path,
65
67
  vcs_credentials: parse_vcs_credentials(vcs_credentials))
@@ -59,12 +59,19 @@ module Autoproj
59
59
  default: 'autoproj-jenkins-cli'
60
60
  option :vcs_credentials, desc: 'list of vcs_type:URLs for which credentials should be provided (see documentation)',
61
61
  type: :array, default: []
62
+ option :seed, desc: 'a YAML file containing seed configuration',
63
+ type: :string
62
64
  def init(url, *package_names)
63
65
  require 'autoproj/cli/jenkins'
64
66
  ops = create_ops(url, target_os: options[:target_os])
65
67
 
68
+ if options[:seed]
69
+ seed = File.read(options[:seed])
70
+ end
71
+
66
72
  ops.create_or_update_buildconf_job(
67
73
  *package_names,
74
+ seed: seed,
68
75
  credentials_id: options[:credentials_id],
69
76
  vcs_credentials: options[:vcs_credentials],
70
77
  dev: options[:dev])
@@ -79,11 +86,18 @@ module Autoproj
79
86
  type: :boolean, default: false
80
87
  option :vcs_credentials, desc: 'list of vcs_type:URLs for which credentials should be provided (see documentation)',
81
88
  type: :array, default: []
89
+ option :seed, desc: 'a YAML file containing seed configuration',
90
+ type: :string
82
91
  def update(url, *package_names)
83
92
  require 'autoproj/cli/jenkins'
93
+
94
+ if options[:seed]
95
+ seed = File.read(options[:seed])
96
+ end
97
+
84
98
  ops = create_ops(url)
85
99
  Autoproj.report(silent: !options[:debug], debug: options[:debug]) do
86
- updated_jobs = ops.add_or_update_packages(*package_names, dev: options[:dev], vcs_credentials: options[:vcs_credentials])
100
+ updated_jobs = ops.add_or_update_packages(*package_names, seed: seed, dev: options[:dev], vcs_credentials: options[:vcs_credentials])
87
101
  updated_jobs.sort.each do |job_name|
88
102
  puts job_name
89
103
  end
@@ -6,7 +6,9 @@ sh 'wget -O autoproj_install https://raw.githubusercontent.com/rock-core/autopro
6
6
  <% end %>
7
7
  def gemfile = "<%= read_and_escape_file gemfile %>"
8
8
  writeFile file: 'Gemfile', text: gemfile
9
- def config = "<%= render_template('buildconf-config.yml', vcs: vcs, escape: true) %>"
9
+ def user_seed_config = "<%= escape_to_groovy(seed) %>"
10
+ writeFile file: 'user_seed.yml', text: user_seed_config
11
+ def config = "<%= render_template('buildconf-config.yml', seed: seed, vcs: vcs, escape: true) %>"
10
12
  writeFile file: 'seed.yml', text: config
11
13
  dir('dev') {
12
14
  sh "ruby ../autoproj_install --skip-stage2 --seed-config=../seed.yml --gems-path=${env.JENKINS_HOME}/cache/gems --gemfile=../Gemfile"
@@ -1,14 +1,7 @@
1
1
  osdeps_mode: 'all'
2
- GITORIOUS: http,http,http
3
- GITHUB: http,http,http
4
2
  separate_prefixes: true
5
- ROCK_SELECTED_FLAVOR: master
6
- ROCK_FLAVOR: master
7
- ROCK_BRANCH: master
8
- USE_OCL: false
9
- rtt_target: gnulinux
10
- rtt_corba_implementation: omniorb
11
3
  autoproj_test_utility_default: true
12
4
  import_log_enabled: false
13
5
  jenkins_ci: true
14
6
  <%= ::YAML.dump('manifest_source' => vcs.to_hash).gsub(/^---\s*/, '') %>
7
+ <%= seed %>
@@ -5,7 +5,7 @@ node(label: 'autoproj-jenkins') {
5
5
  def autoproj = "${fullWorkspaceDir}/dev/.autoproj/bin/autoproj"
6
6
 
7
7
  stage('bootstrap') {
8
- <%= render_template('bootstrap.pipeline', poll: true, vcs: vcs, gemfile: gemfile, autoproj_install_path: autoproj_install_path, vcs_credentials: vcs_credentials, indent: 4) %>
8
+ <%= render_template('bootstrap.pipeline', seed: seed, poll: true, vcs: vcs, gemfile: gemfile, autoproj_install_path: autoproj_install_path, vcs_credentials: vcs_credentials, indent: 4) %>
9
9
  }
10
10
 
11
11
  dir('dev') {
@@ -37,15 +37,15 @@ node(label: 'autoproj-jenkins') {
37
37
  jobNames = withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: '<%= credentials_id %>',
38
38
  usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
39
39
  def credentials = " --username '${env.USERNAME}' --password '${env.PASSWORD}'"
40
- sh(script: "${autoproj} jenkins update${arg_dev}${arg_job_prefix} '${env.JENKINS_URL}' ${arg_packages}${credentials}${arg_vcs_credentials}", returnStdout: true).split("\n")
40
+ sh(script: "${autoproj} jenkins update${arg_dev}${arg_job_prefix} --seed=../user_seed.yml '${env.JENKINS_URL}' ${arg_packages}${credentials}${arg_vcs_credentials}", returnStdout: true).split("\n")
41
41
  }
42
42
  <% else %>
43
43
  jobNames = sh(
44
- script: "${autoproj} jenkins update${arg_dev}${arg_job_prefix} 'http://localhost:8080' ${arg_packages}${arg_vcs_credentials}",
44
+ script: "${autoproj} jenkins update${arg_dev}${arg_job_prefix} --seed=../user_seed.yml 'http://localhost:8080' ${arg_packages}${arg_vcs_credentials}",
45
45
  returnStdout: true).split("\n")
46
46
  <% end %>
47
+ triggerDownstreamJobs(jobNames)
47
48
  }
48
- triggerDownstreamJobs(jobNames)
49
49
  }
50
50
  }
51
51
 
@@ -8,6 +8,10 @@ def isUpstreamOK(jobName, buildId)
8
8
  }
9
9
 
10
10
  def build = job.getBuild(buildId.toString())
11
+ if (!build)
12
+ {
13
+ error("cannot find build ${buildId} of job ${jobName}")
14
+ }
11
15
 
12
16
  def result = build.getResult()
13
17
  if (result)
@@ -44,7 +44,7 @@ node(label: 'autoproj-jenkins') {
44
44
  def upstreamPackagePrefixes = null
45
45
 
46
46
  stage('bootstrap') {
47
- <%= render_template('bootstrap.pipeline', poll: false, vcs: buildconf_vcs, gemfile: gemfile, autoproj_install_path: autoproj_install_path, vcs_credentials: vcs_credentials, indent: 4) %>
47
+ <%= render_template('bootstrap.pipeline', seed: seed, poll: false, vcs: buildconf_vcs, gemfile: gemfile, autoproj_install_path: autoproj_install_path, vcs_credentials: vcs_credentials, indent: 4) %>
48
48
 
49
49
  def jenkins_dependency_overrides = "<%= render_template 'jenkins_dependency_overrides.rb', escape: true, package_name: package_name, upstream_jobs: upstream_jobs %>"
50
50
  writeFile file: 'dev/autoproj/overrides.d/99_jenkins_dependency_overrides.rb',
@@ -50,7 +50,7 @@ module Autoproj::Jenkins
50
50
  # with --dev or not
51
51
  # @param [Array<Autoproj::PackageDefinition>] packages if non-empty,
52
52
  # restrict operations to these packages and their dependencies
53
- def render_buildconf_pipeline(*package_names, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, dev: false, credentials_id: nil, vcs_credentials: Credentials.new)
53
+ def render_buildconf_pipeline(*package_names, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, dev: false, credentials_id: nil, vcs_credentials: Credentials.new, seed: nil)
54
54
  manifest_vcs = ws.manifest.vcs
55
55
  if manifest_vcs.local? || manifest_vcs.none?
56
56
  raise ArgumentError, "cannot use Jenkins to build an autoproj buildconf that is not on a remotely acessible VCS"
@@ -64,6 +64,7 @@ module Autoproj::Jenkins
64
64
  autoproj_install_path: autoproj_install_path,
65
65
  job_prefix: job_prefix,
66
66
  credentials_id: credentials_id,
67
+ seed: seed,
67
68
  vcs_credentials: vcs_credentials,
68
69
  dev: dev)
69
70
  end
@@ -77,7 +78,7 @@ module Autoproj::Jenkins
77
78
  # within VMs
78
79
  # @param [Integer] quiet_period the job's quiet period, in seconds.
79
80
  # Mostly used within autoproj-jenkins tests
80
- def create_or_update_buildconf_job(*package_names, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, dev: false, quiet_period: 5, credentials_id: nil, vcs_credentials: Credentials.new)
81
+ def create_or_update_buildconf_job(*package_names, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, seed: nil, dev: false, quiet_period: 5, credentials_id: nil, vcs_credentials: Credentials.new)
81
82
  job_name = job_name_from_package_name("buildconf")
82
83
 
83
84
  pipeline = render_buildconf_pipeline(
@@ -86,6 +87,7 @@ module Autoproj::Jenkins
86
87
  autoproj_install_path: autoproj_install_path,
87
88
  credentials_id: credentials_id,
88
89
  vcs_credentials: vcs_credentials,
90
+ seed: seed,
89
91
  dev: dev)
90
92
  server.create_or_reset_job(job_name, 'buildconf.xml', pipeline: pipeline, quiet_period: quiet_period)
91
93
  end
@@ -144,7 +146,7 @@ module Autoproj::Jenkins
144
146
  #
145
147
  # @return [Array<String>] the list of names of the jobs that have been
146
148
  # created/updated
147
- def update(*packages, quiet_period: 5, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, vcs_credentials: Credentials.new)
149
+ def update(*packages, seed: nil, quiet_period: 5, gemfile: 'buildconf-Gemfile', autoproj_install_path: nil, vcs_credentials: Credentials.new)
148
150
  reverse_dependencies = ws.manifest.compute_revdeps
149
151
 
150
152
  package_names = packages.map(&:name).to_set
@@ -168,6 +170,7 @@ module Autoproj::Jenkins
168
170
  pipeline = server.render_pipeline(job_name, 'package.pipeline',
169
171
  buildconf_vcs: ws.manifest.vcs,
170
172
  vcs: package.vcs,
173
+ seed: seed,
171
174
  package_name: package.name,
172
175
  package_dir: Pathname.new(package.autobuild.srcdir).relative_path_from(Pathname.new(ws.root_dir)).to_s,
173
176
  artifact_glob: "**/*",
@@ -1,5 +1,5 @@
1
1
  module Autoproj
2
2
  module Jenkins
3
- VERSION = "0.3.12"
3
+ VERSION = "0.3.13"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: autoproj-jenkins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.12
4
+ version: 0.3.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvain Joyeux
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-24 00:00:00.000000000 Z
11
+ date: 2017-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jenkins_api_client