OSDN Git Service

improves CA certificates import feature.
authorwhitestar <whitestar@gaea.test>
Sat, 24 Jun 2017 03:16:21 +0000 (12:16 +0900)
committerwhitestar <whitestar@gaea.test>
Sat, 24 Jun 2017 03:16:21 +0000 (12:16 +0900)
cookbooks/concourse-ci/CHANGELOG.md
cookbooks/concourse-ci/Gemfile
cookbooks/concourse-ci/Rakefile
cookbooks/concourse-ci/concourse.yml
cookbooks/concourse-ci/metadata.rb
cookbooks/concourse-ci/recipes/docker-compose.rb
cookbooks/concourse-ci/templates/default/usr/local/bin/fly_prune_workers

index 89bcd12..bbb04a0 100644 (file)
@@ -1,6 +1,11 @@
 concourse-ci CHANGELOG
 ======================
 
+0.1.9
+-----
+- improves CA certificates import feature.
+- refactoring.
+
 0.1.8
 -----
 - adds the `fly_prune_workers` command.
index 907b097..ad84be7 100644 (file)
@@ -1,3 +1,4 @@
 source 'https://rubygems.org'
 
-#gem 'foodcritic'
+# with Chef DK
+gem 'stove'
index 513cecc..01d55dd 100644 (file)
@@ -1,6 +1,7 @@
 require 'rspec/core/rake_task'
 require 'rubocop/rake_task'
 require 'foodcritic'
+require 'stove/rake_task'
 
 namespace :style do
   desc 'Run Ruby style checks'
@@ -20,4 +21,11 @@ task style: ['style:chef', 'style:ruby']
 desc 'Run ChefSpec examples'
 RSpec::Core::RakeTask.new(:spec)
 
+desc 'Publish cookbook'
+Stove::RakeTask.new(:publish) do |t|
+  t.stove_opts = [
+    '--no-git',
+  ]
+end
+
 task default: ['style', 'spec']
index 3e52268..30f7a88 100644 (file)
@@ -6,21 +6,37 @@ resources:
   source:
     uri: git://git.osdn.net/gitroot/metasearch/grid-chef-repo.git
     branch: master
+- name: chefdk-cache
+  type: docker-image
+  source:
+    repository: chef/chefdk
+    tag: 0.17.17
+    registry_mirror: {{registry-mirror}}  # e.g. https://registry.docker.example.com:5000
+    ca_certs:
+    - domain: {{registry-mirror-domain}}  # e.g. registry.docker.example.com:5000
+      cert: {{docker-reg-ca-cert}}
 
 jobs:
 - name: build-cookbook
   plan:
   - get: src-git
     trigger: false
+  - get: chefdk-cache
   - task: ci-build
+    image: chefdk-cache
     config:
       platform: linux
 
-      image_resource:
-        type: docker-image
-        source:
-          repository: chef/chefdk
-          tag: 0.17.17
+      #image_resource:
+      #  type: docker-image
+      #  source:
+      #    repository: chef/chefdk
+      #    tag: 0.17.17
+          # NG, setting disable
+          #registry_mirror: {{registry-mirror}}
+          #ca_certs:
+          #- domain: {{registry-mirror-domain}}
+          #  cert: {{docker-reg-ca-cert}}
 
       inputs:
       - name: src-git
@@ -33,4 +49,5 @@ jobs:
         - -c
         - |
           cd ./src-git/cookbooks/concourse-ci
+          bundle install
           rake
index a816ad5..7065579 100644 (file)
@@ -5,7 +5,7 @@ maintainer_email ''
 license          'Apache 2.0'
 description      'Installs/Configures Concourse CI by Docker Compose'
 long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
-version          '0.1.8'
+version          '0.1.9'
 source_url       'http://scm.osdn.jp/gitroot/metasearch/grid-chef-repo.git'
 issues_url       'https://osdn.jp/projects/metasearch/ticket'
 
index cde13f6..6f60512 100644 (file)
@@ -204,10 +204,35 @@ data_source = web_envs_org['CONCOURSE_POSTGRES_DATA_SOURCE']
 data_source = data_source.gsub(/<POSTGRES_PASSWORD>/, '${POSTGRES_PASSWORD}')
 web_envs['CONCOURSE_POSTGRES_DATA_SOURCE'] = data_source
 
+template "#{bin_dir}/concourse_up" do
+  source 'opt/docker-compose/app/concourse/bin/concourse_up'
+  owner 'root'
+  group 'root'
+  mode '0755'
+  action :create
+end
+
+if node['concourse-ci']['with_ssl_cert_cookbook']
+  ::Chef::Recipe.send(:include, SSLCert::Helper)
+  cn = node['concourse-ci']['ssl_cert']['common_name']
+  # Concourse web process owner is root.
+  web_vols.push("#{server_cert_path(cn)}:/root/server.crt:ro")
+  web_vols.push("#{server_key_path(cn)}:/root/server.key:ro")
+  web_envs['CONCOURSE_TLS_CERT'] = '/root/server.crt'
+  web_envs['CONCOURSE_TLS_KEY'] = '/root/server.key'
+end
+
+# Worker
+worker_vols = config_srvs['concourse-worker']['volumes'].to_a
+worker_vols.push("#{node['concourse-ci']['docker-compose']['worker_keys_dir']}:/concourse-keys")
+
+# Common
 if node['concourse-ci']['docker-compose']['import_ca']
   ::Chef::Recipe.send(:include, SSLCert::Helper)
   node['concourse-ci']['ssl_cert']['ca_names'].each {|ca_name|
-    web_vols.push("#{ca_cert_path(ca_name)}:/usr/share/ca-certificates/#{ca_name}.crt:ro")
+    ca_cert_vol = "#{ca_cert_path(ca_name)}:/usr/share/ca-certificates/#{ca_name}.crt:ro"
+    web_vols.push(ca_cert_vol)
+    worker_vols.push(ca_cert_vol)
   }
 
   import_ca_script = '/usr/local/bin/concourse_import_ca'
@@ -218,45 +243,28 @@ if node['concourse-ci']['docker-compose']['import_ca']
     mode '0755'
     action :create
   end
-  web_vols.push("#{bin_dir}/concourse_import_ca:#{import_ca_script}:ro")
+  import_ca_script_vol = "#{bin_dir}/concourse_import_ca:#{import_ca_script}:ro"
+  web_vols.push(import_ca_script_vol)
+  worker_vols.push(import_ca_script_vol)
 
   image_entrypoint = node['concourse-ci']['docker-image']['entrypoint']
   override_config_srvs['concourse-web']['entrypoint'] \
     = "/bin/sh -c \"#{import_ca_script} && #{image_entrypoint} web\""
+  override_config_srvs['concourse-worker']['entrypoint'] \
+    = "/bin/sh -c \"#{import_ca_script} && #{image_entrypoint} worker\""
   if config_format_version == '2'
     node.rm('concourse-ci', 'docker-compose', 'config', 'services', 'concourse-web', 'command')
+    node.rm('concourse-ci', 'docker-compose', 'config', 'services', 'concourse-worker', 'command')
   else
     node.rm('concourse-ci', 'docker-compose', 'config', 'concourse-web', 'command')
+    node.rm('concourse-ci', 'docker-compose', 'config', 'concourse-worker', 'command')
   end
 end
 
-template "#{bin_dir}/concourse_up" do
-  source 'opt/docker-compose/app/concourse/bin/concourse_up'
-  owner 'root'
-  group 'root'
-  mode '0755'
-  action :create
-end
-
-if node['concourse-ci']['with_ssl_cert_cookbook']
-  ::Chef::Recipe.send(:include, SSLCert::Helper)
-  cn = node['concourse-ci']['ssl_cert']['common_name']
-  # Concourse web process owner is root.
-  web_vols.push("#{server_cert_path(cn)}:/root/server.crt:ro")
-  web_vols.push("#{server_key_path(cn)}:/root/server.key:ro")
-  web_envs['CONCOURSE_TLS_CERT'] = '/root/server.crt'
-  web_envs['CONCOURSE_TLS_KEY'] = '/root/server.key'
-end
-
 # merge environment hash
 force_override_config_srvs['concourse-web']['environment'] = web_envs unless web_envs.empty?
 # reset vlumes array.
 override_config_srvs['concourse-web']['volumes'] = web_vols unless web_vols.empty?
-
-# Worker
-worker_vols = config_srvs['concourse-worker']['volumes'].to_a
-worker_vols.push("#{node['concourse-ci']['docker-compose']['worker_keys_dir']}:/concourse-keys")
-# reset vlumes array.
 override_config_srvs['concourse-worker']['volumes'] = worker_vols unless worker_vols.empty?
 
 template env_file do
index 6f3c2b9..f7e849f 100644 (file)
@@ -1,46 +1,46 @@
-#!/usr/bin/env bash\r
-\r
-PATH=.:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:`dirname $0`\r
-\r
-target=''\r
-\r
-usage() {\r
-  echo 'Usage: prune_workers -t target'\r
-  echo\r
-  echo "Options:"\r
-  echo "  -h: this help."\r
-  echo "  -t: target name."\r
-  echo\r
-}\r
-\r
-ARGS="$@"\r
-# Validation\r
-while getopts 't:h' OPT; do\r
-  case $OPT in\r
-    't' )\r
-      target=$OPTARG\r
-      ;;\r
-    'h' )\r
-      usage\r
-      exit 0\r
-      ;;\r
-    '?' )\r
-      usage\r
-      exit 1\r
-      ;;\r
-  esac\r
-done\r
-\r
-shift $((OPTIND - 1))\r
-\r
-if [ $# != 0 ]; then\r
-  usage\r
-  exit 1\r
-fi\r
-\r
-if [ -z $target ]; then\r
-  usage\r
-  exit 1\r
-fi\r
-\r
-fly -t $target ws | awk '$6=="stalled" {print $1}' | xargs -t -n 1 --no-run-if-empty fly -t $target prune-worker -w\r
+#!/usr/bin/env bash
+
+PATH=.:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:`dirname $0`
+
+target=''
+
+usage() {
+  echo 'Usage: prune_workers -t target'
+  echo
+  echo "Options:"
+  echo "  -h: this help."
+  echo "  -t: target name."
+  echo
+}
+
+ARGS="$@"
+# Validation
+while getopts 't:h' OPT; do
+  case $OPT in
+    't' )
+      target=$OPTARG
+      ;;
+    'h' )
+      usage
+      exit 0
+      ;;
+    '?' )
+      usage
+      exit 1
+      ;;
+  esac
+done
+
+shift $((OPTIND - 1))
+
+if [ $# != 0 ]; then
+  usage
+  exit 1
+fi
+
+if [ -z $target ]; then
+  usage
+  exit 1
+fi
+
+fly -t $target ws | awk '$6=="stalled" {print $1}' | xargs -t -n 1 --no-run-if-empty fly -t $target prune-worker -w