Add a macos CI as well as a homebrew formula #13
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | macOS | |
on: | |
push: | |
paths-ignore: | |
- '*.md' | |
- 'doc/**' | |
- 'docker-k8s/**' | |
- 'windows/**' | |
pull_request: | |
paths-ignore: | |
- '*.md' | |
- 'doc/**' | |
- 'docker-k8s/**' | |
- 'windows/**' | |
jobs: | |
ci: | |
name: CI | macOS with homebrew | |
runs-on: macos-latest | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
with: # For scripts/get-version: | |
fetch-depth: 0 | |
- name: Install dependencies | |
env: | |
HOMEBREW_NO_AUTO_UPDATE: 1 | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 | |
run: | | |
brew update | |
brew install \ | |
erlang \ | |
openssl \ | |
libyaml \ | |
rebar3 | |
- name: Cache Rebar data | |
uses: actions/cache@v3 | |
with: | |
path: ~/.cache/rebar3 | |
key: ${{ runner.os }}-${{ hashFiles('rebar.config') }} | |
# Until https://github.com/erlware/relx/issues/905 is fixed: | |
- name: Create Erlang cookie | |
run: erl -noinput -sname cookie -eval 'halt()' | |
- name: Download dependencies | |
run: rebar3 get-deps | |
- name: Compile code | |
env: | |
LDFLAGS: -L/usr/local/opt/openssl/lib -L/usr/local/lib | |
CFLAGS: -I/usr/local/opt/openssl/include/ -I/usr/local/include | |
CPPFLAGS: -I/usr/local/opt/openssl/include/ -I/usr/local/include | |
run: rebar3 compile | |
- name: Build release | |
run: rebar3 release | |
- name: Start release | |
run: _build/default/rel/eturnal/bin/eturnal daemon | |
- name: Ping release | |
run: _build/default/rel/eturnal/bin/eturnal ping | |
- name: Stop release | |
run: _build/default/rel/eturnal/bin/eturnal stop | |
- name: Analyze cross references | |
run: rebar3 xref | |
- name: Perform static code analysis | |
run: rebar3 dialyzer | |
- name: Run black-box tests (CT) | |
run: rebar3 ct || rebar3 ct | |
shell: bash | |
- name: Run white-box tests (EUnit) | |
run: rebar3 eunit | |
- name: Check test coverage | |
run: rebar3 cover | |
formula: | |
name: On ${{ matrix.os }} | install & test ${{ matrix.vsn }} Formula | |
runs-on: ${{ matrix.os }}-latest | |
strategy: | |
matrix: | |
os: [macos, ubuntu] | |
vsn: [head, stable] | |
fail-fast: false | |
steps: | |
- name: Check out repository code | |
uses: actions/checkout@v3 | |
- name: Set up Homebrew | |
id: set-up-homebrew | |
uses: Homebrew/actions/setup-homebrew@master | |
- name: Cache Homebrew Bundler RubyGems | |
id: cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.set-up-homebrew.outputs.gems-path }} | |
key: ${{ runner.os }}-rubygems-${{ steps.set-up-homebrew.outputs.gems-hash }} | |
restore-keys: ${{ runner.os }}-rubygems- | |
- name: Install Homebrew Bundler RubyGems | |
if: steps.cache.outputs.cache-hit != 'true' | |
run: brew install-bundler-gems | |
- name: Install eturnal with homebrew formula | |
env: | |
HOMEBREW_NO_AUTO_UPDATE: 1 | |
HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: 1 | |
run: | | |
if [ ${{ matrix.vsn }} = 'head' ]; then export vsn='--head'; fi | |
# Download eturnal.rb instead of `brew tap` to avoid failures when | |
# running on branches or pull requests -> requires actions/checkout | |
curl -O https://raw.githubusercontent.com/${{ github.repository }}/$(git rev-parse HEAD)/Formula/eturnal.rb | |
brew install --build-from-source ${vsn:-} --verbose ./eturnal.rb | |
- name: Homebrew autoremove unused packages | |
if: matrix.os != 'ubuntu' | |
run: | | |
brew uninstall erlang rebar3 | |
brew autoremove | |
- name: Set erlang cookie, because we build from HEAD | |
if: matrix.vsn == 'head' | |
run: echo "-setcookie eturnal" >> $(find $(brew --prefix)/Cellar/eturnal -name vm.args) | |
- name: Run eturnal Formula test | |
run: brew test --verbose eturnal | |
- name: Start eturnal service | |
run: brew services start eturnal | |
- name: Wait shortly | |
run: sleep 10 | |
- name: Create test credentials | |
run: $(brew --prefix)/opt/eturnal/bin/eturnalctl credentials | |
- name: Test eturnalctl on $PATH | |
run: eturnalctl info | |
- name: Stop eturnal service | |
run: brew services stop eturnal | |
- name: Lint formula | |
## we know, it fails due to non-executables in the /bin directory, but | |
## we want to see if anything else needs further investigation | |
continue-on-error: true | |
run: brew audit --strict eturnal | |