forked from chefspec/fauxhai
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from chef/sanjain/chef-17476/github_action
Buildkite pipeline to verify build and publish package
- Loading branch information
Showing
8 changed files
with
307 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
--- | ||
origin: chef | ||
|
||
expeditor: | ||
defaults: | ||
buildkite: | ||
retry: | ||
automatic: | ||
limit: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 = 'fauxhai' | ||
|
||
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 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -eo pipefail | ||
|
||
export HAB_ORIGIN='ci' | ||
export PLAN='fauxhai' | ||
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/fauxhai)/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' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 fauxhai" | ||
commands: | ||
- .expeditor/buildkite/artifact.habitat.test.sh | ||
expeditor: | ||
executor: | ||
docker: | ||
image: ruby:3.1 | ||
privileged: true | ||
|
||
- label: ":windows: Validate Habitat Builds of fauxhai" | ||
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/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,84 +1,74 @@ | ||
export HAB_BLDR_CHANNEL="LTS-2024" | ||
pkg_name=fauxhai | ||
pkg_origin=core | ||
pkg_origin=chef | ||
ruby_pkg="core/ruby3_1" | ||
pkg_description="Easily mock full ohai data" | ||
pkg_license=('Apache-2.0') | ||
pkg_deps=( | ||
core/ruby31 | ||
core/bash | ||
) | ||
pkg_deps=(${ruby_pkg} core/coreutils) | ||
pkg_build_deps=( | ||
core/gcc | ||
core/make | ||
) | ||
core/make | ||
core/sed | ||
core/gcc | ||
core/libarchive | ||
) | ||
pkg_bin_dirs=(bin) | ||
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() { | ||
update_pkg_version | ||
} | ||
|
||
# Setup environment variables for Ruby Gems | ||
do_setup_environment() { | ||
build_line "Setting up GEM_HOME and GEM_PATH" | ||
export GEM_HOME="$pkg_prefix/lib" | ||
export GEM_PATH="$GEM_HOME" | ||
} | ||
|
||
# Unpack the source files into the cache directory | ||
do_unpack() { | ||
local unpack_dir="$HAB_CACHE_SRC_PATH/$pkg_dirname" | ||
build_line "Creating unpack directory: $unpack_dir" | ||
mkdir -pv "$unpack_dir" | ||
cp -RT "$PLAN_CONTEXT"/.. "$unpack_dir/" | ||
mkdir -pv "$HAB_CACHE_SRC_PATH/$pkg_dirname" | ||
cp -RT "$PLAN_CONTEXT"/.. "$HAB_CACHE_SRC_PATH/$pkg_dirname/" | ||
} | ||
|
||
# Build the gem from the gemspec file | ||
do_build() { | ||
build_line "Building the gem from the gemspec file" | ||
pushd "$HAB_CACHE_SRC_PATH/$pkg_dirname" > /dev/null | ||
gem build fauxhai-chef.gemspec | ||
popd > /dev/null | ||
} | ||
|
||
# Install the built gem into the package directory | ||
do_install() { | ||
build_line "Installing the gem" | ||
pushd "$HAB_CACHE_SRC_PATH/$pkg_dirname" > /dev/null | ||
gem install fauxhai-*.gem --no-document | ||
popd > /dev/null | ||
export GEM_HOME="$pkg_prefix/vendor" | ||
|
||
wrap_fauxhai_bin | ||
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 | ||
bundle install | ||
gem build fauxhai-chef.gemspec | ||
} | ||
do_install() { | ||
export GEM_HOME="$pkg_prefix/vendor" | ||
|
||
# Create a wrapper script to properly set paths and execute the fauxhai command | ||
wrap_fauxhai_bin() { | ||
build_line "Setting GEM_PATH=$GEM_HOME" | ||
export GEM_PATH="$GEM_HOME" | ||
gem install fauxhai-*.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/fauxhai-chef-${pkg_version}/bin/fauxhai" | ||
|
||
build_line "Creating wrapper script: $bin" | ||
build_line "Adding wrapper $bin to $real_bin" | ||
cat <<EOF > "$bin" | ||
#!$(pkg_path_for core/bash)/bin/bash | ||
set -e | ||
# Set the PATH for Fauxhai to include necessary binaries | ||
# Set binary path that allows InSpec to use non-Hab pkg binaries | ||
export PATH="/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:\$PATH" | ||
# Set Ruby paths defined from 'do_setup_environment()' | ||
export GEM_HOME="$GEM_HOME" | ||
export GEM_PATH="$GEM_PATH" | ||
# Execute the Fauxhai binary | ||
exec $(pkg_path_for core/ruby31)/bin/ruby $real_bin "\$@" | ||
export GEM_HOME="$pkg_prefix/vendor" | ||
export GEM_PATH="$GEM_PATH" | ||
exec $(pkg_path_for ${ruby_pkg})/bin/ruby $real_bin \$@ | ||
EOF | ||
|
||
# Ensure the wrapper script is executable | ||
chmod -v 755 "$bin" | ||
} | ||
|
||
# No additional stripping needed | ||
|
||
do_strip() { | ||
return 0 | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
param ( | ||
[Parameter()] | ||
[string]$PackageIdentifier = $(throw "Usage: test.ps1 [test_pkg_ident] e.g. test.ps1 ci/user-windows/1.0.0/20190812103929") | ||
) | ||
|
||
|
||
Write-Host "--- :fire: Smokish test" | ||
$version=hab pkg exec "${pkg_ident}" fauxhai -v | ||
$actual_version=[Regex]::Match($version,"([0-9]+.[0-9]+.[0-9]+)").Value | ||
$package_version=$PackageIdentifier.split("/",4)[2] | ||
|
||
Write-Host "package_version $package_version actual version $actual_version" | ||
if ($package_version -eq $actual_version) | ||
{ | ||
Write "Fauxhai working fine" | ||
} | ||
else { | ||
Write-Error "Fauxhai version not met expected $package_version actual version $actual_version " | ||
throw "fauxhai windows pipeline not working for hab pkg" | ||
} |
Oops, something went wrong.