Skip to content

Updating Ruby Package in CAPI Release

Florian Braun edited this page Apr 22, 2022 · 25 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)

  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/
# It 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/
  2. In capi-release/src/cloud_controller_ng/.ruby-version change 2.4.5 to 2.4.6.
  3. Go to cap-release/packages. Search recursively and replace each instance of ruby-2.4-r5 by ruby-2.4.6-r0.9.0
  4. Go into the capi-release/jobs directory. Search recursively and replace each instance of ruby-2.4-r5 by ruby-2.4.6-r0.9.0
  5. The resulting git diff should be similar to e.g. https://github.com/cloudfoundry/capi-release/pull/237/files

Testing the updated ruby package

  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 NEW-VERSION"

Updating the capi-migration-compatibility dockerfile

Replace the version and make a PR of following file: https://github.com/cloudfoundry/capi-dockerfiles/blob/main/capi-migration-compatibility/Dockerfile

Updating Capi-workspace

Update this file: https://github.com/cloudfoundry/capi-workspace/blob/ebf062d2037b3fc788993aa49d03026bddc2e84f/install-scripts/ruby.sh#L6

Updating Bundler

If you updated bundler, rebundle (bundle update --bundler) with the new version in the following repos/directories:

Updating capi-runtime-ci dockerfile

Update this file for new ruby version: https://github.com/cloudfoundry/capi-dockerfiles/blob/main/capi-runtime-ci/Dockerfile. Most notably, this Dockerfile is used for creating the capi-release tarball in the https://ci.cake.capi.land/teams/main/pipelines/capi/jobs/create-capi-release job. Update the version and open a PR.

Clone this wiki locally