|  | 
|  | 1 | +--- | 
|  | 2 | +name: CI Oracle | 
|  | 3 | + | 
|  | 4 | +on: | 
|  | 5 | +  push: | 
|  | 6 | +    branches: | 
|  | 7 | +      - '**' | 
|  | 8 | +  pull_request: | 
|  | 9 | +    branches: | 
|  | 10 | +      - '**' | 
|  | 11 | +  schedule: | 
|  | 12 | +    - cron: '0 4 1 * *' | 
|  | 13 | +  # Run workflow manually | 
|  | 14 | +  workflow_dispatch: | 
|  | 15 | + | 
|  | 16 | +jobs: | 
|  | 17 | +  rspec: | 
|  | 18 | +    runs-on: ubuntu-latest | 
|  | 19 | + | 
|  | 20 | +    env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps | 
|  | 21 | +      BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.rails }}_with_${{ matrix.adapter }}.gemfile | 
|  | 22 | +      ORACLE_HOME: /opt/oracle/instantclient_23_8 | 
|  | 23 | +      LD_LIBRARY_PATH: /opt/oracle/instantclient_23_8 | 
|  | 24 | + | 
|  | 25 | +    services: | 
|  | 26 | +      oracle: | 
|  | 27 | +        image: gvenzl/oracle-free:latest | 
|  | 28 | +        ports: | 
|  | 29 | +          - 1521:1521 | 
|  | 30 | +        env: | 
|  | 31 | +          TZ: Europe/Paris | 
|  | 32 | +          ORACLE_PASSWORD: Oracle18 | 
|  | 33 | +        options: >- | 
|  | 34 | +          --health-cmd healthcheck.sh | 
|  | 35 | +          --health-interval 10s | 
|  | 36 | +          --health-timeout 5s | 
|  | 37 | +          --health-retries 10 | 
|  | 38 | +
 | 
|  | 39 | +    strategy: | 
|  | 40 | +      fail-fast: false | 
|  | 41 | +      matrix: | 
|  | 42 | +        ruby: | 
|  | 43 | +          - '3.4' | 
|  | 44 | +          # - '3.3' | 
|  | 45 | +          # - '3.2' | 
|  | 46 | +          # - '3.1' | 
|  | 47 | +          # - 'head' | 
|  | 48 | +        rails: | 
|  | 49 | +          - rails_8.0 | 
|  | 50 | +          # - rails_7.2 | 
|  | 51 | +          # - rails_7.1 | 
|  | 52 | +        adapter: | 
|  | 53 | +          - oracle_enhanced | 
|  | 54 | +        # exclude: | 
|  | 55 | +        #   # Disabled for now because of build error: | 
|  | 56 | +        #   #  /opt/hostedtoolcache/Ruby/3.0.7/x64/lib/ruby/3.0.0/psych.rb:457:in | 
|  | 57 | +        #   # `parse_stream': undefined method `parse' for #<Psych::Parser:0x000055b6cc7b6898 | 
|  | 58 | +        #   # @handler=#<Psych::Handlers::DocumentStream:0x000055b6cc7b69b0 @stack=[], | 
|  | 59 | +        #   # @last=nil, @root=nil, @start_line=nil, @start_column=nil, @end_line=nil, | 
|  | 60 | +        #   # @end_column=nil, @block=#<Proc:0x000055b6cc7b68e8 | 
|  | 61 | +        #   # /opt/hostedtoolcache/Ruby/3.0.7/x64/lib/ruby/3.0.0/psych.rb:391>>, | 
|  | 62 | +        #   # @external_encoding=0> (NoMethodError) | 
|  | 63 | +        #   # from | 
|  | 64 | +        #   # /home/runner/work/ajax-datatables-rails/ajax-datatables-rails/vendor/bundle/ruby/3.0.0/gems/ruby-oci8-2.2.14/ext/oci8/apiwrap.rb:64:in | 
|  | 65 | +        #   # `create_apiwrap' | 
|  | 66 | +        #   - rails: 'rails_7.2' | 
|  | 67 | +        #     adapter: 'oracle_enhanced' | 
|  | 68 | + | 
|  | 69 | +    steps: | 
|  | 70 | +      - name: Checkout | 
|  | 71 | +        uses: actions/checkout@v4 | 
|  | 72 | + | 
|  | 73 | +      - name: Create symbolic link for libaio library compatibility | 
|  | 74 | +        run: | | 
|  | 75 | +          sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 | 
|  | 76 | +
 | 
|  | 77 | +      - name: Download Oracle instant client | 
|  | 78 | +        run: | | 
|  | 79 | +          wget -q https://download.oracle.com/otn_software/linux/instantclient/2380000/instantclient-basic-linux.x64-23.8.0.25.04.zip | 
|  | 80 | +          wget -q https://download.oracle.com/otn_software/linux/instantclient/2380000/instantclient-sdk-linux.x64-23.8.0.25.04.zip | 
|  | 81 | +          wget -q https://download.oracle.com/otn_software/linux/instantclient/2380000/instantclient-sqlplus-linux.x64-23.8.0.25.04.zip | 
|  | 82 | +      - name: Install Oracle instant client | 
|  | 83 | +        run: | | 
|  | 84 | +          sudo unzip instantclient-basic-linux.x64-23.8.0.25.04.zip -d /opt/oracle/ | 
|  | 85 | +          sudo unzip -o instantclient-sdk-linux.x64-23.8.0.25.04.zip -d /opt/oracle/ | 
|  | 86 | +          sudo unzip -o instantclient-sqlplus-linux.x64-23.8.0.25.04.zip -d /opt/oracle/ | 
|  | 87 | +          echo "/opt/oracle/instantclient_23_8" >> $GITHUB_PATH | 
|  | 88 | +
 | 
|  | 89 | +      - name: Setup Ruby | 
|  | 90 | +        uses: ruby/setup-ruby@v1 | 
|  | 91 | +        with: | 
|  | 92 | +          ruby-version: ${{ matrix.ruby }} | 
|  | 93 | +          bundler-cache: true | 
|  | 94 | +        env: | 
|  | 95 | +          DB_ADAPTER: ${{ matrix.adapter }} | 
|  | 96 | + | 
|  | 97 | +      - name: Run RSpec | 
|  | 98 | +        env: | 
|  | 99 | +          DB_ADAPTER: ${{ matrix.adapter }} | 
|  | 100 | +        run: bin/rspec | 
|  | 101 | + | 
|  | 102 | +      - name: Publish code coverage | 
|  | 103 | +        uses: qltysh/qlty-action/coverage@v1 | 
|  | 104 | +        with: | 
|  | 105 | +          token: ${{ secrets.QLTY_COVERAGE_TOKEN }} | 
|  | 106 | +          files: coverage/coverage.json | 
0 commit comments