diff --git a/.expeditor/buildkite/artifact.habitat.test.ps1 b/.expeditor/buildkite/artifact.habitat.test.ps1 index 209c4c832..61e95d222 100755 --- a/.expeditor/buildkite/artifact.habitat.test.ps1 +++ b/.expeditor/buildkite/artifact.habitat.test.ps1 @@ -9,7 +9,7 @@ $env:HAB_BLDR_CHANNEL = "LTS-2024" $env:HAB_ORIGIN = 'ci' $env:CHEF_LICENSE = 'accept-no-persist' $env:HAB_LICENSE = 'accept-no-persist' -$Plan = 'chef-cli' +$Plan = 'ohai' Write-Host "--- system details" $Properties = 'Caption', 'CSName', 'Version', 'BuildType', 'OSArchitecture' diff --git a/.expeditor/buildkite/artifact.habitat.test.sh b/.expeditor/buildkite/artifact.habitat.test.sh index fb195d1d4..021c715f3 100755 --- a/.expeditor/buildkite/artifact.habitat.test.sh +++ b/.expeditor/buildkite/artifact.habitat.test.sh @@ -3,7 +3,7 @@ set -eo pipefail export HAB_ORIGIN='ci' -export PLAN='chef-cli' +export PLAN='ohai' export CHEF_LICENSE="accept-no-persist" export HAB_LICENSE="accept-no-persist" export HAB_BLDR_CHANNEL="LTS-2024" @@ -62,7 +62,7 @@ hab pkg install -b "${project_root:?is undefined}/results/${pkg_artifact:?is und echo "+++ Testing $PLAN" -PATH="$(hab pkg path ci/chef-cli)/bin:$PATH" +PATH="$(hab pkg path ci/ohai)/bin:$PATH" export PATH echo "PATH is $PATH" diff --git a/.expeditor/config.yml b/.expeditor/config.yml index e0bf063ab..4518a3e53 100644 --- a/.expeditor/config.yml +++ b/.expeditor/config.yml @@ -38,22 +38,7 @@ release_branches: changelog: rollup_header: Changes not yet released to rubygems.org -pipelines: - - habitat/publish: - description: Create artiface and publish on BLDR - definition: .expeditor/build.habitat.yml - env: - - HAB_NONINTERACTIVE: "true" - - HAB_NOCOLORING: "true" - - HAB_STUDIO_SECRET_HAB_NONINTERACTIVE: "true" - - habitat/build-test: - description: Execute tests against the habitat artifact - definition: .expeditor/habitat-test.pipeline.yml - env: - - HAB_NONINTERACTIVE: "true" - - HAB_NOCOLORING: "true" - - HAB_STUDIO_SECRET_HAB_NONINTERACTIVE: "true" - trigger: pull_request + subscriptions: # These actions are taken, in order they are specified, anytime a Pull Request is merged. - workload: pull_request_merged:{{github_repo}}:{{release_branch}}:* @@ -71,10 +56,12 @@ subscriptions: - built_in:build_gem: only_if: built_in:bump_version - trigger_pipeline:habitat/publish: + only_if: built_in:bump_version ignore_labels: - "Expeditor: Skip Habitat" - "Expeditor: Skip All" - trigger_pipeline:habitat/build-test: + only_if: built_in:bump_version ignore_labels: - "Expeditor: Skip Habitat" - "Expeditor: Skip All" diff --git a/.expeditor/habitat-test.pipeline.yml b/.expeditor/habitat-test.pipeline.yml index a86366933..12a3d1922 100644 --- a/.expeditor/habitat-test.pipeline.yml +++ b/.expeditor/habitat-test.pipeline.yml @@ -10,7 +10,7 @@ expeditor: steps: - - label: ":linux: Validate Habitat Builds of Chef-cli" + - label: ":linux: Validate Habitat Builds of ohai" commands: - .expeditor/buildkite/artifact.habitat.test.sh expeditor: @@ -19,7 +19,7 @@ steps: image: ruby:3.1 privileged: true - - label: ":windows: Validate Habitat Builds of Test Kitchen" + - label: ":windows: Validate Habitat Builds of ohai" commands: - .expeditor/buildkite/artifact.habitat.test.ps1 expeditor: diff --git a/habitat/plan.sh b/habitat/plan.sh index e01a51fbb..d184e3bc7 100644 --- a/habitat/plan.sh +++ b/habitat/plan.sh @@ -1,4 +1,5 @@ -_chef_client_ruby="core/ruby31" +export HAB_BLDR_CHANNEL="LTS-2024" +ruby_pkg="core/ruby3_1" pkg_name="ohai" pkg_origin="chef" pkg_maintainer="The Chef Maintainers " @@ -6,117 +7,78 @@ pkg_description="The Chef Ohai" pkg_license=('Apache-2.0') pkg_bin_dirs=( bin - vendor/bin ) pkg_build_deps=( core/make core/gcc core/git ) -pkg_deps=( - $_chef_client_ruby - core/coreutils -) +pkg_deps=(${ruby_pkg} core/coreutils) + pkg_svc_user=root -pkg_version() { - cat "${SRC_PATH}/VERSION" +do_setup_environment() { + build_line 'Setting GEM_HOME="$pkg_prefix/vendor"' + export GEM_HOME="$pkg_prefix/vendor" + + build_line "Setting GEM_PATH=$GEM_HOME" + export GEM_PATH="$GEM_HOME" } +pkg_version() { + cat "$SRC_PATH/VERSION" +} do_before() { - do_default_before update_pkg_version - # We must wait until we update the pkg_version to use the pkg_version - pkg_filename="${pkg_name}-${pkg_version}.tar.gz" -} - -do_download() { - build_line "Locally creating archive of latest repository commit at ${HAB_CACHE_SRC_PATH}/${pkg_filename}" - # source is in this repo, so we're going to create an archive from the - # appropriate path within the repo and place the generated tarball in the - # location expected by do_unpack - ( cd "${SRC_PATH}" || exit_with "unable to enter hab-src directory" 1 - git archive --prefix="${pkg_name}-${pkg_version}/" --output="${HAB_CACHE_SRC_PATH}/${pkg_filename}" HEAD - ) } - -do_verify() { - build_line "Skipping checksum verification on the archive we just created." - return 0 -} - -do_setup_environment() { - push_runtime_env GEM_PATH "${pkg_prefix}/vendor" - - set_runtime_env APPBUNDLER_ALLOW_RVM "true" # prevent appbundler from clearing out the carefully constructed runtime GEM_PATH - set_runtime_env LANG "en_US.UTF-8" - set_runtime_env LC_CTYPE "en_US.UTF-8" +do_unpack() { + mkdir -pv "$HAB_CACHE_SRC_PATH/$pkg_dirname" + cp -RT "$PLAN_CONTEXT"/.. "$HAB_CACHE_SRC_PATH/$pkg_dirname/" } +do_build() { -do_prepare() { - export GEM_HOME="${pkg_prefix}/vendor" - export CPPFLAGS="${CPPFLAGS} ${CFLAGS}" + export GEM_HOME="$pkg_prefix/vendor" - ( cd "$CACHE_PATH" - bundle config --local jobs "$(nproc)" - bundle config --local without server docgen maintenance pry travis integration ci - bundle config --local shebang "$(pkg_path_for "$_chef_client_ruby")/bin/ruby" + build_line "Setting GEM_PATH=$GEM_HOME" + export GEM_PATH="$GEM_HOME" + bundle config --local without integration deploy maintenance + bundle config --local jobs 4 bundle config --local retry 5 bundle config --local silence_root_warning 1 - ) - - build_line "Setting link for /usr/bin/env to 'coreutils'" - if [ ! -f /usr/bin/env ]; then - ln -s "$(pkg_interpreter_for core/coreutils bin/env)" /usr/bin/env - fi -} - -do_build() { - ( cd "$CACHE_PATH" || exit_with "unable to enter hab-cache directory" 1 - build_line "Installing gem dependencies ..." - bundle install --jobs=3 --retry=3 - build_line "Installing gems from git repos properly ..." + bundle install ruby ./post-bundle-install.rb - build_line "Installing this project's gems ..." - bundle exec rake install:local - ) + gem build ohai.gemspec } - do_install() { - ( cd "$pkg_prefix" || exit_with "unable to enter pkg prefix directory" 1 - export BUNDLE_GEMFILE="${CACHE_PATH}/Gemfile" - build_line "** fixing binstub shebangs" - fix_interpreter "${pkg_prefix}/vendor/bin/*" "$_chef_client_ruby" bin/ruby - export BUNDLE_GEMFILE="${CACHE_PATH}/Gemfile" - for gem in ohai; do - build_line "** generating binstubs for $gem with precise version pins" - appbundler $CACHE_PATH $pkg_prefix/bin $gem - done - ) + export GEM_HOME="$pkg_prefix/vendor" + + build_line "Setting GEM_PATH=$GEM_HOME" + export GEM_PATH="$GEM_HOME" + gem install ohai-*.gem --no-document + set_runtime_env "GEM_PATH" "${pkg_prefix}/vendor" + wrap_ruby_bin } +wrap_ruby_bin() { + local bin="$pkg_prefix/bin/$pkg_name" + local real_bin="$GEM_HOME/gems/ohai-${pkg_version}/bin/ohai" + build_line "Adding wrapper $bin to $real_bin" + cat < "$bin" +#!$(pkg_path_for core/bash)/bin/bash +set -e -do_after() { - build_line "Trimming the fat ..." +# Set binary path that allows Ohai to use non-Hab pkg binaries +export PATH="/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:\$PATH" - # We don't need the cache of downloaded .gem files ... - rm -r "$pkg_prefix/vendor/cache" - # ... or bundler's cache of git-ref'd gems - rm -r "$pkg_prefix/vendor/bundler" - # We don't need the gem docs. - rm -r "$pkg_prefix/vendor/doc" - # We don't need to ship the test suites for every gem dependency, - # only Chef's for package verification. - find "$pkg_prefix/vendor/gems" -name spec -type d | grep -v "ohai-${pkg_version}" \ - | while read spec_dir; do rm -r "$spec_dir"; done -} +# Set Ruby paths defined from 'do_setup_environment()' + export GEM_HOME="$pkg_prefix/vendor" + export GEM_PATH="$GEM_PATH" -do_end() { - if [ "$(readlink /usr/bin/env)" = "$(pkg_interpreter_for core/coreutils bin/env)" ]; then - build_line "Removing the symlink we created for '/usr/bin/env'" - rm /usr/bin/env - fi +exec $(pkg_path_for ${ruby_pkg})/bin/ruby $real_bin \$@ +EOF + chmod -v 755 "$bin" } + do_strip() { return 0 } \ No newline at end of file diff --git a/habitat/tests/test.sh b/habitat/tests/test.sh index 7208d9981..52f9461fd 100755 --- a/habitat/tests/test.sh +++ b/habitat/tests/test.sh @@ -3,7 +3,7 @@ set -euo pipefail project_root="$(git rev-parse --show-toplevel)" - +pkg_ident="$1" # print error message followed by usage and exit error () { local message="$1"