mirror of
https://github.com/saltstack/salt-bootstrap.git
synced 2025-04-09 22:31:53 +00:00
99 lines
4.2 KiB
YAML
99 lines
4.2 KiB
YAML
name: Test Linux
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
distro-slug:
|
|
type: string
|
|
required: true
|
|
description: The Distribution Slug
|
|
|
|
display-name:
|
|
type: string
|
|
required: true
|
|
description: The Display Name For The Job
|
|
|
|
instances:
|
|
type: string
|
|
required: true
|
|
description: The Instances To Test
|
|
|
|
container-slug:
|
|
type: string
|
|
required: true
|
|
description: The Container Slug
|
|
|
|
timeout:
|
|
type: number
|
|
required: false
|
|
default: 20
|
|
|
|
|
|
jobs:
|
|
Test:
|
|
name: ${{ matrix.instance }}
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: ${{ inputs.timeout }}
|
|
strategy:
|
|
max-parallel: 2
|
|
fail-fast: false
|
|
matrix:
|
|
instance: ${{ fromJSON(inputs.instances) }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Get Version
|
|
run: |
|
|
# We need to get the version here and make it an environment variable
|
|
# It is used to install via bootstrap and in the test
|
|
# The version is in the instance name
|
|
# sed 1st - becomes space, 2nd - becomes dot
|
|
vt_parm_ver=$(echo "${{ matrix.instance }}" | sed 's/-/ /' | sed 's/-/./' | awk -F ' ' '{print $2}')
|
|
echo "SaltVersion=$vt_parm_ver" >> $GITHUB_ENV
|
|
|
|
- name: "Pull container ${{ inputs.container-slug }}"
|
|
run: |
|
|
docker pull ghcr.io/saltstack/salt-ci-containers/testing:${{ inputs.container-slug }}
|
|
|
|
- name: "Create container ${{ inputs.container-slug }}"
|
|
run: |
|
|
/usr/bin/docker create --name ${{ github.run_id }}_salt-test --workdir /_w/ --privileged -e "HOME=/github/home" -e GITHUB_ACTIONS=true -e CI=true -e $GITHUB_ENV -v "/var/run/docker.sock":"/var/run/docker.sock" -v "/home/runner/work":"/__w" -v "/home/runner/work/_temp":"/__w/_temp" -v "/home/runner/work/_actions":"/__w/_actions" -v "/opt/hostedtoolcache":"/__t" -v "/home/runner/work/_temp/_github_home":"/github/home" -v "/home/runner/work/_temp/_github_workflow":"/github/workflow" -v "/home/runner/work/salt-bootstrap/salt-bootstrap":"/_w/btstrap" --entrypoint "/usr/lib/systemd/systemd" ghcr.io/saltstack/salt-ci-containers/testing:${{ inputs.container-slug }} --systemd --unit rescue.target
|
|
|
|
- name: "Start container ${{ inputs.container-slug }}"
|
|
run: |
|
|
/usr/bin/docker start ${{ github.run_id }}_salt-test
|
|
|
|
- name: "Install Python Dependencies with pip breakage in container ${{ inputs.container-slug }}"
|
|
if: ${{ ( inputs.distro-slug == 'debian-12' ) || ( inputs.distro-slug == 'debian-13' ) || ( inputs.distro-slug == 'ubuntu-2404' ) }}
|
|
run: |
|
|
docker exec ${{ github.run_id}}_salt-test python3 -m pip install --break-system-packages -r /_w/btstrap/tests/requirements.txt
|
|
|
|
- name: "Install Python Dependencies without pip breakage in container ${{ inputs.container-slug }}"
|
|
if: ${{ ( inputs.distro-slug != 'debian-12' ) && ( inputs.distro-slug != 'debian-13' ) && ( inputs.distro-slug != 'ubuntu-2404' ) }}
|
|
run: |
|
|
docker exec ${{ github.run_id}}_salt-test python3 -m pip install -r /_w/btstrap/tests/requirements.txt
|
|
|
|
- name: Bootstrap Salt
|
|
run: |
|
|
# sed 1st - becomes space, 2nd - becomes dot
|
|
bt_arg1=$(echo "${{ matrix.instance }}" | sed 's/-/ /' | sed 's/-/./' | awk -F ' ' '{print $1}')
|
|
bt_arg2=$(echo "${{ matrix.instance }}" | sed 's/-/ /' | sed 's/-/./' | awk -F ' ' '{print $2}')
|
|
echo "bt parms ,$bt_parms, bt_arg1 ,$bt_arg1, bt_arg2 ,$bt_arg2,"
|
|
docker exec ${{ github.run_id}}_salt-test sh -x /_w/btstrap/bootstrap-salt.sh "$bt_arg1" "$bt_arg2"
|
|
|
|
- name: Test Bootstrap
|
|
run: |
|
|
docker exec ${{ github.run_id}}_salt-test pytest --cache-clear -v -s -ra --log-cli-level=debug /_w/btstrap/tests/integration/
|
|
|
|
- name: Set Exit Status
|
|
if: always()
|
|
run: |
|
|
mkdir exitstatus
|
|
echo "${{ job.status }}" > exitstatus/${{ github.job }}-${{ matrix.instance }}-${{ inputs.distro-slug }}
|
|
|
|
- name: Upload Exit Status
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: exitstatus-${{ github.job }}-${{ matrix.instance }}-${{ inputs.distro-slug }}
|
|
path: exitstatus/
|