# jenkins-grid CHANGELOG
+0.2.2
+-----
+- Bug fix: Docker volumes management.
+- revises documents.
+
0.2.1
-----
- bug fix.
## Contents
- [Requirements](#requirements)
- - [platforms](#platforms)
- - [packages](#packages)
+ - [platforms](#platforms)
+ - [packages](#packages)
- [Attributes](#attributes)
- [Usage](#usage)
- - [Recipes](#recipes)
- - [jenkins-grid::default](#jenkins-griddefault)
- - [jenkins-grid::docker-compose](#jenkins-griddocker-compose)
- - [Role Examples](#role-examples)
+ - [Recipes](#recipes)
+ - [jenkins-grid::default](#jenkins-griddefault)
+ - [jenkins-grid::docker-compose](#jenkins-griddocker-compose)
+ - [Role Examples](#role-examples)
+ - [SSL server keys and certificates management by ssl_cert cookbook](#ssl-server-keys-and-certificates-management-by-ssl_cert-cookbook)
- [License and Authors](#license-and-authors)
## Requirements
)
```
+### SSL server keys and certificates management by ssl_cert cookbook
+
+- create vault items.
+
+```text
+$ ruby -rjson -e 'puts JSON.generate({"private" => File.read("jenkins_io_example_com.prod.key")})' \
+> > ~/tmp/jenkins_io_example_com.prod.key.json
+
+$ knife vault create ssl_server_keys jenkins.io.example.com.prod \
+> --json ~/tmp/jenkins_io_example_com.prod.key.json
+
+$ ruby -rjson -e 'puts JSON.generate({"public" => File.read("jenkins_io_example_com.prod.crt")})' \
+> > ~/tmp/jenkins_io_example_com.prod.crt.json
+
+$ knife vault create ssl_server_certs jenkins.io.example.com.prod \
+> --json ~/tmp/jenkins_io_example_com.prod.crt.json
+```
+
+- grant reference permission to the Jenkins host
+
+```text
+$ knife vault update ssl_server_keys jenkins.io.example.com.prod -S 'name:jenkins-host.example.com'
+$ knife vault update ssl_server_certs jenkins.io.example.com.prod -S 'name:jenkins-host.example.com'
+```
+
+- modify run_list and attributes
+
+```ruby
+run_list(
+ 'recipe[ssl_cert::server_key_pairs]',
+ 'recipe[jenkins-grid::docker-compose]',
+)
+
+override_attributes(
+ 'ssl_cert' => {
+ 'common_names' => [
+ 'jenkins.io.example.com',
+ ],
+ },
+ 'jenkins-grid' => {
+ 'with_ssl_cert_cookbook' => true,
+ 'ssl_cert' => {
+ 'common_name' => 'jenkins.io.example.com',
+ },
+ # ...
+ },
+)
+```
+
## License and Authors
- Author:: whitestar at osdn.jp
```text
-Copyright 2016, whitestar
+Copyright 2016-2017, whitestar
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
'jenkins' => {
'restart' => 'always',
'image' => 'jenkins:2.19.4',
-=begin
- 'expose' => [
- '8083', # for https
- ],
+ #'expose' => [
+ # #'8083', # for https
+ #],
'ports' => [
#'8080:8080',
- '8083:8083',
- '50000:50000',
+ #'8083:8083',
+ #'50000:50000',
],
'environment' => {
+=begin
'JAVA_OPTS' => [
'-Dhudson.footerURL=http://mycompany.com',
'-Djava.util.logging.config.file=/var/jenkins_home/log.properties',
'--httpsCertificate=/var/lib/jenkins/server.crt',
'--httpsPrivateKey=/var/lib/jenkins/server.key',
].join(' '),
+=end
},
'volumes' => [
+=begin
+ # set automatically, if the node['jenkins-grid']['docker-compose']['jenkins_home']['path'] is not nil.
"#{node['jenkins-grid']['docker-compose']['jenkins_home']['path']}:/var/jenkins_home",
+ # These volumes will be set by the concourse-ci::docker-compose recipe automatically.
"#{server_cert_path(node['jenkins-grid']['ssl_cert']['common_name'])}:/var/lib/jenkins/server.crt:ro",
"#{node['jenkins-grid']['docker-compose']['app_dir']}/certs/server.key:/var/lib/jenkins/server.key:ro",
- ],
=end
+ ],
},
},
}
license 'Apache 2.0'
description 'Installs/Configures jenkins-grid'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
-version '0.2.1'
+version '0.2.2'
source_url 'http://scm.osdn.jp/gitroot/metasearch/grid-chef-repo.git'
issues_url 'https://osdn.jp/projects/metasearch/ticket'
-depends 'docker-grid', '>= 0.2.7'
+depends 'docker-grid', '>= 0.3.6'
depends 'ssl_cert', '>= 0.3.3'
include_recipe 'docker-grid::compose'
-envs = {}
-java_opts = []
-jenkins_opts = []
-vols = []
-
config = node['jenkins-grid']['docker-compose']['config']
override_config = node.override['jenkins-grid']['docker-compose']['config']
force_override_config = node.force_override['jenkins-grid']['docker-compose']['config']
app_dir = node['jenkins-grid']['docker-compose']['app_dir']
certs_dir = "#{app_dir}/certs"
groovy_dir = "#{app_dir}/ref/init.groovy.d"
-#etc_dir = "#{app_dir}/etc"
+
+envs = {}
+java_opts = []
+jenkins_opts = []
+vols = config['services']['jenkins']['volumes'].to_a
[
app_dir,
certs_dir,
groovy_dir,
- #etc_dir,
].each {|dir|
resources(directory: dir) rescue directory dir do
owner 'root'
unless jenkins_opts.empty?
if !config['services']['jenkins']['environment'].nil? \
&& !config['services']['jenkins']['environment']['JENKINS_OPTS'].nil?
- jenkins_opts.unshift("#{config['services']['jenkins']['environment']['JENKINS_OPTS']}")
+ jenkins_opts.unshift(config['services']['jenkins']['environment']['JENKINS_OPTS'])
end
envs['JENKINS_OPTS'] = jenkins_opts.join(' ')
end
unless java_opts.empty?
if !config['services']['jenkins']['environment'].nil? \
&& !config['services']['jenkins']['environment']['JAVA_OPTS'].nil?
- java_opts.unshift("#{config['services']['jenkins']['environment']['JAVA_OPTS']}")
+ java_opts.unshift(config['services']['jenkins']['environment']['JAVA_OPTS'])
end
envs['JAVA_OPTS'] = java_opts.join(' ')
end