appoptics_apm 4.12.2 → 4.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build_and_release_gem.yml +103 -0
- data/.github/workflows/build_for_packagecloud.yml +70 -0
- data/.github/workflows/docker-images.yml +47 -0
- data/.github/workflows/run_cpluplus_tests.yml +73 -0
- data/.github/workflows/run_tests.yml +168 -0
- data/.github/workflows/scripts/test_install.rb +23 -0
- data/.github/workflows/swig/swig-v4.0.2.tar.gz +0 -0
- data/.github/workflows/test_on_4_linux.yml +159 -0
- data/.gitignore +17 -25
- data/.travis.yml +17 -14
- data/Gemfile +1 -25
- data/README.md +4 -6
- data/appoptics_apm.gemspec +11 -5
- data/examples/prepend.rb +13 -0
- data/examples/sdk_examples.rb +16 -0
- data/ext/oboe_metal/extconf.rb +25 -31
- data/ext/oboe_metal/lib/liboboe-1.0-alpine-x86_64.so.0.0.0.sha256 +1 -0
- data/ext/oboe_metal/lib/liboboe-1.0-x86_64.so.0.0.0.sha256 +1 -0
- data/ext/oboe_metal/src/README.md +6 -0
- data/ext/oboe_metal/src/VERSION +2 -1
- data/ext/oboe_metal/src/frames.cc +246 -0
- data/ext/oboe_metal/src/frames.h +40 -0
- data/ext/oboe_metal/src/init_appoptics_apm.cc +5 -4
- data/ext/oboe_metal/src/logging.cc +95 -0
- data/ext/oboe_metal/src/logging.h +35 -0
- data/ext/oboe_metal/src/oboe.h +8 -5
- data/ext/oboe_metal/src/oboe_api.cpp +40 -14
- data/ext/oboe_metal/src/oboe_api.hpp +29 -8
- data/ext/oboe_metal/src/oboe_debug.h +1 -0
- data/ext/oboe_metal/src/oboe_swig_wrap.cc +85 -21
- data/ext/oboe_metal/src/profiling.cc +435 -0
- data/ext/oboe_metal/src/profiling.h +78 -0
- data/ext/oboe_metal/test/CMakeLists.txt +53 -0
- data/ext/oboe_metal/test/FindGMock.cmake +43 -0
- data/ext/oboe_metal/test/README.md +56 -0
- data/ext/oboe_metal/test/frames_test.cc +164 -0
- data/ext/oboe_metal/test/profiling_test.cc +93 -0
- data/ext/oboe_metal/test/ruby_inc_dir.rb +8 -0
- data/ext/oboe_metal/test/ruby_prefix.rb +8 -0
- data/ext/oboe_metal/test/ruby_test_helper.rb +67 -0
- data/ext/oboe_metal/test/test.h +11 -0
- data/ext/oboe_metal/test/test_main.cc +32 -0
- data/lib/appoptics_apm/api/metrics.rb +3 -0
- data/lib/appoptics_apm/base.rb +1 -1
- data/lib/appoptics_apm/config.rb +11 -2
- data/lib/appoptics_apm/frameworks/rails/inst/connection_adapters/utils5x.rb +7 -1
- data/lib/appoptics_apm/inst/rack.rb +13 -6
- data/lib/appoptics_apm/inst/redis.rb +1 -2
- data/lib/appoptics_apm/noop/context.rb +3 -0
- data/lib/appoptics_apm/noop/metadata.rb +4 -1
- data/lib/appoptics_apm/noop/profiling.rb +21 -0
- data/lib/appoptics_apm/oboe_init_options.rb +26 -22
- data/lib/appoptics_apm/support/profiling.rb +18 -0
- data/lib/appoptics_apm/support/transaction_metrics.rb +1 -1
- data/lib/appoptics_apm/support/transaction_settings.rb +2 -2
- data/lib/appoptics_apm/support/x_trace_options.rb +2 -2
- data/lib/appoptics_apm/support_report.rb +2 -2
- data/lib/appoptics_apm/test.rb +4 -3
- data/lib/appoptics_apm/util.rb +1 -1
- data/lib/appoptics_apm/version.rb +3 -3
- data/lib/appoptics_apm/xtrace.rb +1 -1
- data/lib/appoptics_apm.rb +3 -1
- data/lib/oboe_metal.rb +2 -2
- data/lib/rails/generators/appoptics_apm/templates/appoptics_apm_initializer.rb +24 -0
- data/log/.keep +0 -0
- metadata +46 -16
- data/.travis/bundle.sh +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f8521d6d7683aaef83d35504c4875191ca2340bb5fea0c16ce40dd6f4704465
|
4
|
+
data.tar.gz: f134e9eea6744e5238422c5a27f75687bc5d8aadf370e2e5588814b8f8a9e3a3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6a932fb422ab7277cd04debfb8927d1ca98a74a9743055925bdd2161f8be194af9b5aefb8ad7d198d5746622ad471639fb10cdcf29678054361e1db3a292d0f
|
7
|
+
data.tar.gz: 6796ae6f652917845031b56107c7859a2a443b1da5bc8820d183d415eb14781c5809dfdbe22dc5da7adac109321918a4197b5dd4b5e96ea3be5dd23d85198cf3
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: BUILD, VERIFY, and RELEASE Ruby Gem to RubyGems
|
5
|
+
|
6
|
+
# This workflow relies on the following secrets
|
7
|
+
# - TRACE_BUILD_RUBY_ACTIONS_API_TOKEN (from the trace-build user in github)
|
8
|
+
# - RUBYGEMS_TOKEN (from the appoptics user on rubygems.org)
|
9
|
+
# - APPOPTICS_SERVICE_KEY
|
10
|
+
# - APPOPTICS_COLLECTOR
|
11
|
+
#
|
12
|
+
# The correct oboe version has to be in the file ext/oboe_metal/src/VERSION
|
13
|
+
|
14
|
+
on:
|
15
|
+
workflow_dispatch:
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
build:
|
19
|
+
name: Build + Release Gem to RubyGems
|
20
|
+
runs-on: ubuntu-latest
|
21
|
+
|
22
|
+
steps:
|
23
|
+
- uses: actions/checkout@v2
|
24
|
+
|
25
|
+
- name: Set up Ruby 2.7 and bundle
|
26
|
+
uses: ruby/setup-ruby@v1
|
27
|
+
with:
|
28
|
+
ruby-version: 2.7
|
29
|
+
|
30
|
+
- name: Install gems
|
31
|
+
run: |
|
32
|
+
echo 'gem: --no-document' >> ~/.gemrc
|
33
|
+
bundle install --without development --without test
|
34
|
+
|
35
|
+
- name: Install swig 4.0.2
|
36
|
+
run: |
|
37
|
+
apt udate && apt install -y --no-install-recommends bison
|
38
|
+
curl -SL https://github.com/swig/swig/archive/refs/tags/v4.0.2.tar.gz | tar xzC /tmp
|
39
|
+
cd /tmp/swig-4.0.2
|
40
|
+
./autogen.sh && ./configure && make && sudo make install
|
41
|
+
cd -
|
42
|
+
|
43
|
+
- name: Download files from files.appoptics.com and create swig wrapper
|
44
|
+
env:
|
45
|
+
TRACE_BUILD_TOKEN: ${{ secrets.TRACE_BUILD_RUBY_ACTIONS_API_TOKEN }}
|
46
|
+
run: |
|
47
|
+
bundle exec rake oboe_files_appoptics_fetch
|
48
|
+
bundle exec rake oboe_verify
|
49
|
+
|
50
|
+
- name: Build Gem and upload to Rubygems
|
51
|
+
id: build
|
52
|
+
env:
|
53
|
+
GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_TOKEN }}
|
54
|
+
run: |
|
55
|
+
bundle exec rake build_and_publish_gem
|
56
|
+
checksum=`shasum -a256 *.gem | awk '{print $1;}'`
|
57
|
+
echo "checksum: $checksum"
|
58
|
+
echo ::set-output name=checksum::$checksum
|
59
|
+
echo ::set-output name=gem_version::`ruby -e 'require "./lib/appoptics_apm/version"; puts AppOpticsAPM::Version::STRING'`
|
60
|
+
|
61
|
+
- name: Get checksum from Rubygems
|
62
|
+
id: checksum
|
63
|
+
run: |
|
64
|
+
gem_version=${{ steps.build.outputs.gem_version }}
|
65
|
+
echo ::set-output name=geminfo::`curl https://rubygems.org/api/v2/rubygems/appoptics_apm/versions/$gem_version.json`
|
66
|
+
|
67
|
+
- name: Print checksums (in case some debugging is needed)
|
68
|
+
run: |
|
69
|
+
echo "local checksum: ${{ steps.build.outputs.checksum }}"
|
70
|
+
echo "Rubygems checksum: ${{ fromJson(steps.checksum.outputs.geminfo).sha }}"
|
71
|
+
|
72
|
+
- name: Fail if local and rubygems checksums don't match
|
73
|
+
if: fromJson(steps.checksum.outputs.geminfo).sha != steps.build.outputs.checksum
|
74
|
+
run: |
|
75
|
+
echo "local and rubygems checksum not matching, gem needs to be yanked from rubygems.org"
|
76
|
+
exit 1
|
77
|
+
|
78
|
+
- name: Create release draft that includes the checksum
|
79
|
+
uses: actions/github-script@v3
|
80
|
+
with:
|
81
|
+
github-token: ${{secrets.GITHUB_TOKEN}}
|
82
|
+
script: |
|
83
|
+
github.repos.createRelease({
|
84
|
+
owner: "appoptics",
|
85
|
+
repo: "appoptics-apm-ruby",
|
86
|
+
body: "SHA256 checksum: ${{ steps.build.outputs.checksum }}",
|
87
|
+
tag_name: "${{ steps.build.outputs.gem_version }}",
|
88
|
+
name: "${{ steps.build.outputs.gem_version }}",
|
89
|
+
draft: true
|
90
|
+
})
|
91
|
+
|
92
|
+
# may need a bit of time for the gem to become available (sleep 1)
|
93
|
+
- name: Download new Rubygem from rubygems.org and test
|
94
|
+
working-directory: .github/workflows/
|
95
|
+
env:
|
96
|
+
APPOPTICS_SERVICE_KEY: ${{ secrets.APPOPTICS_SERVICE_KEY }}
|
97
|
+
APPOPTICS_COLLECTOR: ${{ secrets.APPOPTICS_COLLECTOR}}
|
98
|
+
run: |
|
99
|
+
sleep 1
|
100
|
+
gem install appoptics_apm --version ${{ steps.build.outputs.gem_version }}
|
101
|
+
ruby ./scripts/test_install.rb
|
102
|
+
|
103
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: Ruby Gem to PackageCloud
|
5
|
+
|
6
|
+
on:
|
7
|
+
workflow_dispatch:
|
8
|
+
|
9
|
+
jobs:
|
10
|
+
build:
|
11
|
+
name: Build + Publish to PackageCloud
|
12
|
+
runs-on: ubuntu-latest
|
13
|
+
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v2
|
16
|
+
|
17
|
+
- name: Set up Ruby 2.6 and bundle
|
18
|
+
uses: ruby/setup-ruby@v1
|
19
|
+
with:
|
20
|
+
ruby-version: 2.6
|
21
|
+
|
22
|
+
- name: Install gems
|
23
|
+
run: |
|
24
|
+
echo 'gem: --no-document' >> ~/.gemrc
|
25
|
+
bundle install --without development --without test
|
26
|
+
|
27
|
+
- name: Install swig 4.0.2
|
28
|
+
run: |
|
29
|
+
apt udate && apt install -y --no-install-recommends bison
|
30
|
+
curl -SL https://github.com/swig/swig/archive/refs/tags/v4.0.2.tar.gz | tar xzC /tmp
|
31
|
+
cd /tmp/swig-4.0.2
|
32
|
+
./autogen.sh && ./configure && make && sudo make install
|
33
|
+
cd -
|
34
|
+
|
35
|
+
- name: Download oboe staging files from S3, compile swig wrapper
|
36
|
+
run: |
|
37
|
+
bundle exec rake fetch
|
38
|
+
ls -l ext/oboe_metal/src
|
39
|
+
|
40
|
+
- name: Build Gem
|
41
|
+
id: gemstep
|
42
|
+
run: |
|
43
|
+
gem build appoptics_apm.gemspec
|
44
|
+
echo `shasum -a256 *.gem`
|
45
|
+
echo "::set-output name=GEM_VERSION::`ruby -e 'require "./lib/appoptics_apm/version"; puts AppOpticsAPM::Version::STRING'`"
|
46
|
+
cat ext/oboe_metal/src/VERSION
|
47
|
+
|
48
|
+
- name: Publish to PackageCloud
|
49
|
+
# PackageCloud is unreliable with regards to
|
50
|
+
# republishing after yanking a gem
|
51
|
+
# we are going to fail if republishing is attempted
|
52
|
+
run: |
|
53
|
+
gem install package_cloud
|
54
|
+
package_cloud push solarwinds/appoptics-apm-ruby *.gem
|
55
|
+
env:
|
56
|
+
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
57
|
+
|
58
|
+
# Run this test manually, github is having problems reading the index at packagecloud
|
59
|
+
# TODO: AO-20355
|
60
|
+
# - name: Test install (give packagecloud 60 seconds to index)
|
61
|
+
# working-directory: .github/workflows/
|
62
|
+
# env:
|
63
|
+
# APPOPTICS_SERVICE_KEY: ${{ secrets.APPOPTICS_SERVICE_KEY }}
|
64
|
+
# APPOPTICS_COLLECTOR: ${{ secrets.APPOPTICS_COLLECTOR}}
|
65
|
+
# APPOPTICS_FROM_S3: true
|
66
|
+
# run: |
|
67
|
+
# sleep 60
|
68
|
+
# gem sources --add https://packagecloud.io/solarwinds/appoptics-apm-ruby
|
69
|
+
# gem install appoptics_apm --version ${{ steps.gemstep.outputs.GEM_VERSION }} --verbose
|
70
|
+
# ruby ./scripts/test_install.rb
|
@@ -0,0 +1,47 @@
|
|
1
|
+
name: Build docker images
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
paths:
|
6
|
+
- 'test/run_tests/Dockerfile_*'
|
7
|
+
# Allows running this workflow manually from the Actions tab
|
8
|
+
workflow_dispatch:
|
9
|
+
|
10
|
+
env:
|
11
|
+
GHRC: ghcr.io/appoptics/appoptics-apm-ruby/apm_ruby
|
12
|
+
DOCKERFILE: test/run_tests/Dockerfile
|
13
|
+
|
14
|
+
jobs:
|
15
|
+
|
16
|
+
build_push:
|
17
|
+
name: Build docker images
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
|
20
|
+
strategy:
|
21
|
+
fail-fast: false
|
22
|
+
matrix:
|
23
|
+
os: [ubuntu, debian, centos, alpine]
|
24
|
+
|
25
|
+
steps:
|
26
|
+
- name: Checkout
|
27
|
+
uses: actions/checkout@v1
|
28
|
+
|
29
|
+
- name: ghcr.io login
|
30
|
+
uses: docker/login-action@v1
|
31
|
+
with:
|
32
|
+
registry: ghcr.io
|
33
|
+
username: ${{ github.actor }}
|
34
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
35
|
+
|
36
|
+
# - name: Build and push V2
|
37
|
+
# uses: docker/build-push-action@v2
|
38
|
+
# with:
|
39
|
+
# file: test/run_tests/Dockerfile_ubuntu
|
40
|
+
# tags: ghcr.io/appoptics/appoptics-apm-ruby/ao_ubuntu:latest
|
41
|
+
# push: true
|
42
|
+
|
43
|
+
- name: Build new Docker image
|
44
|
+
run: docker build -f ${{ env.DOCKERFILE }}_${{ matrix.os }} -t ${{ env.GHRC }}_${{ matrix.os }} .
|
45
|
+
|
46
|
+
- name: Publish updated Docker image
|
47
|
+
run: docker push ${{ env.GHRC }}_${{ matrix.os }}
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: C++ Tests
|
5
|
+
|
6
|
+
on:
|
7
|
+
push:
|
8
|
+
paths:
|
9
|
+
- ext/oboe_metal/src/*.h
|
10
|
+
- ext/oboe_metal/src/*.cc
|
11
|
+
- ext/oboe_metal/test/*
|
12
|
+
# Allows you to run this workflow manually from the Actions tab
|
13
|
+
workflow_dispatch:
|
14
|
+
|
15
|
+
jobs:
|
16
|
+
tests:
|
17
|
+
runs-on: ubuntu-latest
|
18
|
+
strategy:
|
19
|
+
fail-fast: false
|
20
|
+
matrix:
|
21
|
+
ruby: [3.0, 2.7, 2.6, 2.5, 2.4]
|
22
|
+
|
23
|
+
container:
|
24
|
+
image: ruby:${{ matrix.ruby }}
|
25
|
+
|
26
|
+
name: ${{ matrix.ruby }} - c++
|
27
|
+
|
28
|
+
env:
|
29
|
+
APPOPTICS_REPORTER: file
|
30
|
+
APPOPTICS_COLLECTOR: /tmp/appoptics_traces.bson
|
31
|
+
APPOPTICS_REPORTER_FILE_SINGLE: false
|
32
|
+
APPOPTICS_FROM_S3: true
|
33
|
+
|
34
|
+
steps:
|
35
|
+
- uses: actions/checkout@v2
|
36
|
+
|
37
|
+
- name: Install cmake
|
38
|
+
run: |
|
39
|
+
ls -lrt /usr/src
|
40
|
+
apt update && apt install -y --no-install-recommends build-essential libgtest-dev ruby
|
41
|
+
curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5-SHA-256.txt
|
42
|
+
curl -OL https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5.tar.gz
|
43
|
+
sha256sum -c --ignore-missing cmake-3.20.5-SHA-256.txt
|
44
|
+
tar -zxvf cmake-3.20.5.tar.gz
|
45
|
+
cd cmake-3.20.5
|
46
|
+
./bootstrap
|
47
|
+
make
|
48
|
+
make install
|
49
|
+
|
50
|
+
- name: Install swig 4.0.2
|
51
|
+
working-directory: .github/workflows/swig
|
52
|
+
run: |
|
53
|
+
apt update && apt install -y --no-install-recommends bison
|
54
|
+
tar -xf swig-v4.0.2.tar.gz -C /tmp
|
55
|
+
cd /tmp/swig-4.0.2
|
56
|
+
./autogen.sh && ./configure && make && make install
|
57
|
+
cd -
|
58
|
+
|
59
|
+
- name: Bundle & download c-files
|
60
|
+
run: |
|
61
|
+
gem install bundler
|
62
|
+
bundle install
|
63
|
+
bundle exec rake clean fetch compile
|
64
|
+
|
65
|
+
- name: Compile and run tests
|
66
|
+
working-directory: ext/oboe_metal/test
|
67
|
+
run: |
|
68
|
+
export TEST_DIR=`pwd`
|
69
|
+
export RUBY_INC_DIR=$(ruby ruby_inc_dir.rb)
|
70
|
+
export RUBY_PREFIX=$(ruby ruby_prefix.rb)
|
71
|
+
cmake -S . -B build
|
72
|
+
cmake --build build
|
73
|
+
cd build && ctest
|
@@ -0,0 +1,168 @@
|
|
1
|
+
# Copyright (c) 2021 SolarWinds, LLC.
|
2
|
+
# All rights reserved.
|
3
|
+
|
4
|
+
name: Run Ruby Tests on Ubuntu
|
5
|
+
|
6
|
+
on:
|
7
|
+
# push:
|
8
|
+
# Allows you to run this workflow manually from the Actions tab
|
9
|
+
workflow_dispatch:
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
tests:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
strategy:
|
15
|
+
fail-fast: false
|
16
|
+
matrix:
|
17
|
+
ruby: [3.0, 2.7, 2.6, 2.5, 2.4]
|
18
|
+
gemfile:
|
19
|
+
- libraries
|
20
|
+
- unit
|
21
|
+
- instrumentation_mocked
|
22
|
+
- instrumentation_mocked_oldgems
|
23
|
+
- frameworks
|
24
|
+
- rails61
|
25
|
+
- rails60
|
26
|
+
- rails52
|
27
|
+
- rails42
|
28
|
+
- delayed_job
|
29
|
+
- noop
|
30
|
+
dbtype: [postgresql, mysql2]
|
31
|
+
exclude:
|
32
|
+
- ruby: 3.0
|
33
|
+
gemfile: rails52
|
34
|
+
- ruby: 3.0
|
35
|
+
gemfile: rails42
|
36
|
+
- ruby: 2.7
|
37
|
+
gemfile: rails42
|
38
|
+
- ruby: 2.6
|
39
|
+
gemfile: rails42
|
40
|
+
- ruby: 2.4
|
41
|
+
gemfile: rails61
|
42
|
+
- ruby: 2.4
|
43
|
+
gemfile: rails60
|
44
|
+
- ruby: 2.4 # excluding because of new sprockets version (4.0.0)
|
45
|
+
gemfile: rails52
|
46
|
+
|
47
|
+
- gemfile: unit
|
48
|
+
dbtype: mysql2
|
49
|
+
- gemfile: noop
|
50
|
+
dbtype: mysql2
|
51
|
+
- gemfile: libraries
|
52
|
+
dbtype: mysql2
|
53
|
+
- gemfile: instrumentation_mocked
|
54
|
+
dbtype: mysql2
|
55
|
+
- gemfile: instrumentation_mocked_oldgems
|
56
|
+
dbtype: mysql2
|
57
|
+
- gemfile: frameworks
|
58
|
+
dbtype: mysql2
|
59
|
+
- gemfile: delayed_job
|
60
|
+
dbtype: mysql2
|
61
|
+
|
62
|
+
container:
|
63
|
+
image: ruby:${{ matrix.ruby }}
|
64
|
+
|
65
|
+
name: ${{ matrix.ruby }} - ${{ matrix.gemfile }}
|
66
|
+
|
67
|
+
env:
|
68
|
+
BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile
|
69
|
+
APPOPTICS_GEM_TEST: true
|
70
|
+
APPOPTICS_REPORTER: file
|
71
|
+
APPOPTICS_COLLECTOR: /tmp/appoptics_traces.bson
|
72
|
+
APPOPTICS_MONGO_SERVER: "mongo"
|
73
|
+
APPOPTICS_RABBITMQ_SERVER: "rabbitmq"
|
74
|
+
APPOPTICS_MEMCACHED_SERVER: "memcached"
|
75
|
+
APPOPTICS_REPORTER_FILE_SINGLE: false
|
76
|
+
APPOPTICS_FROM_S3: true
|
77
|
+
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
|
78
|
+
MYSQL_ROOT_PASSWORD: "admin"
|
79
|
+
MYSQL_HOST: "mysql"
|
80
|
+
MYSQL_DATABASE: "travis_ci_test"
|
81
|
+
POSTGRES_DB: "travis_ci_test"
|
82
|
+
DOCKER_MYSQL_PASS: "admin"
|
83
|
+
DOCKER_PSQL_PASS: "postgres"
|
84
|
+
POSTGRES_USER: "postgres"
|
85
|
+
POSTGRES_PASSWORD: "postgres"
|
86
|
+
POSTGRES_HOST: "postgres"
|
87
|
+
REDIS_PASSWORD: "redis_pass"
|
88
|
+
services:
|
89
|
+
memcached:
|
90
|
+
image: memcached:latest
|
91
|
+
ports:
|
92
|
+
- 11211:11211
|
93
|
+
options: --health-cmd "timeout 5 bash -c 'cat < /dev/null > /dev/udp/127.0.0.1/11211'" --health-interval 10s --health-timeout 5s --health-retries 5
|
94
|
+
rabbitmq:
|
95
|
+
image: rabbitmq:latest
|
96
|
+
ports:
|
97
|
+
- 5672:5672
|
98
|
+
options: --health-cmd "rabbitmqctl node_health_check" --health-interval 10s --health-timeout 5s --health-retries 5
|
99
|
+
mongo:
|
100
|
+
image: mongo:latest
|
101
|
+
ports:
|
102
|
+
- 27017:27017
|
103
|
+
options: "--health-cmd \"mongo --quiet --eval 'quit(db.runCommand({ ping: 1 }).ok ? 0 : 2)'\" --health-interval 10s --health-timeout 5s --health-retries 5"
|
104
|
+
postgres:
|
105
|
+
image: postgres:10.8
|
106
|
+
env:
|
107
|
+
POSTGRES_DB: postgres
|
108
|
+
ports:
|
109
|
+
- 5432:5432
|
110
|
+
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
111
|
+
mysql:
|
112
|
+
image: mariadb:latest
|
113
|
+
env:
|
114
|
+
MYSQL_USER: user
|
115
|
+
MYSQL_PASSWORD: password
|
116
|
+
MYSQL_DATABASE: travis_ci_test
|
117
|
+
MYSQL_ROOT_PASSWORD: admin
|
118
|
+
ports:
|
119
|
+
- 3306:3306
|
120
|
+
options: --health-cmd="mysqladmin ping" --health-interval=5s --health-timeout=2s --health-retries=3
|
121
|
+
|
122
|
+
steps:
|
123
|
+
- uses: actions/checkout@v2
|
124
|
+
|
125
|
+
- name: Install dependencies
|
126
|
+
run: apt update && apt install -y --no-install-recommends bison libcurl4-gnutls-dev libsasl2-dev postgresql-client
|
127
|
+
|
128
|
+
- name: Set database type env var
|
129
|
+
run: export DBTYPE=${{ matrix.dbtype }}
|
130
|
+
|
131
|
+
- name: Add javascript runtime
|
132
|
+
uses: actions/setup-node@v2
|
133
|
+
with:
|
134
|
+
node-version: '14'
|
135
|
+
|
136
|
+
- name: Initialize services
|
137
|
+
run: |
|
138
|
+
export PGPASSWORD=$POSTGRES_PASSWORD; psql -c 'create database travis_ci_test;' -U postgres -h $POSTGRES_HOST
|
139
|
+
curl -SL http://download.redis.io/releases/redis-4.0.0.tar.gz | tar xzC /tmp && cd /tmp/redis-4.0.0/ && make && make install && cd -
|
140
|
+
redis-server --requirepass redis_pass --loglevel "warning" &
|
141
|
+
|
142
|
+
- name: Bundle with 1.17.3
|
143
|
+
if: matrix.gemfile == 'rails42' || matrix.gemfile == 'frameworks'
|
144
|
+
run: |
|
145
|
+
gem install bundler:1.17.3
|
146
|
+
export BUNDLE_GEMFILE=gemfiles/${{ matrix.gemfile }}.gemfile
|
147
|
+
bundle _1.17.3_ install --jobs 4 --retry 3
|
148
|
+
- name: Bundle
|
149
|
+
if: matrix.gemfile != 'rails42' && matrix.gemfile != 'frameworks'
|
150
|
+
run: |
|
151
|
+
gem install bundler
|
152
|
+
export BUNDLE_GEMFILE=gemfiles/${{ matrix.gemfile }}.gemfile
|
153
|
+
bundle install --jobs 4 --retry 3
|
154
|
+
|
155
|
+
- name: Install swig 4.0.2
|
156
|
+
working-directory: .github/workflows/swig
|
157
|
+
run: |
|
158
|
+
tar -xf swig-v4.0.2.tar.gz -C /tmp
|
159
|
+
cd /tmp/swig-4.0.2
|
160
|
+
./autogen.sh && ./configure && make && make install
|
161
|
+
cd -
|
162
|
+
|
163
|
+
- name: Compile c-extension
|
164
|
+
run: |
|
165
|
+
bundle exec rake fetch compile
|
166
|
+
|
167
|
+
- name: Run tests
|
168
|
+
run: bundle exec rake test
|