Rename D-Installer to Agama #4302
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 | |
on: [push, pull_request] | |
jobs: | |
frontend_build: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./web | |
strategy: | |
matrix: | |
node-version: ["18.x"] | |
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/ | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ matrix.node-version }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ matrix.node-version }} | |
cache: 'npm' | |
cache-dependency-path: 'web/package-lock.json' | |
- name: Install dependencies | |
run: npm install | |
- name: Build the application | |
run: make | |
- name: Run check spell | |
run: npm run cspell | |
- name: Check types | |
run: npm run check-types | |
- name: Run ESLint | |
run: npm run eslint | |
- name: Run Stylelint | |
run: npm run stylelint | |
- name: Run the tests and generate coverage report | |
run: npm test -- --coverage | |
- name: Coveralls GitHub Action | |
uses: coverallsapp/github-action@v1 | |
with: | |
base-path: ./web | |
path-to-lcov: ./web/coverage/lcov.info | |
flag-name: frontend | |
parallel: true | |
- name: Build JSDoc Documentation | |
run: npm run jsdoc | |
- name: Publish JSDoc Documentation | |
if: ${{ github.ref == 'refs/heads/master' }} | |
run: npx surge jsdoc.out/ ${{ secrets.SURGE_DOMAIN }} --token ${{ secrets.SURGE_TOKEN }} | |
backend_tests: | |
runs-on: ubuntu-latest | |
env: | |
COVERAGE: 1 | |
defaults: | |
run: | |
working-directory: ./service | |
strategy: | |
fail-fast: false | |
matrix: | |
distro: [ "tumbleweed" ] | |
container: | |
image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby | |
steps: | |
- name: Git Checkout | |
uses: actions/checkout@v3 | |
- name: Configure and refresh repositories | |
# disable unused repositories to have faster refresh | |
run: zypper modifyrepo -d repo-non-oss repo-openh264 repo-update && ( zypper ref || zypper ref || zypper ref ) | |
- name: Install Ruby development files | |
run: zypper --non-interactive install gcc gcc-c++ make openssl-devel ruby-devel npm augeas-devel | |
- name: Install required packages | |
run: zypper --non-interactive install yast2-iscsi-client | |
- name: Install RubyGems dependencies | |
run: bundle config set --local with 'development' && bundle install | |
- name: Run the tests and generate coverage report | |
run: bundle exec rspec | |
- name: Coveralls GitHub Action | |
uses: coverallsapp/github-action@v1 | |
with: | |
base-path: ./service | |
path-to-lcov: ./service/coverage/lcov.info | |
flag-name: backend | |
parallel: true | |
backend_linter: | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./service | |
strategy: | |
fail-fast: false | |
matrix: | |
distro: [ "leap_latest" ] | |
container: | |
image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby | |
steps: | |
- name: Git Checkout | |
uses: actions/checkout@v3 | |
- name: Rubocop | |
run: /usr/bin/rubocop.*-1.24.1 | |
backend_doc: | |
runs-on: ubuntu-latest | |
env: | |
COVERAGE: 1 | |
defaults: | |
run: | |
working-directory: ./service | |
strategy: | |
fail-fast: false | |
matrix: | |
distro: [ "tumbleweed" ] | |
container: | |
image: registry.opensuse.org/yast/head/containers_${{matrix.distro}}/yast-ruby | |
steps: | |
- name: Git Checkout | |
uses: actions/checkout@v3 | |
- name: Configure and refresh repositories | |
# disable unused repositories to have faster refresh | |
run: zypper modifyrepo -d repo-non-oss repo-openh264 repo-update && ( zypper ref || zypper ref || zypper ref ) | |
- name: Install Ruby development files | |
run: zypper --non-interactive install gcc gcc-c++ make openssl-devel ruby-devel npm augeas-devel | |
- name: Install RubyGems dependencies | |
run: bundle config set --local with 'development' && bundle install | |
- name: Generate doc | |
run: bundle exec yardoc --fail-on-warning | |
integration-tests: | |
timeout-minutes: 60 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
# TW is needed because of the Cockpit packages | |
distro: [ "tumbleweed" ] | |
steps: | |
# TODO: Reuse/share building the frontend and backend with the other steps | |
# TODO: Cache the Ruby gems and node packages | |
- name: Git Checkout | |
uses: actions/checkout@v3 | |
- name: Created shared yast log distro | |
run: mkdir -p /tmp/log/YaST2 | |
- name: start container | |
run: podman run --privileged --detach --name dinstaller --ipc=host -v .:/checkout -v /tmp/log/YaST2:/var/log/YaST2 registry.opensuse.org/yast/head/containers/containers_tumbleweed/opensuse/dinstaller-testing:latest | |
- name: Install Ruby gems | |
run: podman exec dinstaller bash -c "cd /checkout/service && bundle config set --local path 'vendor/bundle' && bundle install" | |
- name: Install the D-Installer D-Bus configuration | |
run: podman exec dinstaller bash -c "cp /checkout/service/share/dbus.conf /usr/share/dbus-1/system.d/org.opensuse.DInstaller.conf" | |
- name: Set a testing D-Installer configuration | |
# copy a simplified ALP config file, it skips the product selection at the beginning | |
run: podman exec dinstaller bash -c "cp /checkout/playwright/config/d-installer.yaml /checkout/service/etc/d-installer.yaml" | |
- name: Start NetworkManager | |
# We need to run it manually as systemd dbus activation looks like failing | |
run: podman exec dinstaller /usr/sbin/NetworkManager | |
- name: Reload the D-Bus service | |
run: podman exec dinstaller systemctl reload dbus | |
- name: Start the D-Installer D-Bus services | |
# TODO: here is a potential race condition, but as building the frontend | |
# and installing Playwright takes quite long time it should never happen™ | |
run: podman exec dinstaller bash -c "cd /checkout/service && (bundle exec bin/d-installer > service.log 2>&1 &)" | |
- name: Build the frontend | |
run: podman exec dinstaller bash -c "cd /checkout/web && npm install && make" | |
- name: Show the D-Bus services log | |
run: podman exec dinstaller cat /checkout/service/service.log | |
- name: Check DBus socket | |
run: podman exec dinstaller ls -l /var/run/dbus/system_bus_socket | |
- name: show journal | |
run: podman exec dinstaller journalctl -b || echo "journal failed with $?" | |
- name: Install the frontend | |
run: podman exec dinstaller bash -c "ln -snfv /checkout/web/dist /usr/share/cockpit/d-installer" | |
- name: Start Cockpit service | |
run: podman exec --detach dinstaller /usr/libexec/cockpit-ws --local-session=/usr/bin/cockpit-bridge | |
- name: Install Playwright | |
run: podman exec dinstaller bash -c "cd /checkout/playwright && npm install && npx playwright --version" | |
- name: Install Playwright browsers | |
# TODO: it downloads Chromium, Firefox and Webkit from a special repository | |
# it would be nice to use the system browsers | |
run: podman exec dinstaller bash -c "cd /checkout/playwright && npx playwright install" | |
- name: Run the D-Installer smoke test | |
run: podman exec dinstaller curl http://localhost:9090/cockpit/@localhost/d-installer/index.html | |
- name: Run the Playwright tests | |
# user authentication is not required when cockpit runs a local session | |
run: podman exec dinstaller bash -c "cd /checkout/playwright && SKIP_LOGIN=true npx playwright test --trace on" | |
- name: Upload the test results | |
uses: actions/upload-artifact@v3 | |
# run even when the previous step fails | |
if: always() | |
with: | |
name: test-results | |
retention-days: 30 | |
path: | | |
playwright/test-results/**/* | |
/tmp/log/YaST2/y2log | |
finish: | |
runs-on: ubuntu-latest | |
needs: [frontend_build, backend_tests] | |
steps: | |
- name: Coveralls Finished | |
uses: coverallsapp/github-action@v1 | |
with: | |
parallel-finished: true |