From 949f5727a5298317b1f826045b8abe0e37076734 Mon Sep 17 00:00:00 2001 From: Dan Webb Date: Mon, 20 Jan 2025 16:43:08 +0000 Subject: [PATCH] Move install script here Signed-off-by: Dan Webb --- .github/actions/chef-install/action.yml | 46 +++++++++++++++++++ .../action.yml} | 32 +++++++++---- .../action.yml} | 0 .github/workflows/ci.yml | 16 ++++--- 4 files changed, 78 insertions(+), 16 deletions(-) create mode 100644 .github/actions/chef-install/action.yml rename .github/actions/{test-kitchen.yml => test-kitchen/action.yml} (55%) rename .github/actions/{virtualbox-setup.yml => virtualbox-setup/action.yml} (100%) diff --git a/.github/actions/chef-install/action.yml b/.github/actions/chef-install/action.yml new file mode 100644 index 000000000..68a64ff62 --- /dev/null +++ b/.github/actions/chef-install/action.yml @@ -0,0 +1,46 @@ +name: 'Install Chef' +description: 'Installs Chef products on Windows or Linux/macOS' + +inputs: + channel: + description: 'Chef download channel' + required: false + default: 'stable' + project: + description: 'Chef project to download' + required: false + default: 'chef-workstation' + version: + description: 'Version of Chef product' + required: false + license-id: + description: 'Chef license ID' + required: true + windows-path: + description: 'Windows installation path' + required: false + default: 'C:\opscode' + +runs: + using: "composite" + steps: + - name: Install Chef on Linux/macOS + if: runner.os != 'Windows' + shell: bash + run: | + curl -L https://chefdownload-commercial.chef.io/install.sh?license_id=${{ inputs.license-id }} -o chefDownload.sh + sudo chmod +x chefDownload.sh + sudo ./chefDownload.sh -c ${{ inputs.channel }} -P ${{ inputs.project }} ${{ inputs.version && format('-v {0}', inputs.version) }} + rm -f chefDownload.sh + + - name: Install Chef on Windows + if: runner.os == 'Windows' + shell: pwsh + run: | + . { iwr -useb https://chefdownload-commercial.chef.io/install.ps1?license_id=${{ inputs.license-id }} } | iex; + install -channel ${{ inputs.channel }} -project ${{ inputs.project }} ${{ inputs.version && format('-version {0}', inputs.version) }} + + - name: Add Windows Chef Path + if: runner.os == 'Windows' + shell: pwsh + run: echo "${{ inputs.windows-path }}\bin" >> $env:GITHUB_PATH diff --git a/.github/actions/test-kitchen.yml b/.github/actions/test-kitchen/action.yml similarity index 55% rename from .github/actions/test-kitchen.yml rename to .github/actions/test-kitchen/action.yml index c4e285b25..ac7919886 100644 --- a/.github/actions/test-kitchen.yml +++ b/.github/actions/test-kitchen/action.yml @@ -15,29 +15,43 @@ inputs: chef-version: description: 'Chef version to use' required: false - default: 'latest' - chef-license: - description: 'Chef license acceptance' - required: false - default: 'accept-no-persist' + default: 'current' + license-id: + description: 'Chef license ID' + required: true kitchen-command: description: 'Kitchen command to run (test, verify, etc)' required: false default: 'test' + channel: + description: 'Chef download channel' + required: false + default: 'stable' + project: + description: 'Chef project to download' + required: false + default: 'chef-workstation' + version: + description: 'Version of Chef product' + required: false + windows-path: + description: 'Windows installation path' + required: false + default: 'C:\opscode' runs: using: "composite" steps: - name: Install Chef - uses: actionshub/chef-install@3.0.1 + uses: ./.github/actions/chef-install with: version: ${{ inputs.chef-version }} + license-id: ${{ inputs.license-id }} - name: Run Test Kitchen shell: bash - run: - kitchen ${{ inputs.kitchen-command }} ${{ inputs.suite }}-${{ inputs.os }} + run: kitchen ${{ inputs.kitchen-command }} ${{ inputs.suite }}-${{ inputs.os }} env: - CHEF_LICENSE: ${{ inputs.chef-license }} + CHEF_LICENSE: ${{ inputs.license-id }} KITCHEN_LOCAL_YAML: ${{ inputs.kitchen-yaml }} KITCHEN_YAML: ${{ inputs.kitchen-yaml }} diff --git a/.github/actions/virtualbox-setup.yml b/.github/actions/virtualbox-setup/action.yml similarity index 100% rename from .github/actions/virtualbox-setup.yml rename to .github/actions/virtualbox-setup/action.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b697dfe2e..6d96550ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,6 +46,7 @@ jobs: steps: - name: Check out code uses: actions/checkout@v4 + - name: Test Kitchen uses: ./.github/actions/test-kitchen with: @@ -53,7 +54,7 @@ jobs: os: ${{ matrix.os }} kitchen-yaml: kitchen.dokken.yml chef-version: latest - chef-license: accept-no-persist + license-id: ${{ secrets.CHEF_LICENSE_KEY }} integration-swarm: needs: lint-unit @@ -63,12 +64,13 @@ jobs: os: ["ubuntu-2204"] suite: ["swarm"] fail-fast: false - steps: - name: Check out code uses: actions/checkout@v4 + - name: Setup VirtualBox & Vagrant uses: ./.github/actions/virtualbox-setup + - name: Run Kitchen Tests uses: ./.github/actions/test-kitchen with: @@ -76,7 +78,7 @@ jobs: os: ${{ matrix.os }} kitchen-yaml: kitchen.yml chef-version: latest - chef-license: accept-no-persist + license-id: ${{ secrets.CHEF_LICENSE_KEY }} integration-smoke: needs: lint-unit @@ -99,10 +101,10 @@ jobs: steps: - name: Check out code uses: actions/checkout@v4 + - name: Setup VirtualBox & Vagrant - uses: ./.github/workflows/virtualbox-setup.yml - - name: Install Chef - uses: actionshub/chef-install@3.0.1 + uses: ./.github/actions/virtualbox-setup + - name: Test Kitchen uses: ./.github/actions/test-kitchen with: @@ -110,4 +112,4 @@ jobs: os: ${{ matrix.os }} kitchen-yaml: kitchen.yml chef-version: latest - chef-license: accept-no-persist + license-id: ${{ secrets.CHEF_LICENSE_KEY }}