Skip to content

Updating Ruby Package in CAPI Release

Tim Downey edited this page May 17, 2019 · 18 revisions

Updating the ruby package in CAPI release will allow CAPI jobs to use an updated version of ruby.

A ruby package spec file contains metadata providing which version of ruby, rubygems, and other supportive libraries. The packaging scripts specifies un-compressing these dependencies and installing them on our instances. (Q: Where does bosh get the ruby source code from?)

Steps to update ruby package (metadata for the ruby run for capi jobs) Steps to update ruby package (metadata for the ruby run for capi jobs)

  1. Get the most up-to-date version of bosh ruby-release:
git clone https://github.com/bosh-packages/ruby-release
-or-
cd ~/workspace/ruby-release && git pull
  1. cd ~/workspace/capi-release
  2. touch config/private.yml
  3. Populate the new private.yml with the blobstore credentials found in LastPass under "Shared CF-CAPI / capi-release private.yml"
  4. Run the vendor-package command to create 2 new directories that point to the updated ruby package
bosh vendor-package ruby-2.4.6-r0.7.0 ~/workspace/ruby-release/
# creates .final_builds/packages/ruby-2.4.6-r0.9.0/ and packages/ruby-2.4.6-r0.9.0/
  1. Delete the old ruby package rm -rf packages/ruby-2.4-r5/ # or not???

  2. In capi-release/src/cloud_controller_ng/.ruby-version change 2.4.5 to 2.4.6.

  3. Go to cap-release/packages. For each of the package spec files, under packages:, change all instances of ruby-2.4-r5 to ruby-2.4.6-r0.9.0

  4. Go into the capi-release/jobs directory. For each of the job spec files, under packages:, change all instances of ruby-2.4-r5 to ruby-2.4.6-r0.9.0

  5. In /capi-release/packages/cloud_controller_ng/packaging, changeruby-2.4-r5 to ruby-2.4.6-r0.9.0.

  6. In /capi-release/packages/nginx_newrelic_plugin/packaging, changeruby-2.4-r5 to ruby-2.4.6-r0.9.0.

  7. In .capi-release/jobs/cloud_controller_ng/templates/ruby_version.sh.erb, change: source "${BOSH_PACKAGES_DIR:-/var/vcap/packages}/ruby-2.4-r5/bosh/runtime.env"tosource "${BOSH_PACKAGES_DIR:-/var/vcap/packages}/ruby-2.4.6-r0.9.0/bosh/runtime.env"`

  8. If you run git status you should see:

 2019-05-16 12:15:23 ⛅️  ruby 2.4.5p335 Alaskan in ~/workspace/capi-release
± td+cb |develop ↑1 U:1 ?:2 ✗| → git status`
On branch develop
Your branch is ahead of 'origin/develop' by 1 commit.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

	deleted:    packages/ruby-2.4-r5/spec.lock

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

	modified:   jobs/cc_deployment_updater/spec
	modified:   jobs/cc_route_syncer/spec
	modified:   jobs/cloud_controller_clock/spec
	modified:   jobs/cloud_controller_ng/spec
	modified:   jobs/cloud_controller_worker/spec
	modified:   jobs/rotate_cc_database_key/spec
	modified:   src/cloud_controller_ng (new commits)

Untracked files:
  (use "git add <file>..." to include in what will be committed)

	.final_builds/packages/ruby-2.4.6-r0.9.0/
	packages/ruby-2.4.6-r0.9.0/
  1. Target a bosh-lite. run deploy_only_new_capi. This creates and uploads capi-release, and does a bosh deploy.
  2. Validate that it works:
bosh ssh api
cd /var/vcap/jobs/cloud_controller_ng/bin
. ruby_version.sh
ruby -v
# Should see "ruby 2.4.6p354"
Clone this wiki locally