--- name: CI on: - push - pull_request jobs: rspec: runs-on: ubuntu-20.04 env: ORACLE_COOKIE: sqldev ORACLE_FILE: oracle11g/xe/oracle-xe-11.2.0-1.0.x86_64.rpm.zip ORACLE_HOME: /u01/app/oracle/product/11.2.0/xe ORACLE_SID: XE services: postgres: image: 'postgres:13' ports: ['5432:5432'] env: POSTGRES_PASSWORD: postgres POSTGRES_DB: ajax_datatables_rails options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 # Using docker image fails with # invalid reference format # mariadb: # image: 'mariadb:10.3' # ports: ['3306:3306'] # env: # MYSQL_ROOT_PASSWORD: root # MYSQL_DATABASE: ajax_datatables_rails # options: >- # --health-cmd 'mysqladmin ping' # --health-interval 10s # --health-timeout 5s # --health-retries 3 strategy: fail-fast: false matrix: ruby: - '3.0' - '2.7' - '2.6' - '2.5' rails: - rails_5.2.4 - rails_6.0.3 - rails_6.1.0 adapter: - sqlite3 - postgresql - mysql2 - oracle_enhanced exclude: - ruby: '3.0' rails: rails_5.2.4 steps: - name: Checkout uses: actions/checkout@v2 - name: Setup Ruby uses: ruby/setup-ruby@v1 with: ruby-version: ${{ matrix.ruby }} - name: Set DB Adapter env: RAILS_VERSION: ${{ matrix.rails }} DB_ADAPTER: ${{ matrix.adapter }} CUSTOM_ORACLE_FILE: ${{ secrets.CUSTOM_ORACLE_FILE }} # See: https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-README.md#mysql run: | if [ "${DB_ADAPTER}" = "mysql2" ]; then sudo systemctl start mysql.service mysql -u root -proot -e 'create database ajax_datatables_rails;' fi if [ "${DB_ADAPTER}" = "oracle_enhanced" ]; then ./spec/install_oracle.sh # Fix error : libnnz11.so: cannot open shared object file: No such file or directory sudo ln -s ${ORACLE_HOME}/lib/libnnz11.so /usr/lib/libnnz11.so fi - name: Setup Ruby cache uses: actions/cache@v2 with: path: vendor/bundle key: ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.rails }}-${{ matrix.adapter }}-${{ hashFiles('**/Gemfile.lock') }} restore-keys: | ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.rails }}-${{ matrix.adapter }}- - name: Bundle env: RAILS_VERSION: ${{ matrix.rails }} DB_ADAPTER: ${{ matrix.adapter }} BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile run: | gem install bundler bundle config path vendor/bundle bundle install --jobs 4 --retry 3 - name: RSpec & publish code coverage uses: paambaati/codeclimate-action@v2.7.5 env: RAILS_VERSION: ${{ matrix.rails }} DB_ADAPTER: ${{ matrix.adapter }} BUNDLE_GEMFILE: gemfiles/${{ matrix.rails }}.gemfile CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} with: coverageCommand: bin/rake