Skip to content

CHEF-17473-Added Github action pipeline to verify build and publish package #6

CHEF-17473-Added Github action pipeline to verify build and publish package

CHEF-17473-Added Github action pipeline to verify build and publish package #6

Workflow file for this run

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 "cookstyle" | 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 "cookstyle")
hab pkg install ./results/$hartfile
. ./results/last_build.ps1
habitat/tests/test.ps1 $pkg_ident