name: Cloudbase-Init tests env: UPPER_CONSTRAINTS: "https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt" TEST_RESOURCES: "https://github.com/cloudbase/cloudbase-init-test-resources" on: [push, pull_request] jobs: linux-unit-tests: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: python-version: [ "3.11"] architecture: ["x64"] steps: - name: Checkout cloudbase-init repository uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} - name: Install python3 tox shell: bash run: | python3 -m pip install tox setuptools --upgrade - name: Run Cloudbase-Init unit tests with tox shell: bash run: | tox run-parallel -e py3,pep8,cover,docs windows-unit-tests: runs-on: windows-latest strategy: matrix: python-version: [ "3.8", "3.11"] architecture: ["x64", "x86"] steps: - name: Checkout cloudbase-init repository uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} - name: Install python3 tox shell: cmd run: | python3 -m pip install tox setuptools --upgrade - name: Run Cloudbase-Init unit tests with tox shell: cmd run: | tox run-parallel -e py3,pep8 windows-functional-tests: runs-on: windows-latest strategy: fail-fast: false matrix: python-version: [ "3.11"] architecture: ["x64", "x86"] cloud: ["empty"] steps: - name: Checkout cloudbase-init repository uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} architecture: ${{ matrix.architecture }} - name: Download external dependencies shell: cmd run: | git clone %TEST_RESOURCES% test-resources python -W ignore -m pip install --upgrade pip - name: Install Cloudbase-Init shell: cmd run: | python -W ignore -m pip install -c %UPPER_CONSTRAINTS% -U --force-reinstall -r requirements.txt python -W ignore -m pip install . - name: Run Cloudbase-Init functional tests shell: powershell run: | try { & cmd /c "cloudbase-init.exe --noreset_service_password --config-file ./test-resources/${{ matrix.cloud }}/cloudbase-init.conf 2>&1" | Tee-Object -FilePath cloudbase-init.log } catch {} $errors = $(cat ./cloudbase-init.log | Where-Object {$_ -like "*error*"}) $pluginExecution = $(cat ./cloudbase-init.log | Where-Object {$_ -like "*Plugins execution done*"}) if ($errors -or !$pluginExecution) { exit 1 }