Skip to content

Commit

Permalink
Merge pull request #1843 from chef/test_pipeline
Browse files Browse the repository at this point in the history
Testing pipeline
  • Loading branch information
nikhil2611 authored Dec 6, 2024
2 parents 03f8077 + fc1d14d commit d573006
Show file tree
Hide file tree
Showing 6 changed files with 56 additions and 107 deletions.
2 changes: 1 addition & 1 deletion .expeditor/buildkite/artifact.habitat.test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
4 changes: 2 additions & 2 deletions .expeditor/buildkite/artifact.habitat.test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"

Expand Down
19 changes: 3 additions & 16 deletions .expeditor/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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}}:*
Expand All @@ -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"
Expand Down
4 changes: 2 additions & 2 deletions .expeditor/habitat-test.pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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:
Expand Down
132 changes: 47 additions & 85 deletions habitat/plan.sh
Original file line number Diff line number Diff line change
@@ -1,122 +1,84 @@
_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 <[email protected]>"
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 <<EOF > "$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
}
2 changes: 1 addition & 1 deletion habitat/tests/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit d573006

Please sign in to comment.