Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
6f738ca
Added plan.sh file
sanghinitin Aug 29, 2024
7a26e94
Change gem file for app bundler on windows and plan.ps1 added
sanghinitin Sep 3, 2024
bfcead9
Main marged
sanghinitin Sep 6, 2024
91c05e4
Habitat pkg version sync with version file
sanghinitin Sep 6, 2024
4fe4c3f
Removed duplicate dep and check linux gem are not trying to install o…
sanghinitin Sep 11, 2024
f18096a
Change in linux plan file and Rakefile to add install task
sanghinitin Sep 18, 2024
b92f675
added hab path aware code changes
nikhil2611 Oct 8, 2024
1422e98
fixing the git issue
nikhil2611 Oct 8, 2024
86cd859
added the hab env and few command fix for hab path
nikhil2611 Oct 9, 2024
809bc85
testing for plan.sh as of now
nikhil2611 Oct 9, 2024
32bc545
adding back omnibus methods for testing
nikhil2611 Oct 10, 2024
4abf329
initializing pkg_prefix in hab_env
nikhil2611 Oct 10, 2024
742f1f0
updated the origin variable for chef-cli
nikhil2611 Oct 11, 2024
6d70840
Added chef spec gem
sanghinitin Oct 22, 2024
654703b
testing chefspec changes
nikhil2611 Oct 22, 2024
62fb517
Added rspec in bin dir for linking issue
sanghinitin Oct 23, 2024
fc336d8
Chefspec dep for rspec fix to 3.12
sanghinitin Oct 24, 2024
8d42266
Pinning rspec version
sanghinitin Oct 28, 2024
cd601aa
Merge branch 'workstation-LTS' into habitat_pkg_plan_linux
sanghinitin Oct 28, 2024
d9959f3
Merge branch 'habitat_pkg_plan_linux' into nikhil/hab-path-changes
nikhil2611 Nov 11, 2024
61d0572
Merge pull request #238 from chef/nikhil/hab-path-changes
nikhil2611 Nov 11, 2024
fe50afb
Change chef-cli hab pkg origin
sanghinitin Nov 12, 2024
a7e42e2
Hab channel changed
sanghinitin Nov 12, 2024
9ec89ee
Chef 17400 pipeline (#241)
sanghinitin Dec 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
86 changes: 86 additions & 0 deletions .expeditor/buildkite/artifact.habitat.test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#!/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_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"

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'
35 changes: 34 additions & 1 deletion .expeditor/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@ slack:
rubygems:
- chef-cli

release_branches:
- workstation-LTS:
version_constraint: 5.*
github:
# This deletes the GitHub PR branch after successfully merged into the release branch
delete_branch_on_merge: true
Expand All @@ -28,6 +31,19 @@ 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 @@ -45,7 +61,24 @@ subscriptions:
- "Expeditor: Skip All"
- built_in:build_gem:
only_if: built_in:bump_version
- trigger_pipeline:habitat/test:
only_if: built_in:bump_version
ignore_labels:
- "Expeditor: Skip Habitat"
- "Expeditor: Skip All"
- trigger_pipeline:habitat/build:
only_if: built_in:bump_version
ignore_labels:
- "Expeditor: Skip Habitat"
- "Expeditor: Skip All"

- workload: project_promoted:{{agent_id}}:*
actions:
- built_in:rollover_changelog
- built_in:publish_rubygems
- built_in:publish_rubygems
# the habitat chain
- workload: buildkite_hab_build_group_published:{{agent_id}}:*
actions:
# when all of the hab package publish to the unstable channel, test and promote them
- trigger_pipeline:habitat/test

35 changes: 35 additions & 0 deletions .expeditor/habitat-test.pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
expeditor:
defaults:
buildkite:
timeout_in_minutes: 30
retry:
automatic:
limit: 1

steps:

- label: ":linux: Validate Habitat Builds of Chef-cli"
commands:
- habitat/tests/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/
15 changes: 9 additions & 6 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ 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"
Expand All @@ -19,10 +19,13 @@ 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: 0 additions & 1 deletion chef-cli.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,4 @@ 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
Loading