diff --git a/.github/workflows/kitchen.vagrant.yml b/.github/workflows/kitchen.vagrant.yml new file mode 100644 index 0000000..662d442 --- /dev/null +++ b/.github/workflows/kitchen.vagrant.yml @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +name: 'Kitchen Vagrant (FreeBSD, OpenBSD & Windows)' +'on': ['push', 'pull_request'] + +env: + KITCHEN_LOCAL_YAML: 'kitchen.vagrant.yml' + +jobs: + test: + runs-on: 'macos-10.15' + strategy: + fail-fast: false + matrix: + instance: + - default-freebsd-130-master-py3 + # - archive-freebsd-130-master-py3 + # - source-freebsd-130-master-py3 + # - repo-freebsd-130-master-py3 + - default-freebsd-123-master-py3 + # - archive-freebsd-123-master-py3 + # - source-freebsd-123-master-py3 + # - repo-freebsd-123-master-py3 + # - default-freebsd-130-3004-0-py3 + # - default-freebsd-123-3004-0-py3 + - default-openbsd-70-3003-3-py3 + # - archive-openbsd-70-3003-3-py3 + - default-openbsd-69-3002-6-py3 + # - archive-openbsd-69-3002-6-py3 + - default-windows-10-latest-py3 + # - archive-windows-10-latest-py3 + - default-windows-81-latest-py3 + # - archive-windows-81-latest-py3 + steps: + - name: 'Check out code' + uses: 'actions/checkout@v2' + - name: 'Set up Bundler cache' + uses: 'actions/cache@v1' + with: + path: 'vendor/bundle' + key: "${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}" + restore-keys: "${{ runner.os }}-gems-" + - name: 'Run Bundler' + run: | + ruby --version + bundle config path vendor/bundle + bundle install --jobs 4 --retry 3 + - name: 'Run Test Kitchen' + run: 'bundle exec kitchen verify ${{ matrix.instance }}' diff --git a/.github/workflows/kitchen.windows.yml b/.github/workflows/kitchen.windows.yml new file mode 100644 index 0000000..8ad3b2d --- /dev/null +++ b/.github/workflows/kitchen.windows.yml @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +name: 'Kitchen (Windows)' +'on': ['push', 'pull_request'] + +env: + machine_user: kitchen + machine_pass: Pass@word1 + machine_port: 5985 + KITCHEN_LOCAL_YAML: 'kitchen.windows.yml' + +jobs: + test-2022: + runs-on: 'windows-2022' + strategy: + fail-fast: false + matrix: + instance: + - default-windows-2022-latest-py3 + # - archive-windows-2022-latest-py3 + steps: + - name: 'Check out code' + uses: 'actions/checkout@v2' + - name: 'Install Chef' + uses: 'actionshub/chef-install@1.1.0' + with: + project: 'chef' + version: '16.10.8' + - name: 'Add Chef bindir to PATH' + uses: 'myci-actions/export-env-var-powershell@1' + with: + name: 'PATH' + value: "C:\\opscode\\chef\\bin;\ + C:\\opscode\\chef\\embedded\\bin;$env:PATH" + - name: 'Set up Bundler cache' + uses: 'actions/cache@v1' + with: + path: 'vendor/bundle' + key: "${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}" + restore-keys: "${{ runner.os }}-gems-" + - name: 'Set up test user' + run: | + $password = ConvertTo-SecureString $env:machine_pass -AsPlainText -Force + New-LocalUser $env:machine_user -Password $password + Add-LocalGroupMember -Group "Administrators" -Member $env:machine_user + - name: 'Set up WinRM' + run: | + Set-WSManQuickConfig -Force + - name: 'Run Bundler' + run: | + ruby --version + bundle config path vendor/bundle + bundle install --jobs 4 --retry 3 + - name: 'Run Test Kitchen' + run: 'bundle exec kitchen verify ${{ matrix.instance }}' + test-2019: + runs-on: 'windows-2019' + strategy: + fail-fast: false + matrix: + instance: + - default-windows-2019-latest-py3 + # - archive-windows-2019-latest-py3 + steps: + - name: 'Check out code' + uses: 'actions/checkout@v2' + - name: 'Install Chef' + uses: 'actionshub/chef-install@1.1.0' + with: + project: 'chef' + version: '16.10.8' + - name: 'Add Chef bindir to PATH' + uses: 'myci-actions/export-env-var-powershell@1' + with: + name: 'PATH' + value: "C:\\opscode\\chef\\bin;\ + C:\\opscode\\chef\\embedded\\bin;$env:PATH" + - name: 'Set up Bundler cache' + uses: 'actions/cache@v1' + with: + path: 'vendor/bundle' + key: "${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}" + restore-keys: "${{ runner.os }}-gems-" + - name: 'Set up test user' + run: | + $password = ConvertTo-SecureString $env:machine_pass -AsPlainText -Force + New-LocalUser $env:machine_user -Password $password + Add-LocalGroupMember -Group "Administrators" -Member $env:machine_user + - name: 'Set up WinRM' + run: | + Set-WSManQuickConfig -Force + - name: 'Run Bundler' + run: | + ruby --version + bundle config path vendor/bundle + bundle install --jobs 4 --retry 3 + - name: 'Run Test Kitchen' + run: 'bundle exec kitchen verify ${{ matrix.instance }}' diff --git a/Gemfile b/Gemfile index 5991260..8020f66 100644 --- a/Gemfile +++ b/Gemfile @@ -17,3 +17,7 @@ gem 'kitchen-docker', git: 'https://gitlab.com/saltstack-formulas/infrastructure gem 'kitchen-inspec', '>= 2.5.0' gem 'kitchen-salt', '>= 0.7.2' + +group :vagrant do + gem 'kitchen-vagrant' +end diff --git a/Gemfile.lock b/Gemfile.lock index 0a92ec6..f3791c3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -387,6 +387,8 @@ GEM kitchen-salt (0.7.2) hashie (>= 3.5) test-kitchen (>= 1.4) + kitchen-vagrant (1.11.0) + test-kitchen (>= 1.4, < 4) license-acceptance (2.1.13) pastel (~> 0.7) tomlrb (>= 1.2, < 3.0) @@ -669,6 +671,7 @@ DEPENDENCIES kitchen-docker! kitchen-inspec (>= 2.5.0) kitchen-salt (>= 0.7.2) + kitchen-vagrant BUNDLED WITH 2.1.2 diff --git a/kitchen.vagrant.yml b/kitchen.vagrant.yml new file mode 100644 index 0000000..090bf5d --- /dev/null +++ b/kitchen.vagrant.yml @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +driver: + name: vagrant + cache_directory: false + customize: + usbxhci: 'off' + gui: false + ssh: + shell: /bin/sh + <% unless ENV['CI'] %> + linked_clone: true + synced_folders: + - - '.kitchen/kitchen-vagrant/%{instance_name}/vagrant' + - '/vagrant' + - 'create: true, disabled: false' + <% end %> + +platforms: + - name: freebsd-130-master-py3 + driver: + box: myii/freebsd-13.0-master-py3 + - name: freebsd-123-master-py3 + driver: + box: myii/freebsd-12.3-master-py3 + - name: freebsd-130-3004-0-py3 + driver: + box: myii/freebsd-13.0-3004.0-py3 + - name: freebsd-123-3004-0-py3 + driver: + box: myii/freebsd-12.3-3004.0-py3 + - name: openbsd-70-3003-3-py3 + driver: + box: myii/openbsd-7.0-3003.3-py3 + ssh: + shell: /bin/ksh + synced_folders: [] + - name: openbsd-69-3002-6-py3 + driver: + box: myii/openbsd-6.9-3002.6-py3 + ssh: + shell: /bin/ksh + synced_folders: [] + - name: windows-10-latest-py3 + driver: + box: techneg/win10x64-pro-salt + cache_directory: "/omnibus/cache" + customize: {} + ssh: {} + provisioner: + # yamllint disable rule:line-length + init_environment: | + # Workaround to allow `kitchen converge` to be used multiple times + # without having to `kitchen destroy` first: remove state files cached by + # Salt during the previous `converge` (if present) + rm -recurse ` + C:\Users\vagrant\AppData\Local\Temp\kitchen\var\cache\salt\minion\files\base ` + -ErrorAction SilentlyContinue + salt-call --local state.single file.managed ` + C:\Users\vagrant\AppData\Local\Temp\kitchen\srv\salt\win\repo-ng\node.js.sls ` + source=https://github.com/saltstack/salt-winrepo-ng/raw/master/node.js.sls ` + skip_verify=True makedirs=True + exit 0 + # yamllint enable rule:line-length + - name: windows-81-latest-py3 + driver: + box: techneg/win81x64-pro-salt + cache_directory: "/omnibus/cache" + customize: {} + ssh: {} + provisioner: + # yamllint disable rule:line-length + init_environment: | + # Workaround to allow `kitchen converge` to be used multiple times + # without having to `kitchen destroy` first: remove state files cached by + # Salt during the previous `converge` (if present) + rm -recurse ` + C:\Users\vagrant\AppData\Local\Temp\kitchen\var\cache\salt\minion\files\base ` + -ErrorAction SilentlyContinue + salt-call --local state.single file.managed ` + C:\Users\vagrant\AppData\Local\Temp\kitchen\srv\salt\win\repo-ng\node.js.sls ` + source=https://github.com/saltstack/salt-winrepo-ng/raw/master/node.js.sls ` + skip_verify=True makedirs=True + exit 0 + # yamllint enable rule:line-length diff --git a/kitchen.windows.yml b/kitchen.windows.yml new file mode 100644 index 0000000..cc8038a --- /dev/null +++ b/kitchen.windows.yml @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# vim: ft=yaml +--- +driver: + name: proxy + host: localhost + reset_command: "exit 0" + port: 5985 + username: kitchen + password: Pass@word1 + +provisioner: + salt_install: bootstrap + salt_bootstrap_options: -pythonVersion 3 + # yamllint disable rule:line-length + init_environment: | + salt-call --local state.single file.managed ` + C:\Users\kitchen\AppData\Local\Temp\kitchen\srv\salt\win\repo-ng\node.js.sls ` + source=https://github.com/saltstack/salt-winrepo-ng/raw/master/node.js.sls ` + skip_verify=True makedirs=True + # yamllint enable rule:line-length + +platforms: + - name: windows-2022-latest-py3 + - name: windows-2019-latest-py3