Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
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'
25 changes: 25 additions & 0 deletions .expeditor/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,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 +68,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/
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
Loading