CHEF-17473-Added Github action pipeline to verify build and publish package #6
Workflow file for this run
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
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 |