Skip to content

Commit

Permalink
Habitat package for berkshelf (#54)
Browse files Browse the repository at this point in the history
* berkshelf as an hab package file

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

* updated the origin to core

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

* added the appbundler gem

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

* added bundle config in plan.ps1

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

* updated plan.sh file

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

* updated origin

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

* add pipleline for build, publish, test cases

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

* updated the plan.sh file

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

* updated the plan.ps1 file

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

* updating pipeline to run on expeditor instead of github actions

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

* updating pipeline to run on expeditor instead of github actions

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

* testing pipelines

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

* testing pipelines

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

* testing pipelines

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

* added echo

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

* testing pipeline

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

* testing pipeline

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

* testing pipeline

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

* removed extra line added for testing

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

* removed the manually created pipelines

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

* adding the pipelines

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

* adding the pipelines

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

* Bump version to 0.1.1 by Chef Expeditor

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

* Bump version to 0.1.2 by Chef Expeditor

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

* commenting the 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.

* Bump version to 0.1.4 by Chef Expeditor

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

* adding back the pipelines

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

* Bump version to 0.1.5 by Chef Expeditor

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

* Bump version to 0.1.6 by Chef Expeditor

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

* empty commit

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

* Bump version to 0.1.7 by Chef Expeditor

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

* empty commit

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

* added the promotion agents workload

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

* Bump version to 0.1.8 by Chef Expeditor

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

* empty commit to test pipeline

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

* Bump version to 0.1.9 by Chef Expeditor

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

* Removed hab test pipeline duplicate

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

* Bump version to 0.1.10 by Chef Expeditor

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

* updating config to fix promote

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

* Bump version to 0.1.11 by Chef Expeditor

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

* empty commit

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

* Bump version to 0.1.12 by Chef Expeditor

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

* Chef-18535 Removed the release branch changes and fixed pipeline (#53)

* Updated the version for workstation-LTS to major version

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

* corrected the plan file

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

* updated the env from HAB_BLDR_CHANNEL to HAB_REFRESH_CHANNEL

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

* remoed the release branch changes and fixing pipeline

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

* adding back berkshelf rubygem

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

* fixing expeditor config error

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

---------

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

* Bump version to 8.0.16 by Chef Expeditor

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

* not needed this workload

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

---------

Signed-off-by: nikhil2611 <[email protected]>
Signed-off-by: Sachin <[email protected]>
Signed-off-by: nitin sanghi <[email protected]>
Co-authored-by: Sachin <[email protected]>
Co-authored-by: ns <[email protected]>
Co-authored-by: Chef Expeditor <[email protected]>
Co-authored-by: nitin sanghi <[email protected]>
  • Loading branch information
5 people authored Jan 28, 2025
1 parent 5bba9c7 commit e08c7dc
Show file tree
Hide file tree
Showing 12 changed files with 481 additions and 13 deletions.
12 changes: 12 additions & 0 deletions .expeditor/build.habitat.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
env:
HAB_REFRESH_CHANNEL: "LTS-2024"

origin: chef

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

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

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
}
70 changes: 70 additions & 0 deletions .expeditor/buildkite/artifact.habitat.test.sh
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='berkshelf'
export CHEF_LICENSE="accept-no-persist"
export HAB_LICENSE="accept-no-persist"

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/berkshelf)/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'
45 changes: 34 additions & 11 deletions .expeditor/config.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Documentation available at https://expeditor.chef.io/docs/getting-started/
---

# Slack channel in Chef Software slack to send notifications about build failures, etc
slack:
notify_channel: chef-ws-notify
Expand All @@ -22,14 +21,34 @@ github:
- "Expeditor: Bump Version Major"

release_branches:
- workstation-LTS:
version_constraint: 8*
- main:
version_constraint: 8*
version_constraint: 8.*

artifact_channels:
- unstable
- chef-dke-lts2024

changelog:
rollup_header: Changes not yet released to rubygems.org

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.
- workload: pull_request_merged:{{github_repo}}:{{release_branch}}:*
Expand All @@ -46,14 +65,18 @@ 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"

- workload: project_promoted:{{agent_id}}:*
actions:
- built_in:rollover_changelog
- built_in:publish_rubygems

pipelines:
- verify:
description: Pull Request validation tests
public: true
env:
- IGNORE_CACHE: true
# Subscribe to the promotion of the unstable channel to stable(chef-dke-lts2024)
- workload: project_promoted:{{agent_id}}:unstable:*
actions:
- built_in:promote_habitat_packages
- built_in:publish_rubygems
37 changes: 37 additions & 0 deletions .expeditor/habitat-test.pipeline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
expeditor:
defaults:
buildkite:
timeout_in_minutes: 30
env:
HAB_REFRESH_CHANNEL: "LTS-2024"
retry:
automatic:
limit: 1

steps:

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

- label: ":windows: Validate Habitat Builds of Berkshelf"
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/
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,4 @@ bin
Gemfile.local
gem_graph.png
Gemfile.lock
.idea/
14 changes: 12 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
<!-- latest_release 8.0.16 -->
## [v8.0.16](https://github.com/chef/berkshelf/tree/v8.0.16) (2025-01-03)
## [v8.0.16](https://github.com/chef/berkshelf/tree/v8.0.16) (2025-01-23)

#### Merged Pull Requests
- Added the release branch [#42](https://github.com/chef/berkshelf/pull/42) ([nikhil2611](https://github.com/nikhil2611))
- Chef-18535 Removed the release branch changes and fixed pipeline [#53](https://github.com/chef/berkshelf/pull/53) ([nikhil2611](https://github.com/nikhil2611))
<!-- latest_release -->

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

#### Merged Pull Requests
- Chef-18535 Removed the release branch changes and fixed pipeline [#53](https://github.com/chef/berkshelf/pull/53) ([nikhil2611](https://github.com/nikhil2611)) <!-- 8.0.16 -->
- empty commit [#52](https://github.com/chef/berkshelf/pull/52) ([sanghinitin](https://github.com/sanghinitin)) <!-- 0.1.12 -->
- Updating config to fix promote to dev channel [#51](https://github.com/chef/berkshelf/pull/51) ([nikhil2611](https://github.com/nikhil2611)) <!-- 0.1.11 -->
- Removed hab test pipeline duplicate [#50](https://github.com/chef/berkshelf/pull/50) ([sanghinitin](https://github.com/sanghinitin)) <!-- 0.1.10 -->
- Test pipeline working with empty PR [#49](https://github.com/chef/berkshelf/pull/49) ([nikhil2611](https://github.com/nikhil2611)) <!-- 0.1.9 -->
- Testing pipelines and added agents promote workload [#48](https://github.com/chef/berkshelf/pull/48) ([nikhil2611](https://github.com/nikhil2611)) <!-- 0.1.8 -->
- Test pipeline with empty commit [#47](https://github.com/chef/berkshelf/pull/47) ([nikhil2611](https://github.com/nikhil2611)) <!-- 0.1.7 -->
- Adding back the pipeline back [#46](https://github.com/chef/berkshelf/pull/46) ([nikhil2611](https://github.com/nikhil2611)) <!-- 0.1.5 -->
- commenting the pipelines [#45](https://github.com/chef/berkshelf/pull/45) ([nikhil2611](https://github.com/nikhil2611)) <!-- 0.1.3 -->
- Adding back the pipelines [#44](https://github.com/chef/berkshelf/pull/44) ([nikhil2611](https://github.com/nikhil2611)) <!-- 0.1.1 -->
- Added the release branch [#42](https://github.com/chef/berkshelf/pull/42) ([nikhil2611](https://github.com/nikhil2611)) <!-- 8.0.16 -->
- PR #11 rebase Allow users to user octokit 5.x [#35](https://github.com/chef/berkshelf/pull/35) ([tpowell-progress](https://github.com/tpowell-progress)) <!-- 8.0.15 -->
- Add running of tests on verify pipeline [#33](https://github.com/chef/berkshelf/pull/33) ([tpowell-progress](https://github.com/tpowell-progress)) <!-- 8.0.14 -->
Expand Down
3 changes: 3 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ group :development do
gem "chefstyle"
end

gem "appbundler"


instance_eval(ENV["GEMFILE_MOD"]) if ENV["GEMFILE_MOD"]

# If you want to load debugging tools into the bundle exec sandbox,
Expand Down
Loading

0 comments on commit e08c7dc

Please sign in to comment.