Skip to content

Commit

Permalink
Habitat Package for Chef-CLI (#260)
Browse files Browse the repository at this point in the history
* Chef license commands implementation

Signed-off-by: Ashique P S <[email protected]>

* Added the faraday_middleware for testing

Signed-off-by: Ashique P S <[email protected]>

* Fixed the issue with ui object

Signed-off-by: Ashique P S <[email protected]>

* Chefstyle fixes

Signed-off-by: Ashique P S <[email protected]>

* Specs for the license commands

Signed-off-by: Ashique P S <[email protected]>

* Added option to pass license key as a param

Signed-off-by: Ashique P S <[email protected]>

* Updated the chef-licensing dependency to fetch from internal artifactory

Signed-off-by: Ashique P S <[email protected]>

* Removed the byebug

Signed-off-by: Ashique P S <[email protected]>

* Added the feature flag for the licensing commands

Signed-off-by: Ashique P S <[email protected]>

* updated the feature flag file name

Signed-off-by: Ashique P S <[email protected]>

* Added chef-licensing gem as a gemspec dependency

Signed-off-by: Ashique P S <[email protected]>

* Licensing updates

Signed-off-by: Ashique Saidalavi <[email protected]>

* Updated the chef-licensing gem version

Signed-off-by: Ashique Saidalavi <[email protected]>

* Fixed the spec failure

Signed-off-by: Ashique Saidalavi <[email protected]>

* Fixed the chefstyle issues

Signed-off-by: Ashique Saidalavi <[email protected]>

* Added plan.sh file (#237)

* Added plan.sh file

Signed-off-by: nitin sanghi <[email protected]>

* Change gem file for app bundler on windows and plan.ps1 added

Signed-off-by: nitin sanghi <[email protected]>

* Habitat pkg version sync with version file

Signed-off-by: nitin sanghi <[email protected]>

* Removed duplicate dep and check linux gem are not trying to install on windows

Signed-off-by: nitin sanghi <[email protected]>

* Change in linux plan file and Rakefile to add install task

Signed-off-by: nitin sanghi <[email protected]>

* added hab path aware code changes

Signed-off-by: nikhil2611 <[email protected]>

* fixing the git issue

Signed-off-by: nikhil2611 <[email protected]>

* added the hab env and few command fix for hab path

Signed-off-by: nikhil2611 <[email protected]>

* testing for plan.sh as of now

Signed-off-by: nikhil2611 <[email protected]>

* adding back omnibus methods for testing

Signed-off-by: nikhil2611 <[email protected]>

* initializing pkg_prefix in hab_env

Signed-off-by: nikhil2611 <[email protected]>

* updated the origin variable for chef-cli

Signed-off-by: nikhil2611 <[email protected]>

* Added chef spec gem

Signed-off-by: nitin sanghi <[email protected]>

* testing chefspec changes

Signed-off-by: nikhil2611 <[email protected]>

* Added rspec in bin dir for linking issue

Signed-off-by: nitin sanghi <[email protected]>

* Chefspec dep for rspec fix to 3.12

Signed-off-by: nitin sanghi <[email protected]>

* Pinning rspec version

Signed-off-by: nitin sanghi <[email protected]>

* Change chef-cli hab pkg origin

Signed-off-by: nitin sanghi <[email protected]>

* Hab channel changed

Signed-off-by: nitin sanghi <[email protected]>

* Chef 17400 pipeline (#241)

* Add github action for hab pkg and publish

Signed-off-by: nitin sanghi <[email protected]>

* Added version check on new hab pkg

Signed-off-by: nitin sanghi <[email protected]>

* removed extra keyword for triggering pipeline

Signed-off-by: nitin sanghi <[email protected]>

* pkg iden added using vars

Signed-off-by: nitin sanghi <[email protected]>

* list all pkg to verify pkg installed

Signed-off-by: nitin sanghi <[email protected]>

* Installing hab build using hart file

Signed-off-by: nitin sanghi <[email protected]>

* Installing hab build using hart file

Signed-off-by: nitin sanghi <[email protected]>

* Installing hab build using hart file

Signed-off-by: nitin sanghi <[email protected]>

* pipeline test commit

Signed-off-by: nitin sanghi <[email protected]>

* pipeline test commit

Signed-off-by: nitin sanghi <[email protected]>

* pipeline test commit

Signed-off-by: nitin sanghi <[email protected]>

* pipeline test commit

Signed-off-by: nitin sanghi <[email protected]>

* pipeline test commit

Signed-off-by: nitin sanghi <[email protected]>

* sudo for installing hab pkg

Signed-off-by: nitin sanghi <[email protected]>

* sudo for installing hab pkg

Signed-off-by: nitin sanghi <[email protected]>

* sudo for installing hab pkg

Signed-off-by: nitin sanghi <[email protected]>

* sudo for installing hab pkg

Signed-off-by: nitin sanghi <[email protected]>

* hart file version change

Signed-off-by: nitin sanghi <[email protected]>

* Change pkg_indent

Signed-off-by: nitin sanghi <[email protected]>

* Change pkg_indent

Signed-off-by: nitin sanghi <[email protected]>

* version regex changed

Signed-off-by: nitin sanghi <[email protected]>

* windows pipeline change

Signed-off-by: nitin sanghi <[email protected]>

* windows pipeline change

Signed-off-by: nitin sanghi <[email protected]>

* windows pipeline change

Signed-off-by: nitin sanghi <[email protected]>

* windows pipeline change

Signed-off-by: nitin sanghi <[email protected]>

* Windows chef-cli hab version check

Signed-off-by: nitin sanghi <[email protected]>

* Windows chef-cli hab version check

Signed-off-by: nitin sanghi <[email protected]>

* Windows chef-cli hab version check

Signed-off-by: nitin sanghi <[email protected]>

* Change the message in test phase and throw error

Signed-off-by: nitin sanghi <[email protected]>

* Change the message in test phase and throw error

Signed-off-by: nitin sanghi <[email protected]>

* Hab pipeline using buildkite

Signed-off-by: nitin sanghi <[email protected]>

* hab build yml file added

Signed-off-by: nitin sanghi <[email protected]>

---------

Signed-off-by: nitin sanghi <[email protected]>

---------

Signed-off-by: nitin sanghi <[email protected]>
Signed-off-by: nikhil2611 <[email protected]>
Co-authored-by: nikhil2611 <[email protected]>
Co-authored-by: Nikhil Gupta <[email protected]>

* Testing pipleine (#242)

* Testing pipleine

Signed-off-by: nitin sanghi <[email protected]>

* Testing pipleine

Signed-off-by: nitin sanghi <[email protected]>

* Testing pipleine

Signed-off-by: nitin sanghi <[email protected]>

* Path change for test file

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* adding locales

Signed-off-by: nitin sanghi <[email protected]>

* ignoring warn change sed regex

Signed-off-by: nitin sanghi <[email protected]>

* ignoring warn change sed regex

Signed-off-by: nitin sanghi <[email protected]>

* ignoring warn change sed regex

Signed-off-by: nitin sanghi <[email protected]>

* ignoring warn change sed regex

Signed-off-by: nitin sanghi <[email protected]>

* change version command

Signed-off-by: nitin sanghi <[email protected]>

* change version command

Signed-off-by: nitin sanghi <[email protected]>

* change version command

Signed-off-by: nitin sanghi <[email protected]>

* change version command

Signed-off-by: nitin sanghi <[email protected]>

* change version command

Signed-off-by: nitin sanghi <[email protected]>

* change version command

Signed-off-by: nitin sanghi <[email protected]>

* change version command regex

Signed-off-by: nitin sanghi <[email protected]>

---------

Signed-off-by: nitin sanghi <[email protected]>

* Added dev channel for hab pkg (#243)

Signed-off-by: nitin sanghi <[email protected]>

* Added action for channel alternative (#244)

Signed-off-by: nitin sanghi <[email protected]>

* Version change for lts (#245)

* Added action for channel alternative

Signed-off-by: nitin sanghi <[email protected]>

* Changing version 1.0.0 for hab pkg

Signed-off-by: nitin sanghi <[email protected]>

* Changing version 1.0.0 for hab pkg

Signed-off-by: nitin sanghi <[email protected]>

---------

Signed-off-by: nitin sanghi <[email protected]>

* adding backup branch for workstation-lts

Signed-off-by: Sean Simmons <[email protected]>

* adding branch

Signed-off-by: Sean Simmons <[email protected]>

* adding expeditor agent

Signed-off-by: Sean Simmons <[email protected]>

* adding expeditor agent

Signed-off-by: Sean Simmons <[email protected]>

* Change version and constraint to same as main

Signed-off-by: nitin sanghi <[email protected]>

* Added one more channel and remove test from promote pipeline

Signed-off-by: nitin sanghi <[email protected]>

* added the channel variable

Signed-off-by: nikhil2611 <[email protected]>

* removed the manually created pipelines and added the channels

Signed-off-by: nikhil2611 <[email protected]>

* hab pkg promote change (#254)

Signed-off-by: nitin sanghi <[email protected]>

* Bump version to 0.1.0 by Chef Expeditor

Obvious fix; these changes are the result of automation not creative thinking.

* empty commit (#255)

Signed-off-by: nitin sanghi <[email protected]>

* Bump version to 0.1.1 by Chef Expeditor

Obvious fix; these changes are the result of automation not creative thinking.

* adding the pipelines to get triggered automatically

Signed-off-by: nikhil2611 <[email protected]>

* Bump version to 0.1.2 by Chef Expeditor

Obvious fix; these changes are the result of automation not creative thinking.

* empty commit to test pipelines

Signed-off-by: nikhil2611 <[email protected]>

* Bump version to 0.1.3 by Chef Expeditor

Obvious fix; these changes are the result of automation not creative thinking.

* Chef-18535- Updating configuration for a symantec version promote and publish and other fixes (#258)

* updating version to major version and few plan file fixes

Signed-off-by: nikhil2611 <[email protected]>

* added HAB_BLDR_CHANNEL env as the build pipeline still using old hab version and updated config for a symantec version promote and publish and reverting back version and release branch changes

Signed-off-by: nikhil2611 <[email protected]>

* fixing the quotes

Signed-off-by: nikhil2611 <[email protected]>

* chefstyle fix

Signed-off-by: nikhil2611 <[email protected]>

* fixing spec failure

Signed-off-by: nikhil2611 <[email protected]>

* fixing typo in gemspec

Signed-off-by: nikhil2611 <[email protected]>

* updated back to omnibus_env

Signed-off-by: nikhil2611 <[email protected]>

---------

Signed-off-by: nikhil2611 <[email protected]>

* this func is not needed as of now

Signed-off-by: nikhil2611 <[email protected]>

* Using the chef-test-kitchen-enterprise instead of old one

Signed-off-by: Ashique Saidalavi <[email protected]>

* Adding git as a pkg build dep

Signed-off-by: Ashique Saidalavi <[email protected]>

* Post bundle install script to setup the gems from github branches

Signed-off-by: Ashique Saidalavi <[email protected]>

* Added the faraday_middleware gem

Signed-off-by: Ashique Saidalavi <[email protected]>

* Fixed the shell-init command

Signed-off-by: Ashique Saidalavi <[email protected]>

* Reverted the post-bundle-install script for the windows

Signed-off-by: Ashique Saidalavi <[email protected]>

* Added the post-bundle-install script for windows plan file

Signed-off-by: Ashique Saidalavi <[email protected]>

* Updated the shell-init command to work with habitat and omnibus installations

Signed-off-by: Ashique Saidalavi <[email protected]>

* Spec fixes

Signed-off-by: Ashique Saidalavi <[email protected]>

* this file is not require

Signed-off-by: nikhil2611 <[email protected]>

---------

Signed-off-by: Ashique P S <[email protected]>
Signed-off-by: Ashique Saidalavi <[email protected]>
Signed-off-by: nitin sanghi <[email protected]>
Signed-off-by: nikhil2611 <[email protected]>
Signed-off-by: Sean Simmons <[email protected]>
Co-authored-by: Ashique P S <[email protected]>
Co-authored-by: Ashique P S <[email protected]>
Co-authored-by: ns <[email protected]>
Co-authored-by: Sean Simmons <[email protected]>
Co-authored-by: sean-simmons-progress <[email protected]>
Co-authored-by: nitin sanghi <[email protected]>
Co-authored-by: Chef Expeditor <[email protected]>
  • Loading branch information
8 people authored Feb 5, 2025
1 parent 7926b1d commit d428cb1
Show file tree
Hide file tree
Showing 34 changed files with 1,063 additions and 20 deletions.
9 changes: 9 additions & 0 deletions .expeditor/build.habitat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
origin: chef

expeditor:
defaults:
buildkite:
retry:
automatic:
limit: 1
87 changes: 87 additions & 0 deletions .expeditor/buildkite/artifact.habitat.test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#!/usr/bin/env powershell

#Requires -Version 5
# https://stackoverflow.com/questions/9948517
# TODO: Set-StrictMode -Version Latest
$PSDefaultParameterValues['*:ErrorAction']='Stop'
$ErrorActionPreference = 'Stop'
$env:HAB_BLDR_CHANNEL = "LTS-2024"
$env:HAB_REFRESH_CHANNEL = "LTS-2024"
$env:HAB_ORIGIN = 'ci'
$env:CHEF_LICENSE = 'accept-no-persist'
$env:HAB_LICENSE = 'accept-no-persist'
$Plan = 'chef-cli'

Write-Host "--- system details"
$Properties = 'Caption', 'CSName', 'Version', 'BuildType', 'OSArchitecture'
Get-CimInstance Win32_OperatingSystem | Select-Object $Properties | Format-Table -AutoSize

Write-Host "--- Installing the version of Habitat required"

function Stop-HabProcess {
$habProcess = Get-Process hab -ErrorAction SilentlyContinue
if ($habProcess) {
Write-Host "Stopping hab process..."
Stop-Process -Name hab -Force
}
}

# Installing Habitat
function Install-Habitat {
Write-Host "Downloading and installing Habitat..."
Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/habitat-sh/habitat/main/components/hab/install.ps1'))
}

try {
hab --version
}
catch {
Set-ExecutionPolicy Bypass -Scope Process -Force

Stop-HabProcess

# Remove the existing hab.exe if it exists and if you have permissions
$habPath = "C:\ProgramData\Habitat\hab.exe"
if (Test-Path $habPath) {
Write-Host "Attempting to remove existing hab.exe..."
Remove-Item $habPath -Force -ErrorAction SilentlyContinue
if (Test-Path $habPath) {
Write-Host "Failed to remove hab.exe, re-running script with elevated permissions."
Start-Process powershell -Verb runAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`""
exit
}
}

Install-Habitat
}
finally {
Write-Host ":habicat: I think I have the version I need to build."
}


Write-Host "--- Generating fake origin key"
hab origin key generate $env:HAB_ORIGIN

Write-Host "--- Building $Plan"
$project_root = "$(git rev-parse --show-toplevel)"
Set-Location $project_root

$env:DO_CHECK=$true; hab pkg build .

. $project_root/results/last_build.ps1

Write-Host "--- Installing $pkg_ident/$pkg_artifact"
hab pkg install -b $project_root/results/$pkg_artifact

Write-Host "+++ Testing $Plan"

Push-Location $project_root

try {
Write-Host "Running unit tests..."
habitat/tests/test.ps1 $pkg_ident
}
finally {
# Ensure we always return to the original directory
Pop-Location
}
71 changes: 71 additions & 0 deletions .expeditor/buildkite/artifact.habitat.test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env bash

set -eo pipefail

export HAB_ORIGIN='ci'
export PLAN='chef-cli'
export CHEF_LICENSE="accept-no-persist"
export HAB_LICENSE="accept-no-persist"
export HAB_BLDR_CHANNEL="LTS-2024"
export HAB_REFRESH_CHANNEL="LTS-2024"

echo "--- checking if git is installed"
if ! command -v git &> /dev/null; then
echo "Git is not installed. Installing Git..."
sudo yum install -y git
else
echo "Git is already installed."
git --version
fi

echo "--- add an exception for this directory since detected dubious ownership in repository at /workdir"
git config --global --add safe.directory /workdir

echo "--- git status for this workdir"
git status

echo "--- ruby version"
ruby -v

export project_root="$(git rev-parse --show-toplevel)"
echo "The value for project_root is: $project_root"

export HAB_NONINTERACTIVE=true
export HAB_NOCOLORING=true
export HAB_STUDIO_SECRET_HAB_NONINTERACTIVE=true

echo "--- system details"
uname -a

echo "--- Installing Habitat"
id -a
curl https://raw.githubusercontent.com/habitat-sh/habitat/main/components/hab/install.sh | bash

echo "--- :key: Generating fake origin key"
hab origin key generate "$HAB_ORIGIN"


echo "--- Building $PLAN"
cd "$project_root"
DO_CHECK=true hab pkg build .

echo "--- Sourcing 'results/last_build.sh'"
if [ -f ./results/last_build.env ]; then
cat ./results/last_build.env
. ./results/last_build.env
export pkg_artifact
fi
echo "+++ Installing ${pkg_ident:?is undefined}"
echo "++++"
echo $project_root
echo "+++"
hab pkg install -b "${project_root:?is undefined}/results/${pkg_artifact:?is undefined}"

echo "+++ Testing $PLAN"

PATH="$(hab pkg path ci/chef-cli)/bin:$PATH"
export PATH
echo "PATH is $PATH"

echo "--- :mag_right: Testing $PLAN"
${project_root}/habitat/tests/test.sh "$pkg_ident" || error 'failures during test of executables'
27 changes: 25 additions & 2 deletions .expeditor/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ rubygems:
- chef-cli

release_branches:
- workstation-LTS:
version_constraint: 1.*
- main:
version_constraint: 5.*

Expand All @@ -30,10 +28,27 @@ github:
changelog:
rollup_header: Changes not yet released to rubygems.org

artifact_channels:
- unstable
- chef-dke-lts2024

pipelines:
- verify:
description: Pull Request validation tests
public: true
- habitat/build:
env:
- HAB_NONINTERACTIVE: "true"
- HAB_NOCOLORING: "true"
- HAB_STUDIO_SECRET_HAB_NONINTERACTIVE: "true"
- habitat/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.
Expand All @@ -51,7 +66,15 @@ subscriptions:
- "Expeditor: Skip All"
- built_in:build_gem:
only_if: built_in:bump_version
- trigger_pipeline:habitat/build:
only_if: built_in:bump_version
ignore_labels:
- "Expeditor: Skip Habitat"
- "Expeditor: Skip All"

# this works for symantec version promote
- workload: project_promoted:{{agent_id}}:*
actions:
- built_in:rollover_changelog
- built_in:promote_habitat_packages
- built_in:publish_rubygems
36 changes: 36 additions & 0 deletions .expeditor/habitat-test.pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
expeditor:
defaults:
buildkite:
timeout_in_minutes: 30
retry:
automatic:
limit: 1


steps:

- label: ":linux: Validate Habitat Builds of Chef-cli"
commands:
- .expeditor/buildkite/artifact.habitat.test.sh
expeditor:
executor:
docker:
image: ruby:3.1
privileged: true

- label: ":windows: Validate Habitat Builds of Test Kitchen"
commands:
- .expeditor/buildkite/artifact.habitat.test.ps1
expeditor:
executor:
docker:
host_os: windows
shell: ["powershell", "-Command"]
image: rubydistros/windows-2019:3.1
user: 'NT AUTHORITY\SYSTEM'
environment:
- FORCE_FFI_YAJL=ext
- EXPIRE_CACHE=true
- CHEF_LICENSE=accept-no-persist
- CHEF_LICENSE_SERVER=http://hosted-license-service-lb-8000-606952349.us-west-2.elb.amazonaws.com:8000/
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,3 +41,6 @@ Vagrantfile
my-cookbook
results/
Gemfile.lock


.idea/
12 changes: 10 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
<!-- usage documentation: https://expeditor.chef.io/docs/reference/changelog/#common-changelog -->
<!-- latest_release -->
<!-- latest_release 0.1.0 -->
## [v0.1.0](https://github.com/chef/chef-cli/tree/v0.1.0) (2025-01-06)

#### Merged Pull Requests
- Add hab promote pipeline [#254](https://github.com/chef/chef-cli/pull/254) ([sanghinitin](https://github.com/sanghinitin))
<!-- latest_release -->

<!-- release_rollup -->
<!-- release_rollup since=5.6.16 -->
### Changes not yet released to rubygems.org

#### Merged Pull Requests
- Add hab promote pipeline [#254](https://github.com/chef/chef-cli/pull/254) ([sanghinitin](https://github.com/sanghinitin)) <!-- 0.1.0 -->
<!-- release_rollup -->

<!-- latest_stable_release -->
Expand Down
18 changes: 11 additions & 7 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,30 @@ source "https://rubygems.org"
gemspec

gem "logger", "< 1.6" # 1.6 causes errors with mixlib-log < 3.1.1

gem "chefspec"
group :test do
gem "rake"
gem "rspec", "~> 3.8"
gem "rspec", "=3.12.0"
gem "rspec-expectations", "~> 3.8"
gem "rspec-mocks", "~> 3.8"
gem "cookstyle"
gem "chefstyle"
gem "test-kitchen"
gem "faraday_middleware"
gem "chef-test-kitchen-enterprise", git: "https://github.com/chef/chef-test-kitchen-enterprise", branch: "main"
gem "simplecov", require: false
end

group :development do
gem "pry"
gem "pry-byebug"
gem "rb-readline"
gem "appbundler"
end

group :profile do
gem "stackprof"
gem "stackprof-webnav"
gem "memory_profiler"
end
unless RUBY_PLATFORM.match?(/mswin|mingw|windows/)
gem "stackprof"
gem "stackprof-webnav"
gem "memory_profiler"
end
end
3 changes: 3 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
require "bundler/gem_tasks"

namespace :style do
begin
Expand Down Expand Up @@ -52,3 +54,4 @@ namespace :style do
puts ">>> Gem load error: #{e}, omitting #{task.name}" unless ENV["CI"]
end
end

1 change: 1 addition & 0 deletions chef-cli.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,5 @@ Gem::Specification.new do |gem|
gem.add_dependency "diff-lcs", ">= 1.0", "< 1.4" # 1.4 changes the output
gem.add_dependency "pastel", "~> 0.7" # used for policyfile differ
gem.add_dependency "license-acceptance", ">= 1.0.11", "< 3"
gem.add_dependency "chef-licensing", "~> 1.0"
end
Loading

0 comments on commit d428cb1

Please sign in to comment.