forked from berkshelf/berkshelf
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add pipleline for build, publish, test cases
Signed-off-by: Sachin <[email protected]>
- Loading branch information
Sachin
committed
Dec 3, 2024
1 parent
4e98b8c
commit 8b91d89
Showing
5 changed files
with
318 additions
and
0 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,116 @@ | ||
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 "berkshelf" | 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_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 "berkshelf") | ||
hab pkg install ./results/$hartfile | ||
. ./results/last_build.ps1 | ||
habitat/tests/test.ps1 $pkg_ident |
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,113 @@ | ||
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!!" | ||
outreach |
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,45 @@ | ||
name: Run Rake Tests | ||
|
||
on: | ||
push: | ||
branches: | ||
- workstation-LTS | ||
pull_request: | ||
branches: | ||
- workstation-LTS | ||
|
||
jobs: | ||
unit-tests: | ||
name: Execute Tests cases | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
# Step 1: Checkout the code | ||
- name: Checkout Code | ||
uses: actions/checkout@v4 | ||
|
||
# Step 2: Set up Ruby | ||
- name: Setup Ruby | ||
uses: ruby/setup-ruby@v1 | ||
with: | ||
ruby-version: 3.1 # Use Ruby 3.1 as specified | ||
|
||
# Step 3: Install system dependencies | ||
- name: Install Dependencies | ||
run: | | ||
sudo apt-get update -y | ||
sudo apt-get install -y graphviz | ||
# Step 4: Install project dependencies | ||
- name: Install Bundler and Dependencies | ||
run: | | ||
rm -f .bundle/config | ||
gem install bundler | ||
bundle config set --local path 'vendor/bundle' | ||
bundle install --jobs=3 --retry=3 | ||
# Step 5: Run the Rake tests | ||
- name: Run Rake Tests | ||
run: | | ||
bundle exec rake | ||
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,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" | ||
|
||
|
||
$version=hab pkg exec "${pkg_ident}" berks -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 "Berkshelf working fine" | ||
} | ||
else { | ||
Write-Error "Berkshelf version not met expected $package_version actual version $actual_version " | ||
throw "Berkshelf windows pipeline not working for hab pkg" | ||
} |
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,23 @@ | ||
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 "--- :msg_right: Testing ${pkg_ident} executables" | ||
actual_version=$(hab pkg exec "${pkg_ident}" berks -v | sed -E 's/.*: ([0-9]+\.[0-9]+\.[0-9]+).*/\1/') | ||
[[ "$package_version" = "$actual_version" ]] || error "Berkshelf version is not the expected version. Expected '$package_version', got '$actual_version'" |