Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chef 17400 pipeline #241

Merged
merged 32 commits into from
Dec 5, 2024
Merged
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
b84037b
Add github action for hab pkg and publish
sanghinitin Nov 28, 2024
b28202e
Added version check on new hab pkg
sanghinitin Dec 2, 2024
f8ec8a6
removed extra keyword for triggering pipeline
sanghinitin Dec 2, 2024
a6efdb6
pkg iden added using vars
sanghinitin Dec 2, 2024
79a9682
list all pkg to verify pkg installed
sanghinitin Dec 2, 2024
1e23969
Installing hab build using hart file
sanghinitin Dec 2, 2024
837c975
Installing hab build using hart file
sanghinitin Dec 2, 2024
f0c4fd4
Installing hab build using hart file
sanghinitin Dec 2, 2024
77a5436
pipeline test commit
sanghinitin Dec 2, 2024
f31c624
pipeline test commit
sanghinitin Dec 2, 2024
ed2cc27
pipeline test commit
sanghinitin Dec 2, 2024
831f647
pipeline test commit
sanghinitin Dec 2, 2024
e5133b3
pipeline test commit
sanghinitin Dec 2, 2024
8164c5a
sudo for installing hab pkg
sanghinitin Dec 2, 2024
f015165
sudo for installing hab pkg
sanghinitin Dec 2, 2024
2677bea
sudo for installing hab pkg
sanghinitin Dec 2, 2024
409d9e7
sudo for installing hab pkg
sanghinitin Dec 2, 2024
a571355
hart file version change
sanghinitin Dec 2, 2024
440380d
Change pkg_indent
sanghinitin Dec 2, 2024
8982668
Change pkg_indent
sanghinitin Dec 2, 2024
b9c9f6e
version regex changed
sanghinitin Dec 2, 2024
43350d4
windows pipeline change
sanghinitin Dec 2, 2024
ca7fce0
windows pipeline change
sanghinitin Dec 2, 2024
7c25c1a
windows pipeline change
sanghinitin Dec 2, 2024
cb338d5
windows pipeline change
sanghinitin Dec 2, 2024
0bc1054
Windows chef-cli hab version check
sanghinitin Dec 2, 2024
10689fa
Windows chef-cli hab version check
sanghinitin Dec 2, 2024
4c028bb
Windows chef-cli hab version check
sanghinitin Dec 2, 2024
0924d5d
Change the message in test phase and throw error
sanghinitin Dec 2, 2024
9e3e651
Change the message in test phase and throw error
sanghinitin Dec 2, 2024
2befa02
Hab pipeline using buildkite
sanghinitin Dec 5, 2024
12a3bf5
hab build yml file added
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
117 changes: 117 additions & 0 deletions .github/workflows/habitat-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
name: Build Habitat packages

on:
push:
branches:
- workstation-LTS
pull_request:
branches:
- workstation-LTS

env:
# BLDR URL Defined as: 'https://bldr.habitat.sh/' but as an env var in workspace settings.
BLDR_URL: ${{vars.BLDR_URL}}
# HAB_ORIGIN Defined as: 'chef' defined in workspace settings.
HAB_ORIGIN: ${{vars.HAB_ORIGIN}}
# BLDR_CHANNEL defaulted to unstable, but can be switched to stable, it is defined via the environment setting https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#using-an-environment
BLDR_CHANNEL: ${{ vars.BLDR_CHANNEL }}
# HABITAT_VERSION_SET this is the version of habitat CLI you are using, defaults to latest.
HABITAT_VERSION_SET: ${{vars.HABITAT_VERSION_SET}}
# HAB_AUTH_TOKEN your orgs/projects auth token value
HAB_AUTH_TOKEN: ${{ secrets.HAB_AUTH_TOKEN }}
# HABITAT_TARGET this is the CPU arch for the linux CLI tool, its defaulted to x86_64
#HABITAT_TARGET: $#{{vars.HABITAT_TARGET}}
HAB_FALLBACK_CHANNEL: ${{vars.HAB_FALLBACK_CHANNEL}}

permissions:
contents: write

jobs:
pre-build:
name: Setup before building packages
runs-on: ubuntu-latest
outputs:
app_version: ${{ steps.app_version.outputs.APP_VERSION }}
steps:
- name: Get branch name
id: get_branch_name
run: |
echo "BRANCH_NAME=${GITHUB_REF_NAME//\//-}" >> "$GITHUB_OUTPUT"
- name: Get version from tag
id: app_version
run: |
echo "APP_VERSION=${{ github.ref_type == 'tag' && github.ref_name || format('{0}-{1}', steps.get_branch_name.outputs.BRANCH_NAME, github.sha) }}" >> "$GITHUB_OUTPUT"
agent-matrix:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
# matrix strategy is described at https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs

runs-on: ${{ matrix.os }}
# free runner types are https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners
# from macos-latest, windows-latest, ubuntu-latest, ubuntu-20.04, ubuntu-18.04, ubuntu-16.04, windows-2019, windows-2016
# included software packages on runners are at https://github.com/actions/runner-images#available-images
# defaulted to unstable, but can be switched to stable, it is defined via the environment setting https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#using-an-environment
# environment: unstable
steps:
- name: print OS
run: echo "--- ${{ matrix.os }}"
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0


- name: install habitat on Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
shell: bash
run: |
echo "--- STARTING HAB INSTALL ON ${{ matrix.os }} UBUNTU with habitat version:${{vars.HABITAT_VERSION_SET}}"
export HABITAT_VERSION="${{vars.HABITAT_VERSION_SET}}"
export HAB_FALLBACK_CHANNEL="${{vars.HAB_FALLBACK_CHANNEL}}"
HABITAT_VERSION="${HABITAT_VERSION:?HABITAT_VERSION must be set}"
HABITAT_TARGET="${HABITAT_TARGET:-x86_64-linux}"
curl https://raw.githubusercontent.com/habitat-sh/habitat/master/components/hab/install.sh | sudo bash -s -- -v "$HABITAT_VERSION" -t "$HABITAT_TARGET"
- name: run Habitat packaging (linux)
if: ${{ matrix.os == 'ubuntu-latest' }}
shell: bash
run: |
hab license accept
hab origin key download $HAB_ORIGIN
hab origin key download --auth $HAB_AUTH_TOKEN --secret $HAB_ORIGIN
echo "--- running linux hab build"
hab pkg build .
hartfile=$(ls ./results | grep "chef-cli" | tail -n 1)
sudo hab license accept
export CHEF_LICENSE="accept-no-persist"
export HAB_LICENSE="accept-no-persist"
export HAB_NONINTERACTIVE="true"
sudo hab pkg install ./results/$hartfile
. ./results/last_build.env
export pkg_ident
chmod +x habitat/tests/test.sh
habitat/tests/test.sh
- name: Install Habitat on Windows
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: |
write-output "--- STARTING HAB INSTALL ON ${{ matrix.os }} WINDOWS with habitat version:${{vars.HABITAT_VERSION_SET}}"
$env:HAB_LICENSE = "accept-no-persist"
$env:HAB_NONINTERACTIVE = "true"
$env:HAB_FALLBACK_CHANNEL= "${{vars.HAB_FALLBACK_CHANNEL}}"
Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubusercontent.com/habitat-sh/habitat/main/components/hab/install.ps1) } -Version ${{vars.HABITAT_VERSION_SET}}"
- name: run habitat packaging windows
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: |
$env:Path += ";C:\ProgramData\Habitat"
hab license accept
hab origin key download ${{ env.HAB_ORIGIN }}
hab origin key download --auth ${{ secrets.HAB_AUTH_TOKEN }} --secret ${{ env.HAB_ORIGIN }}
write-output "--- running windows hab build"
hab pkg build .
$hartfile=(ls ./results -Name | findstr "chef-cli")
hab pkg install ./results/$hartfile
. ./results/last_build.ps1
habitat/tests/test.ps1 $pkg_ident
112 changes: 112 additions & 0 deletions .github/workflows/habitat-publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Publish Habitat packages

on:
push:
branches:
- workstation-LTS
release:
types:
- created

env:
# BLDR URL Defined as: 'https://bldr.habitat.sh/' but as an env var in workspace settings.
BLDR_URL: ${{vars.BLDR_URL}}
# HAB_ORIGIN Defined as: 'chef' defined in workspace settings.
HAB_ORIGIN: ${{vars.HAB_ORIGIN}}
# BLDR_CHANNEL defaulted to unstable, but can be switched to stable, it is defined via the environment setting https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#using-an-environment
BLDR_CHANNEL: ${{ vars.BLDR_CHANNEL }}
# HABITAT_VERSION_SET this is the version of habitat CLI you are using, defaults to latest.
HABITAT_VERSION_SET: ${{vars.HABITAT_VERSION_SET}}
# HAB_PACKAGE is the name of the project you are on, IE: node-management-agent
HAB_PACKAGE: ${{vars.HAB_PACKAGE}}
# HAB_AUTH_TOKEN your orgs/projects auth token value
HAB_AUTH_TOKEN: ${{ secrets.HAB_AUTH_TOKEN }}
HAB_FALLBACK_CHANNEL: ${{vars.HAB_FALLBACK_CHANNEL}}
# HABITAT_TARGET this is the CPU arch for the linux CLI tool, its defaulted to x86_64
#HABITAT_TARGET: $#{{vars.HABITAT_TARGET}}
# org-wide access token on https://github.com/organizations/progress-platform-services/settings/secrets/actions

permissions:
contents: write

jobs:
pre-build:
name: Setup before building packages
runs-on: ubuntu-latest
outputs:
app_version: ${{ steps.app_version.outputs.APP_VERSION }}
steps:
- name: Get branch name
id: get_branch_name
run: |
echo "BRANCH_NAME=${GITHUB_REF_NAME//\//-}" >> "$GITHUB_OUTPUT"
- name: Get version from tag
id: app_version
run: |
echo "APP_VERSION=${{ github.ref_type == 'tag' && github.ref_name || format('{0}-{1}', steps.get_branch_name.outputs.BRANCH_NAME, github.sha) }}" >> "$GITHUB_OUTPUT"
agent-matrix:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
# matrix strategy is described at https://docs.github.com/en/actions/using-jobs/using-a-matrix-for-your-jobs

runs-on: ${{ matrix.os }}
# free runner types are https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners
# from macos-latest, windows-latest, ubuntu-latest, ubuntu-20.04, ubuntu-18.04, ubuntu-16.04, windows-2019, windows-2016
# included software packages on runners are at https://github.com/actions/runner-images#available-images
# environment: unstable
steps:
- name: print OS
run: echo "--- ${{ matrix.os }}"
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0


- name: install habitat on Linux
if: ${{ matrix.os == 'ubuntu-latest' }}
shell: bash
run: |
echo "--- STARTING HAB INSTALL ON ${{ matrix.os }} UBUNTU with habitat version:${{vars.HABITAT_VERSION_SET}}"
export HABITAT_VERSION="${{vars.HABITAT_VERSION_SET}}"
HABITAT_VERSION="${HABITAT_VERSION:?HABITAT_VERSION must be set}"
HABITAT_TARGET="${HABITAT_TARGET:-x86_64-linux}"
export HAB_FALLBACK_CHANNEL="${{vars.HAB_FALLBACK_CHANNEL}}"
curl https://raw.githubusercontent.com/habitat-sh/habitat/master/components/hab/install.sh | sudo bash -s -- -v "$HABITAT_VERSION" -t "$HABITAT_TARGET"
- name: run Habitat packaging (linux)
if: ${{ matrix.os == 'ubuntu-latest' }}
shell: bash
run: |
hab license accept
hab origin key download $HAB_ORIGIN
hab origin key download --auth $HAB_AUTH_TOKEN --secret $HAB_ORIGIN
echo "--- running linux hab build"
hab pkg build .
echo "--- pushing to ${{ env.BLDR_URL }}/#/${{ env.HAB_ORIGIN }}/${{ env.HAB_PACKAGE }}..."
source results/last_build.env
hab pkg upload --auth $HAB_AUTH_TOKEN results/$pkg_artifact
echo "--- push complete!!"
- name: Install Habitat on Windows
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: |
write-output "--- STARTING HAB INSTALL ON ${{ matrix.os }} WINDOWS with habitat version:${{vars.HABITAT_VERSION_SET}}"
$env:HAB_LICENSE = "accept-no-persist"
$env:HAB_FALLBACK_CHANNEL= "${{vars.HAB_FALLBACK_CHANNEL}}"
Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubusercontent.com/habitat-sh/habitat/main/components/hab/install.ps1) } -Version ${{vars.HABITAT_VERSION_SET}}"
- name: run habitat packaging windows
if: ${{ matrix.os == 'windows-latest' }}
shell: pwsh
run: |
$env:Path += ";C:\ProgramData\Habitat"
hab license accept
hab origin key download ${{ env.HAB_ORIGIN }}
hab origin key download --auth ${{ secrets.HAB_AUTH_TOKEN }} --secret ${{ env.HAB_ORIGIN }}
write-output "--- running windows hab build"
hab pkg build .
write-output "--- pushing hab to unstable channel"
. results\last_build.ps1
hab pkg upload results\$pkg_artifact --auth ${{ secrets.HAB_AUTH_TOKEN }}
write-output "--- push complete!!"
21 changes: 21 additions & 0 deletions habitat/tests/test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
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"
# Pester the Package
$version=hab pkg exec "${pkg_ident}" chef-cli -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 "Chef-cli working fine"
}
else {
Write-Error "chef-cli version not met expected $package_version actual version $actual_version "
throw "Chef cli windows pipeline not working for hab pkg"
}
26 changes: 26 additions & 0 deletions habitat/tests/test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@

set -euo pipefail


project_root="$(git rev-parse --show-toplevel)"

# print error message followed by usage and exit
error () {
local message="$1"

echo -e "\nERROR: ${message}\n" >&2

exit 1
}

[[ -n "$pkg_ident" ]] || error 'no hab package identity provided'

package_version=$(awk -F / '{print $3}' <<<"$pkg_ident")

cd "${project_root}"

echo "--- :mag_right: Testing ${pkg_ident} executables"
actual_version=$(hab pkg exec "${pkg_ident}" chef-cli -v | sed -E 's/.*version: ([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
[[ "$package_version" = "$actual_version" ]] || error "chef-cli version is not the expected version. Expected '$package_version', got '$actual_version'"


Loading