Every #155
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: Continuous Integration | |
on: | |
pull_request: | |
push: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
env: | |
RUBY_VERSION: 3.1.3 | |
GITHUB_TOKEN: ${{ github.token }} | |
BUNDLE_LOCKFILE: active | |
jobs: | |
rubocop: | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ env.RUBY_VERSION }} | |
bundler-cache: true | |
- name: RuboCop | |
run: bin/rubocop | |
cucumber-lint: | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ env.RUBY_VERSION }} | |
bundler-cache: true | |
- name: Cucumber Lint | |
run: bin/cuke_linter -p features/ | |
markdown-lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Run markdownlint-cli | |
uses: nosborn/[email protected] | |
with: | |
files: . | |
config_file: .markdownlint.yaml | |
yard-coverage: | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ env.RUBY_VERSION }} | |
bundler-cache: true | |
- name: Yard Coverage | |
run: | | |
bin/yardoc -c --no-cache --private --fail-on-warning | |
bin/yard stats -c --list-undoc | |
(bin/yard stats -c | grep "100.00% documented") | |
bin/validate_yard_links | |
openhab-matrix: | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
outputs: | |
openhab_matrix: | | |
["3.4.5", "4.0.4", "4.1.1", "4.2.0.RC1", "4.2.0-SNAPSHOT"] | |
snapshot_date: | | |
${{ steps.snapshot-date.outputs.SNAPSHOT_DATE }} | |
steps: | |
- name: Calculate Date for Cache Key | |
id: snapshot-date | |
run: | | |
echo SNAPSHOT_DATE=$(date -u +-%Y%m%d) >> $GITHUB_OUTPUT | |
openhab-setup: | |
needs: openhab-matrix | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
strategy: | |
matrix: | |
openhab_version: ${{ fromJson(needs.openhab-matrix.outputs.openhab_matrix) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache openHAB setup | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
path: tmp/ | |
key: openHAB-setup-${{ matrix.openhab_version }}${{ endsWith(matrix.openhab_version, 'SNAPSHOT') && needs.openhab-matrix.outputs.snapshot_date || '' }} | |
- uses: ruby/setup-ruby@v1 | |
if: steps.cache.outputs.cache-hit != 'true' | |
with: | |
ruby-version: ${{ env.RUBY_VERSION }} | |
bundler-cache: true | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: ${{ startsWith(matrix.openhab_version, '4.') && '17' || '11' }} | |
java-package: jre | |
- name: Setup openHAB | |
if: steps.cache.outputs.cache-hit != 'true' | |
env: | |
OPENHAB_VERSION: ${{ matrix.openhab_version }} | |
run: bin/rake openhab:setup | |
- name: Upload openHAB Logs | |
uses: actions/upload-artifact@v4 | |
if: steps.cache.outputs.cache-hit != 'true' && failure() | |
with: | |
name: openHAB-setup-logs-${{ matrix.openhab_version }} | |
path: | | |
tmp/openhab/userdata/logs | |
tmp/karaf.log | |
retention-days: 2 | |
rspec: | |
needs: [openhab-matrix, openhab-setup] | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
strategy: | |
matrix: | |
openhab_version: ${{ fromJson(needs.openhab-matrix.outputs.openhab_matrix) }} | |
jruby_version: ["jruby-9.3.10.0", "jruby-9.4.8.0"] | |
exclude: | |
- openhab_version: 4.0.4 | |
jruby_version: jruby-9.3.10.0 | |
- openhab_version: 4.1.1 | |
jruby_version: jruby-9.3.10.0 | |
- openhab_version: 4.2.0-SNAPSHOT | |
jruby_version: jruby-9.3.10.0 | |
- openhab_version: 4.2.0.RC1 | |
jruby_version: jruby-9.3.10.0 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ matrix.jruby_version }} | |
bundler-cache: true | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: ${{ startsWith(matrix.openhab_version, '4.') && '17' || '11' }} | |
java-package: jre | |
- name: Restore openHAB setup | |
uses: actions/cache@v4 | |
with: | |
path: tmp/ | |
key: openHAB-setup-${{ matrix.openhab_version }}${{ endsWith(matrix.openhab_version, 'SNAPSHOT') && needs.openhab-matrix.outputs.snapshot_date || '' }} | |
- name: RSpec | |
run: bin/rspec --format progress --format html --out rspec.html | |
timeout-minutes: 6 | |
- name: Upload openHAB Logs | |
uses: actions/upload-artifact@v4 | |
if: failure() | |
with: | |
name: RSpec-logs-${{ matrix.openhab_version }}-${{ matrix.jruby_version }} | |
path: tmp/openhab/userdata/logs | |
retention-days: 2 | |
- name: Upload RSpec results | |
uses: actions/upload-artifact@v4 | |
if: success() || failure() | |
with: | |
name: RSpec-results-openHAB-${{ matrix.openhab_version }}-jruby-${{ matrix.jruby_version }} | |
path: rspec.html | |
cucumber: | |
needs: [openhab-matrix, openhab-setup] | |
runs-on: ubuntu-latest | |
if: "!contains(github.event.head_commit.message, 'ci skip')" | |
strategy: | |
matrix: | |
openhab_version: ${{ fromJson(needs.openhab-matrix.outputs.openhab_matrix) }} | |
exclude: | |
- openhab_version: 3.4.5 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: ${{ env.RUBY_VERSION }} | |
bundler-cache: true | |
rubygems: 3.4.22 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: zulu | |
java-version: ${{ startsWith(matrix.openhab_version, '4.') && '17' || '11' }} | |
java-package: jre | |
- name: Restore openHAB setup | |
uses: actions/cache@v4 | |
with: | |
path: tmp/ | |
key: openHAB-setup-${{ matrix.openhab_version }}${{ endsWith(matrix.openhab_version, 'SNAPSHOT') && needs.openhab-matrix.outputs.snapshot_date || '' }} | |
- name: Cucumber | |
run: bin/rake features | |
timeout-minutes: 4 | |
- name: Upload openHAB Logs | |
uses: actions/upload-artifact@v4 | |
if: success() || failure() | |
with: | |
name: Cucumber-logs-openHAB-${{ matrix.openhab_version }} | |
path: | | |
tmp/openhab/userdata/logs | |
tmp/karaf.log | |
retention-days: 2 |