Skip to content

Commit

Permalink
Merge pull request #535 from myii/ci/add-macos
Browse files Browse the repository at this point in the history
ci(macos): enable testing using GitHub Actions
  • Loading branch information
myii authored May 17, 2022
2 parents e8a1237 + c05fddf commit 0175f54
Show file tree
Hide file tree
Showing 10 changed files with 476 additions and 12 deletions.
79 changes: 79 additions & 0 deletions .github/workflows/kitchen.macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
name: 'Kitchen (macOS)'
'on': ['push', 'pull_request']

env:
KITCHEN_LOCAL_YAML: 'kitchen.macos.yml'

jobs:
test-12:
runs-on: 'macos-12'
strategy:
fail-fast: false
matrix:
instance:
- default-macos-12-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 }}'
test-11:
runs-on: 'macos-11'
strategy:
fail-fast: false
matrix:
instance:
- default-macos-11-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 }}'
test-1015:
runs-on: 'macos-10.15'
strategy:
fail-fast: false
matrix:
instance:
- default-macos-1015-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 }}'
25 changes: 25 additions & 0 deletions kitchen.macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
# vim: ft=yaml
---
driver:
name: exec

provisioner:
sudo: true
salt_install: bootstrap
salt_bootstrap_options: -P stable latest
salt_call_command: /opt/salt/bin/salt-call

platforms:
- name: macos-12-latest-py3
verifier:
inputs:
saltmajorversion: 3004
- name: macos-11-latest-py3
verifier:
inputs:
saltmajorversion: 3004
- name: macos-1015-latest-py3
verifier:
inputs:
saltmajorversion: 3004
27 changes: 15 additions & 12 deletions salt/minion.sls
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,22 @@ download-salt-minion:
{% else %}
- skip_verify: True
{% endif %}
- user: root
- group: wheel
- user: {{ salt_settings.rootuser }}
- group: {{ salt_settings.rootgroup }}
- mode: '0644'
- unless:
- test -n "{{ salt_settings.version }}" && '/opt/salt/bin/salt-minion --version=.*{{ salt_settings.version }}.*'
- require_in:
- macpackage: salt-minion
- retry: {{ salt_settings.retry_options | json }}
{%- elif "workaround https://github.com/saltstack/salt/issues/49348" %}
cmd.run:
- name: /usr/local/bin/brew install {{ salt_settings.salt_minion }}
- onlyif: test -x /usr/local/bin/brew
- runas: {{ salt_settings.rootuser }}
{% if salt_settings.install_packages %}
pkg.installed:
- name: {{ salt_settings.salt_minion }}
{%- if salt_settings.version is defined %}
- version: {{ salt_settings.version }}
{%- endif %}
{% endif %}
{%- endif %}
salt-minion-macos:
Expand Down Expand Up @@ -130,7 +133,7 @@ salt-minion:
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
- macpackage: salt-minion
{%- elif grains.os == 'MacOS' %}
- cmd: download-salt-minion
- pkg: download-salt-minion
{%- else %}
- pkg: salt-minion
{%- endif %}
Expand All @@ -155,7 +158,7 @@ restart-salt-minion:
{%- if grains.os == 'MacOS' and salt_settings.salt_minion_pkg_source %}
- macpackage: salt-minion
{%- elif grains.os == 'MacOS' %}
- cmd: download-salt-minion
- pkg: download-salt-minion
{%- else %}
- pkg: salt-minion
{%- endif %}
Expand Down Expand Up @@ -201,7 +204,7 @@ permissions-minion-config:
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
wheel
{%- else %}
root
{{ salt_settings.rootgroup }}
{%- endif %}
{%- if grains['kernel'] != 'Windows' %}
- mode: 640
Expand All @@ -221,7 +224,7 @@ salt-minion-pki-dir:
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
wheel
{%- else %}
root
{{ salt_settings.rootgroup }}
{%- endif %}
{%- if grains['kernel'] != 'Windows' %}
- mode: 700
Expand All @@ -240,7 +243,7 @@ permissions-minion.pem:
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
wheel
{%- else %}
root
{{ salt_settings.rootgroup }}
{%- endif %}
{%- if grains['kernel'] != 'Windows' %}
- mode: 400
Expand All @@ -261,7 +264,7 @@ permissions-minion.pub:
{%- if grains['kernel'] in ['FreeBSD', 'OpenBSD', 'NetBSD'] %}
wheel
{%- else %}
root
{{ salt_settings.rootgroup }}
{%- endif %}
{%- if grains['kernel'] != 'Windows' %}
- mode: 644
Expand Down
1 change: 1 addition & 0 deletions salt/osfamilymap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ Windows:
rootuser: {{ rootuser | d('') }}

MacOS:
salt_master: saltstack
salt_minion: salt
salt_minion_pkg_source: ''
salt_minion_pkg_hash: ''
Expand Down
2 changes: 2 additions & 0 deletions test/integration/default/controls/pkgs_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
%w[py38-salt]
when 'windows'
['Salt Minion']
when 'mac_os_x'
%w[salt saltstack]
else
%w[salt-master salt-minion]
end
Expand Down
8 changes: 8 additions & 0 deletions test/integration/default/controls/service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@
%w[salt_master salt_minion]
when 'windows'
%w[salt-minion]
when 'darwin'
# The following is expected but isn't yet working in the GitHub Actions
# macOS runners
# %w[com.saltstack.salt.api
# com.saltstack.salt.master
# com.saltstack.salt.minion
# com.saltstack.salt.syndic]
[]
else
%w[salt-master salt-minion]
end
Expand Down
115 changes: 115 additions & 0 deletions test/integration/default/files/_mapdata/mac_os_x-10.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# yamllint disable rule:indentation rule:line-length
# Mac OS X
---
values:
formulas_settings:
checkout_orig_branch: false
git_opts:
default:
basedir: /srv/formulas
baseurl: https://github.com/saltstack-formulas
options:
output_loglevel: quiet
rev: master
update: false
list: {}
salt_settings:
api_service: salt-api
api_service_details:
enabled: true
state: running
clean_config_d_dir: true
cloud:
template_sources:
maps: salt://salt/files/cloud.maps.d
profiles: salt://salt/files/cloud.profiles.d
providers: salt://salt/files/cloud.providers.d
config_path: /private/etc/salt
gitfs:
dulwich:
install_from_source: true
gitpython:
install_from_source: false
pygit2:
git:
install_from_package: git
require_state: false
install_from_source: true
libgit2:
build_parent_dir: /usr/src/
download_hash: 683d1164e361e2a0a8d52652840e2340
install_from_source: true
version: 0.23.0
version: 0.23.0
install_packages: true
master:
ext_pillar:
- cmd_yaml: cat /etc/salt/yaml
- stack:
- /path/to/stack1.cfg
- /path/to/stack2.cfg
- reclass:
inventory_base_uri: /etc/reclass
- saltclass:
- path: /srv/saltclass
file_roots:
base:
- /srv/salt
fileserver_backend:
- rootfs
gitfs_provider: gitpython
pillar_roots:
base:
- /srv/pillar
master_config_use_TOFS: false
master_remove_config: false
master_service: com.saltstack.salt.master
master_service_details:
enabled: true
state: running
minion:
file_roots:
base:
- /srv/salt
fileserver_backend:
- rootfs
master: localhost
master_type: str
pillar_roots:
base:
- /srv/pillar
minion_config_use_TOFS: false
minion_remove_config: false
minion_service: com.saltstack.salt.minion
minion_service_details:
enabled: true
state: running
parallel: true
pin_version: false
pkgrepo: ''
py_ver: py3
python_dulwich: python-dulwich
python_git: python-git
release: '3004'
restart_via_at: false
retry_options:
attempts: 5
interval: 10
splay: 10
until: true
rootgroup: staff
rootuser: runner
salt_api: salt-api
salt_cloud: salt-cloud
salt_master: saltstack
salt_master_macos_plist_hash: 8435331b2d48ca8f0759f216e5b15ec9171a4216b1441328c732c6906728b7c9
salt_minion: salt
salt_minion_macos_plist_hash: 26b33da12e0d8960ee96b488c8352002c22a377c19bf3df3f986a1e49eca8b20
salt_minion_pkg_hash: ''
salt_minion_pkg_source: ''
salt_ssh: salt-ssh
salt_syndic: salt-syndic
ssh_roster: {}
syndic_service: salt-syndic
use_pip: false
version: ''
Loading

0 comments on commit 0175f54

Please sign in to comment.