parameters: name: ~ displayName: ~ rubyVersion: bundled imageName: ubuntu-18.04 publishCoverage: false with_mini_racer: false with_therubyracer: false jobs: - job: ${{ parameters.name }} displayName: ${{ parameters.displayName }} pool: vmImage: ${{ parameters.imageName }} variables: TESTOPTS: -v ${{ if eq(parameters.publishCoverage, true) }}: CPPFLAGS: --coverage LDFLAGS: --coverage ${{ if eq(parameters.rubyVersion, 'bundled') }}: gem: gem bundle: bundle ${{ if ne(parameters.rubyVersion, 'bundled') }}: gem: /opt/ruby/${{ parameters.rubyVersion }}/bin/gem bundle: /opt/ruby/${{ parameters.rubyVersion }}/bin/bundle GEM_HOME: /opt/ruby/${{ parameters.rubyVersion }}/lib/ruby/gems/${{ parameters.rubyVersion }}.0 steps: - checkout: self displayName: Checkout clean: true submodules: recursive - ${{ if ne(parameters.rubyVersion, 'bundled') }}: - script: | sudo apt-get install -y gnupg sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 5D98E7264E3F3D89463B314B12229434A9F003C9 echo deb [arch=amd64] http://sqreen-download-private.s3.amazonaws.com/deb bionic main | sudo tee -a /etc/apt/sources.list sudo apt-get update sudo apt-get install -y sq-ruby${{ parameters.rubyVersion }} ruby- displayName: Install Ruby - ${{ if eq(parameters.rubyVersion, 'bundled') }}: - script: sudo $(gem) install bundler --version '< 2.0' --no-document displayName: Install bundler - ${{ if eq(parameters.imageName, 'ubuntu-18.04') }}: - script: | sudo apt-get install -y build-essential git curl valgrind g++ make displayName: Install Linux packages - script: $(bundle) install --path vendor/bundle displayName: Install gem dependencies env: ${{ if eq(parameters.with_mini_racer, true) }}: LOAD_MINI_RACER: 1 ${{ if eq(parameters.with_therubyracer, true) }}: LOAD_THERUBYRACER: 1 - script: PATH=`dirname $(bundle)`:$PATH CPPFLAGS=$(CPPFLAGS) LDFLAGS=$(LDFLAGS) $(bundle) exec rake compile displayName: Compile extension - script: | find . -name '*.log' -exec cat '{}' \; displayName: Print logs condition: failed() - script: $(bundle) exec rake test displayName: Run tests env: ${{ if eq(parameters.with_mini_racer, true) }}: LOAD_MINI_RACER: 1 ${{ if eq(parameters.with_therubyracer, true) }}: LOAD_THERUBYRACER: 1 - ${{ if and(eq(parameters.imageName, 'ubuntu-18.04'), eq(parameters.with_mini_racer, false), eq(parameters.with_therubyracer, false)) }}: - script: $(bundle) exec rake test:valgrind displayName: Run tests w/ valgrind - script: | PATH=$PATH:$(dirname $(which $(gem))) $(bundle) exec rake build sudo PATH=$PATH $(gem) install pkg/*.gem displayName: Check that the gem is installable - ${{ if eq(parameters.publishCoverage, true) }}: - bash: > test -z "$CODECOV_TOKEN" || bash <(curl -s https://codecov.io/bash) displayName: "Publish coverage (Codecov)" env: CODECOV_TOKEN: $(CODECOV_TOKEN)