mirror of
https://github.com/saltstack-formulas/packages-formula.git
synced 2025-04-17 10:10:27 +00:00
ci: enable Vagrant-based testing using GitHub Actions
* Semi-automated using https://github.com/myii/ssf-formula/pull/304
This commit is contained in:
parent
79257d555a
commit
49fc85dfed
9 changed files with 277 additions and 0 deletions
33
.github/workflows/kitchen.vagrant.yml
vendored
Normal file
33
.github/workflows/kitchen.vagrant.yml
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=yaml
|
||||||
|
---
|
||||||
|
name: 'Kitchen Vagrant (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:
|
||||||
|
- windows-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 }}'
|
101
.github/workflows/kitchen.windows.yml
vendored
Normal file
101
.github/workflows/kitchen.windows.yml
vendored
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
# -*- 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-2019:
|
||||||
|
runs-on: 'windows-2019'
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
instance:
|
||||||
|
- windows-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;
|
||||||
|
Set-WSManInstance -ResourceURI winrm/config/service
|
||||||
|
-ValueSet @{AllowUnencrypted="true"}
|
||||||
|
- 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-2016:
|
||||||
|
runs-on: 'windows-2016'
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
instance:
|
||||||
|
- windows-windows-2016-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;
|
||||||
|
Set-WSManInstance -ResourceURI winrm/config/service
|
||||||
|
-ValueSet @{AllowUnencrypted="true"}
|
||||||
|
- 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 }}'
|
4
Gemfile
4
Gemfile
|
@ -12,3 +12,7 @@ gem 'kitchen-docker', git: 'https://gitlab.com/saltstack-formulas/infrastructure
|
||||||
# rubocop:enable Layout/LineLength
|
# rubocop:enable Layout/LineLength
|
||||||
gem 'kitchen-inspec', '>= 2.2.1'
|
gem 'kitchen-inspec', '>= 2.2.1'
|
||||||
gem 'kitchen-salt', '>= 0.6.3'
|
gem 'kitchen-salt', '>= 0.6.3'
|
||||||
|
|
||||||
|
group :vagrant do
|
||||||
|
gem 'kitchen-vagrant'
|
||||||
|
end
|
||||||
|
|
|
@ -292,6 +292,8 @@ GEM
|
||||||
kitchen-salt (0.6.3)
|
kitchen-salt (0.6.3)
|
||||||
hashie (>= 3.5)
|
hashie (>= 3.5)
|
||||||
test-kitchen (>= 1.4)
|
test-kitchen (>= 1.4)
|
||||||
|
kitchen-vagrant (1.7.0)
|
||||||
|
test-kitchen (>= 1.4, < 3)
|
||||||
libyajl2 (1.2.0)
|
libyajl2 (1.2.0)
|
||||||
license-acceptance (1.0.19)
|
license-acceptance (1.0.19)
|
||||||
pastel (~> 0.7)
|
pastel (~> 0.7)
|
||||||
|
@ -525,6 +527,7 @@ DEPENDENCIES
|
||||||
kitchen-docker!
|
kitchen-docker!
|
||||||
kitchen-inspec (>= 2.2.1)
|
kitchen-inspec (>= 2.2.1)
|
||||||
kitchen-salt (>= 0.6.3)
|
kitchen-salt (>= 0.6.3)
|
||||||
|
kitchen-vagrant
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.1.2
|
2.1.2
|
||||||
|
|
35
kitchen.vagrant.yml
Normal file
35
kitchen.vagrant.yml
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=yaml
|
||||||
|
---
|
||||||
|
driver:
|
||||||
|
name: vagrant
|
||||||
|
cache_directory: false
|
||||||
|
customize:
|
||||||
|
usbxhci: 'off'
|
||||||
|
gui: false
|
||||||
|
linked_clone: true
|
||||||
|
ssh:
|
||||||
|
shell: /bin/sh
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: windows-81-latest-py3
|
||||||
|
driver:
|
||||||
|
box: techneg/win81x64-pro-salt
|
||||||
|
cache_directory: "/omnibus/cache"
|
||||||
|
customize: {}
|
||||||
|
ssh: {}
|
||||||
|
provisioner:
|
||||||
|
salt_install: none
|
||||||
|
# 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
|
||||||
|
exit 0
|
||||||
|
# yamllint enable rule:line-length
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
salt_install: bootstrap
|
18
kitchen.windows.yml
Normal file
18
kitchen.windows.yml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=yaml
|
||||||
|
---
|
||||||
|
driver:
|
||||||
|
name: proxy
|
||||||
|
host: localhost
|
||||||
|
reset_command: "exit 0"
|
||||||
|
port: 5985
|
||||||
|
username: kitchen
|
||||||
|
password: Pass@word1
|
||||||
|
|
||||||
|
platforms:
|
||||||
|
- name: windows-2019-latest-py3
|
||||||
|
- name: windows-2016-latest-py3
|
||||||
|
|
||||||
|
provisioner:
|
||||||
|
salt_install: bootstrap
|
||||||
|
salt_bootstrap_options: -pythonVersion 3
|
20
kitchen.yml
20
kitchen.yml
|
@ -609,3 +609,23 @@ suites:
|
||||||
verifier:
|
verifier:
|
||||||
inspec_tests:
|
inspec_tests:
|
||||||
- path: test/integration/default
|
- path: test/integration/default
|
||||||
|
- name: windows
|
||||||
|
includes:
|
||||||
|
- windows-81-latest-py3
|
||||||
|
- windows-2019-latest-py3
|
||||||
|
- windows-2016-latest-py3
|
||||||
|
provisioner:
|
||||||
|
state_top:
|
||||||
|
base:
|
||||||
|
'*':
|
||||||
|
- packages.chocolatey
|
||||||
|
pillars:
|
||||||
|
top.sls:
|
||||||
|
base:
|
||||||
|
'*':
|
||||||
|
- packages
|
||||||
|
pillars_from_files:
|
||||||
|
packages.sls: test/salt/pillar/windows.sls
|
||||||
|
verifier:
|
||||||
|
inspec_tests:
|
||||||
|
- path: test/integration/windows
|
||||||
|
|
50
test/integration/windows/README.md
Normal file
50
test/integration/windows/README.md
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
# InSpec Profile: `windows`
|
||||||
|
|
||||||
|
This shows the implementation of the `windows` InSpec [profile](https://github.com/inspec/inspec/blob/master/docs/profiles.md).
|
||||||
|
|
||||||
|
## Verify a profile
|
||||||
|
|
||||||
|
InSpec ships with built-in features to verify a profile structure.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ inspec check windows
|
||||||
|
Summary
|
||||||
|
-------
|
||||||
|
Location: windows
|
||||||
|
Profile: profile
|
||||||
|
Controls: 4
|
||||||
|
Timestamp: 2019-06-24T23:09:01+00:00
|
||||||
|
Valid: true
|
||||||
|
|
||||||
|
Errors
|
||||||
|
------
|
||||||
|
|
||||||
|
Warnings
|
||||||
|
--------
|
||||||
|
```
|
||||||
|
|
||||||
|
## Execute a profile
|
||||||
|
|
||||||
|
To run all **supported** controls on a local machine use `inspec exec /path/to/profile`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ inspec exec windows
|
||||||
|
..
|
||||||
|
|
||||||
|
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
|
||||||
|
8 examples, 0 failures
|
||||||
|
```
|
||||||
|
|
||||||
|
## Execute a specific control from a profile
|
||||||
|
|
||||||
|
To run one control from the profile use `inspec exec /path/to/profile --controls name`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ inspec exec windows --controls package
|
||||||
|
.
|
||||||
|
|
||||||
|
Finished in 0.0025 seconds (files took 0.12449 seconds to load)
|
||||||
|
1 examples, 0 failures
|
||||||
|
```
|
||||||
|
|
||||||
|
See an [example control here](https://github.com/inspec/inspec/blob/master/examples/profile/controls/example.rb).
|
13
test/integration/windows/inspec.yml
Normal file
13
test/integration/windows/inspec.yml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# vim: ft=yaml
|
||||||
|
---
|
||||||
|
name: windows
|
||||||
|
title: packages formula
|
||||||
|
maintainer: SaltStack Formulas
|
||||||
|
license: Apache-2.0
|
||||||
|
summary: Verify that the packages formula is setup and configured correctly (on Windows)
|
||||||
|
depends:
|
||||||
|
- name: share
|
||||||
|
path: test/integration/share
|
||||||
|
supports:
|
||||||
|
- platform: windows
|
Loading…
Add table
Reference in a new issue