mumuki/mumuki-laboratory

View on GitHub
.github/workflows/test_and_deploy.yml

Summary

Maintainability
Test Coverage
name: Test and deploy

on:
- push
- workflow_dispatch

jobs:
  test:
    env:
      RACK_ENV: test
      RAILS_ENV: test
    runs-on: ubuntu-latest
    services:
      postgres:
        ports:
        - 5432:5432
        image: postgres:10.15
        env:
          POSTGRES_DB: mumuki_test
          POSTGRES_USER: mumuki
          POSTGRES_PASSWORD: mumuki
    steps:
    - uses: actions/checkout@v2
    - name: Set up Ruby
      uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
      with:
        ruby-version: 2.6.3
        bundler: 2.1.4
        bundler-cache: true
    - name: Load schema
      run: bundle exec rake db:schema:load
    - name: Setup hosts
      run: |
        echo '

          127.0.0.1 test.localmumuki.io
        ' | sudo tee -a /etc/hosts
    - name: Setup Xvfb
      run: Xvfb :99 &
    - name: Run tests
      run: bundle exec rake
      env:
        DISPLAY: :99

  test-firefox:
    env:
      MUMUKI_SELENIUM_DRIVER: firefox
      RACK_ENV: test
      RAILS_ENV: test
    runs-on: ubuntu-latest
    services:
      postgres:
        ports:
        - 5432:5432
        image: postgres:10.15
        env:
          POSTGRES_DB: mumuki_test
          POSTGRES_USER: mumuki
          POSTGRES_PASSWORD: mumuki
    steps:
    - uses: actions/checkout@v2
    - name: Set up Ruby
      uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
      with:
        ruby-version: 2.6.3
        bundler: 2.1.4
        bundler-cache: true
    - name: Setup Firefox
      run: |
        wget --no-verbose -O /tmp/firefox-79.0.tar.bz2 'https://download.mozilla.org/?product=firefox-79.0&lang=en-US&os=linux64'
        tar xjf /tmp/firefox-79.0.tar.bz2 -C /opt/
        sudo ln -sf /opt/firefox/firefox /usr/lib/firefox/firefox
    - name: Load schema
      run: bundle exec rake db:schema:load
    - name: Setup hosts
      run: |
        echo '

          127.0.0.1 localmumuki.io
          127.0.0.1 base.localmumuki.io
          127.0.0.1 central.localmumuki.io
          127.0.0.1 empty.localmumuki.io
          127.0.0.1 foo.localmumuki.io
          127.0.0.1 immersive-orga.localmumuki.io
          127.0.0.1 private.localmumuki.io
          127.0.0.1 someorga.localmumuki.io
          127.0.0.1 test.localmumuki.io
          127.0.0.1 the-public-org.localmumuki.io
        ' | sudo tee -a /etc/hosts
    - name: Setup Xvfb
      run: Xvfb :99 &
    - name: Run web tests
      run: bundle exec rake spec:web
      env:
        DISPLAY: :99

  test-chrome:
    env:
      MUMUKI_SELENIUM_DRIVER: chrome
      RACK_ENV: test
      RAILS_ENV: test
    runs-on: ubuntu-latest
    services:
      postgres:
        ports:
        - 5432:5432
        image: postgres:10.15
        env:
          POSTGRES_DB: mumuki_test
          POSTGRES_USER: mumuki
          POSTGRES_PASSWORD: mumuki
    steps:
    - uses: actions/checkout@v2
    - name: Set up Ruby
      uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
      with:
        ruby-version: 2.6.3
        bundler: 2.1.4
        bundler-cache: true
    - name: Load schema
      run: bundle exec rake db:schema:load
    - name: Setup hosts
      run: |
        echo '

          127.0.0.1 localmumuki.io
          127.0.0.1 base.localmumuki.io
          127.0.0.1 central.localmumuki.io
          127.0.0.1 empty.localmumuki.io
          127.0.0.1 foo.localmumuki.io
          127.0.0.1 immersive-orga.localmumuki.io
          127.0.0.1 private.localmumuki.io
          127.0.0.1 someorga.localmumuki.io
          127.0.0.1 test.localmumuki.io
          127.0.0.1 the-public-org.localmumuki.io
        ' | sudo tee -a /etc/hosts
    - name: Setup Xvfb
      run: Xvfb :99 &
    - name: Run web tests
      run: bundle exec rake spec:web
      env:
        DISPLAY: :99

  deploy:
    if: ${{ startsWith(github.ref, 'refs/tags/v') }}
    needs:
    - test
    - test-firefox
    - test-chrome
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Deploy
      if: ${{ startsWith(github.ref, 'refs/tags/v') }}
      run: |
        mkdir -p $HOME/.gem
        touch $HOME/.gem/credentials
        chmod 0600 $HOME/.gem/credentials
        printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
        gem build *.gemspec
        gem push *.gem
      env:
        GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"