stack-service-base 0.0.24 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/ssbase +10 -0
- data/lib/stack-service-base/command_init.rb +51 -0
- data/lib/stack-service-base/command_line.rb +76 -0
- data/lib/stack-service-base/project_template/gitlab-c/docker/Dockerfile.build +14 -0
- data/lib/stack-service-base/project_template/gitlab-c/docker/local_build.sh +9 -0
- data/lib/stack-service-base/project_template/home/docker/docker-compose.yml +10 -0
- data/lib/stack-service-base/project_template/home/docker/ruby/Dockerfile +40 -0
- data/lib/stack-service-base/project_template/home/src/Gemfile +25 -0
- data/lib/stack-service-base/project_template/home/src/Gemfile.lock +416 -0
- data/lib/stack-service-base/project_template/home/src/Rakefile +14 -0
- data/lib/stack-service-base/project_template/home/src/config.ru +36 -0
- data/lib/stack-service-base/project_template/home/src/specs/integration_spec.rb +9 -0
- data/lib/stack-service-base/project_template/home/src/specs/spec_helper.rb +28 -0
- data/lib/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 052ea64035dc60ae423a1ce27ad94eebeb113c4772faffb0b7f31fa90977e042
|
4
|
+
data.tar.gz: 8443baf28c3a7afa855dd3729a46dab42ec947158dcdcb9a9e83d76e046435b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 609644e6279c9439d35997ae2c1bd22e269d7fd8f9f3f7d2e0de5c352d44af32afb072aab19c063910e638b2edd6d4de0b4ebca4459d58bc4a4f961a02987ab4
|
7
|
+
data.tar.gz: 86975ed715be0dc09253e03900833733876ddea50a62ee0003837d18653ef7f2074e37de6ca11dcea26390e4390638dedbceff450598cf975f07b80bea1ea065
|
data/bin/ssbase
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
lib = File.expand_path('../lib', __dir__)
|
3
|
+
$LOAD_PATH << lib
|
4
|
+
#$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'stack-service-base/command_line'
|
7
|
+
require 'stack-service-base/command_init'
|
8
|
+
include SSBase
|
9
|
+
|
10
|
+
SSBase::CommandLine.run ARGV
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require_relative 'command_line'
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
SSBase::CommandLine::COMMANDS[:init] = Class.new do
|
5
|
+
def options(parser)
|
6
|
+
parser.on('', '--gitlab-c', 'Gitlab C CI/CD')
|
7
|
+
parser.on('', '--gitlab', 'Gitlab CI/CD')
|
8
|
+
parser.on('', '--github', 'GitHub CI/CD')
|
9
|
+
end
|
10
|
+
|
11
|
+
def run(obj, params, args, _extra)
|
12
|
+
if params.empty? || args.empty?
|
13
|
+
puts 'Usage: ssbase init [option] <service name>'
|
14
|
+
puts 'option: --gitlab-c, --gitlab, --github'
|
15
|
+
return
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
copy_folder :home
|
20
|
+
|
21
|
+
copy_folder 'gitlab-c' if params[:gitlab_c]
|
22
|
+
copy_folder 'gitlab' if params[:gitlab]
|
23
|
+
copy_folder 'github' if params[:github]
|
24
|
+
|
25
|
+
update_service_name args.shift
|
26
|
+
end
|
27
|
+
|
28
|
+
def copy_folder( f_name)
|
29
|
+
$stdout.puts "Copy template: #{f_name}"
|
30
|
+
# system "cp -rv --update=none #{__dir__}/project_template/#{f_name}/. ."
|
31
|
+
system "rsync -av --ignore-existing --info=NAME,progress0,stats0 #{__dir__}/project_template/#{f_name}/ ./ | grep -v '^sending incremental file list$' | grep -v '/$' "
|
32
|
+
end
|
33
|
+
|
34
|
+
def update_service_name(s_name)
|
35
|
+
$stdout.puts "Update service name: #{s_name}"
|
36
|
+
Dir.glob('**/*').each do |file|
|
37
|
+
next unless File.file? file
|
38
|
+
content = File.read(file)
|
39
|
+
include = content.include?('${service_name}') ? '(found)' : nil
|
40
|
+
next unless include
|
41
|
+
$stdout.puts "update file: #{file} #{include}"
|
42
|
+
content.gsub!(/\$\{service_name\}/, s_name)
|
43
|
+
File.write(file, content)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def help = ['Create basic service file structure',
|
48
|
+
'[... to_compose <deploy name>] ']
|
49
|
+
end.new
|
50
|
+
|
51
|
+
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require_relative '../version'
|
2
|
+
require 'open3'
|
3
|
+
require 'optionparser'
|
4
|
+
|
5
|
+
def exec_i(cmd, input_string = nil, &block)
|
6
|
+
puts "exec_i(inputs.size #{input_string&.size}): #{cmd}"
|
7
|
+
Open3.popen3(cmd) do |i, o, e, wait_thr|
|
8
|
+
std_out, std_err = '', ''
|
9
|
+
i.puts input_string unless input_string.nil?
|
10
|
+
i.close
|
11
|
+
while line = o.gets; puts "o: #{line}"; std_out += "#{line}\n" end
|
12
|
+
while line = e.gets; puts "o: #{line}"; std_err += "#{line}\n" end
|
13
|
+
return_value = wait_thr.value
|
14
|
+
puts "Error level was: #{return_value.exitstatus}" unless return_value.success?
|
15
|
+
|
16
|
+
if block_given?
|
17
|
+
block.call return_value, std_out, std_err
|
18
|
+
else
|
19
|
+
exit return_value.exitstatus unless return_value.success?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def exec_o_lines(cmd,&)
|
25
|
+
IO.popen(cmd, 'r') do |f|
|
26
|
+
f.each_line do |line|
|
27
|
+
yield line
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module SSBase
|
33
|
+
module CommandLine
|
34
|
+
COMMANDS = {}
|
35
|
+
|
36
|
+
class << self
|
37
|
+
def run(args)
|
38
|
+
params = {}
|
39
|
+
|
40
|
+
a, extra = ARGV.join(' ').split( / -- /)
|
41
|
+
ARGV.replace a.split if a
|
42
|
+
ARGV << '-h' if ARGV.empty?
|
43
|
+
|
44
|
+
OptionParser.new do |o|
|
45
|
+
o.version = "#{StackServiceBase::Base::VERSION}"
|
46
|
+
|
47
|
+
usage = [
|
48
|
+
'ssbase [options] COMMAND',
|
49
|
+
]
|
50
|
+
o.banner = "Version: #{o.version}\nUsage:\n\t#{usage.join "\n\t"}"
|
51
|
+
o.separator ''
|
52
|
+
o.separator 'Commands:'
|
53
|
+
COMMANDS.each { |name, cmd| o.separator "#{' ' * 5}#{name} - #{[cmd.help].flatten.join "\n#{' ' * (5+4 + name.size)}" }" }
|
54
|
+
|
55
|
+
o.separator ''
|
56
|
+
o.separator 'Options:'
|
57
|
+
|
58
|
+
COMMANDS.values.select{_1.options(o) if _1.respond_to? :options }
|
59
|
+
|
60
|
+
o.on('-h', '--help') { puts o; exit }
|
61
|
+
o.parse! args, into: params
|
62
|
+
|
63
|
+
params.transform_keys!{_1.to_s.gsub('-','_').to_sym}
|
64
|
+
|
65
|
+
command = args.shift || ''
|
66
|
+
raise "Unknown command: #{command}" unless COMMANDS.key?(command.to_sym)
|
67
|
+
|
68
|
+
COMMANDS[command.to_sym].run [], params, args, extra
|
69
|
+
rescue => e
|
70
|
+
puts e.message
|
71
|
+
ENV['DEBUG'] ? raise : exit(1)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
FROM ruby:3.3.0-alpine3.19 AS base
|
2
|
+
RUN apk add bash docker-cli-buildx git
|
3
|
+
RUN gem install build-labels:0.0.56 dry-stack:0.1.16
|
4
|
+
|
5
|
+
FROM base AS runner
|
6
|
+
WORKDIR /build
|
7
|
+
COPY . .
|
8
|
+
|
9
|
+
CMD ["bash", "-c", "-x", "\
|
10
|
+
env && cd /build/docker && \
|
11
|
+
build-labels -n -c docker-compose.yml gitlab set_version to_dockerfiles to_compose | tee bake.yml && \
|
12
|
+
export OTEL_RESOURCE_ATTRIBUTES=service.name=docker-builder,pipeline.id=${CI_PIPELINE_ID},project.name=${CI_PROJECT_NAME} && \
|
13
|
+
grep \"services: {}\" bake.yml || REGISTRY_HOST=$CI_REGISTRY_HOST docker buildx bake -f bake.yml $([ -z \"$CI_SKIP_PUSH\" ] && echo \"--push\") \
|
14
|
+
"]
|
@@ -0,0 +1,9 @@
|
|
1
|
+
CI_PROJECT_NAME=service_name
|
2
|
+
CI_PIPELINE_ID=local
|
3
|
+
CI_REGISTRY_HOST=localhost
|
4
|
+
|
5
|
+
docker run --rm --env-file <(env | grep ^CI_) \
|
6
|
+
-v /var/run/docker.sock:/var/run/docker.sock \
|
7
|
+
-v /root/.docker:/root/.docker \
|
8
|
+
$(docker build -q -t build/${CI_PROJECT_NAME} -f Dockerfile.build ..) 2>&1
|
9
|
+
|
@@ -0,0 +1,40 @@
|
|
1
|
+
FROM ruby:3.4.4-slim-bookworm AS base
|
2
|
+
|
3
|
+
RUN apt update && apt --fix-missing install -y build-essential pkg-config libpq-dev curl cmake libssl-dev \
|
4
|
+
&& rm -rf /var/lib/apt/lists/*
|
5
|
+
|
6
|
+
RUN echo 'gem: --no-document' >> ~/.gemrc
|
7
|
+
|
8
|
+
WORKDIR /app
|
9
|
+
|
10
|
+
COPY Gemfile* /app/
|
11
|
+
|
12
|
+
RUN bundle install --jobs $(nproc) --retry=3 && \
|
13
|
+
bundle clean --force && rm -rf /usr/local/bundle/cache/*
|
14
|
+
|
15
|
+
COPY . /app
|
16
|
+
|
17
|
+
ENV RACK_ENV=production NODE_ENV=production
|
18
|
+
RUN rake -T | grep 'rake build' && rake build || echo 'no build task'
|
19
|
+
|
20
|
+
RUN bundle exec rspec
|
21
|
+
|
22
|
+
FROM ruby:3.4.4-slim-bookworm AS deploy
|
23
|
+
RUN apt update && apt install --fix-missing -y bash curl libssl-dev bash curl wget libpq-dev \
|
24
|
+
&& rm -rf /var/lib/apt/lists/*
|
25
|
+
|
26
|
+
COPY --from=base /usr/local/bundle /usr/local/bundle
|
27
|
+
|
28
|
+
COPY . /app
|
29
|
+
|
30
|
+
ENV RUBY_YJIT_ENABLE=1 \
|
31
|
+
SERVER_ENV=production \
|
32
|
+
RACK_ENV=production \
|
33
|
+
PORT=7000
|
34
|
+
|
35
|
+
WORKDIR /app
|
36
|
+
|
37
|
+
# --start_period=5s (Unknown flag: start_period)
|
38
|
+
HEALTHCHECK --interval=15s --timeout=2s --retries=3 CMD curl --fail http://127.0.0.1:$PORT/healthcheck || exit 1
|
39
|
+
CMD bundle exec rackup -o 0.0.0.0 -p $PORT -s falcon
|
40
|
+
# docker-compose build --progress plain
|
@@ -0,0 +1,25 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'sinatra'
|
4
|
+
gem 'async'
|
5
|
+
gem 'sequel'
|
6
|
+
gem 'pg'
|
7
|
+
|
8
|
+
gem 'rack', '~> 3.1.13'
|
9
|
+
gem 'rackup', '~> 2.2.1'
|
10
|
+
gem 'falcon'
|
11
|
+
|
12
|
+
gem 'stack-service-base'
|
13
|
+
|
14
|
+
group :test do
|
15
|
+
gem 'sqlite3'
|
16
|
+
gem 'rspec'
|
17
|
+
gem 'rack-test'
|
18
|
+
gem 'rspec-benchmark'
|
19
|
+
gem 'rspec_junit_formatter'
|
20
|
+
gem 'async-rspec'
|
21
|
+
|
22
|
+
gem 'simplecov'
|
23
|
+
# gem 'simplecov-cobertura'
|
24
|
+
gem 'yard'
|
25
|
+
end
|
@@ -0,0 +1,416 @@
|
|
1
|
+
GEM
|
2
|
+
remote: https://rubygems.org/
|
3
|
+
specs:
|
4
|
+
async (2.26.0)
|
5
|
+
console (~> 1.29)
|
6
|
+
fiber-annotation
|
7
|
+
io-event (~> 1.12)
|
8
|
+
metrics (~> 0.12)
|
9
|
+
traces (~> 0.15)
|
10
|
+
async-container (0.24.0)
|
11
|
+
async (~> 2.22)
|
12
|
+
async-container-supervisor (0.5.2)
|
13
|
+
async-container (~> 0.22)
|
14
|
+
async-service
|
15
|
+
io-endpoint
|
16
|
+
io-stream
|
17
|
+
memory-leak (~> 0.5)
|
18
|
+
async-http (0.89.0)
|
19
|
+
async (>= 2.10.2)
|
20
|
+
async-pool (~> 0.9)
|
21
|
+
io-endpoint (~> 0.14)
|
22
|
+
io-stream (~> 0.6)
|
23
|
+
metrics (~> 0.12)
|
24
|
+
protocol-http (~> 0.49)
|
25
|
+
protocol-http1 (~> 0.30)
|
26
|
+
protocol-http2 (~> 0.22)
|
27
|
+
traces (~> 0.10)
|
28
|
+
async-http-cache (0.4.5)
|
29
|
+
async-http (~> 0.56)
|
30
|
+
async-pool (0.11.0)
|
31
|
+
async (>= 2.0)
|
32
|
+
async-rspec (1.17.1)
|
33
|
+
rspec (~> 3.0)
|
34
|
+
rspec-files (~> 1.0)
|
35
|
+
rspec-memory (~> 1.0)
|
36
|
+
async-service (0.13.0)
|
37
|
+
async
|
38
|
+
async-container (~> 0.16)
|
39
|
+
base64 (0.3.0)
|
40
|
+
benchmark-malloc (0.2.0)
|
41
|
+
benchmark-perf (0.6.0)
|
42
|
+
benchmark-trend (0.4.0)
|
43
|
+
bigdecimal (3.2.2)
|
44
|
+
concurrent-ruby (1.3.5)
|
45
|
+
console (1.32.0)
|
46
|
+
fiber-annotation
|
47
|
+
fiber-local (~> 1.1)
|
48
|
+
json
|
49
|
+
diff-lcs (1.6.2)
|
50
|
+
docile (1.4.1)
|
51
|
+
falcon (0.52.0)
|
52
|
+
async
|
53
|
+
async-container (~> 0.20)
|
54
|
+
async-container-supervisor (~> 0.5.0)
|
55
|
+
async-http (~> 0.75)
|
56
|
+
async-http-cache (~> 0.4)
|
57
|
+
async-service (~> 0.10)
|
58
|
+
bundler
|
59
|
+
localhost (~> 1.1)
|
60
|
+
openssl (~> 3.0)
|
61
|
+
protocol-http (~> 0.31)
|
62
|
+
protocol-rack (~> 0.7)
|
63
|
+
samovar (~> 2.3)
|
64
|
+
fiber-annotation (0.2.0)
|
65
|
+
fiber-local (1.1.0)
|
66
|
+
fiber-storage
|
67
|
+
fiber-storage (1.0.1)
|
68
|
+
google-protobuf (4.31.1-x86_64-linux-gnu)
|
69
|
+
bigdecimal
|
70
|
+
rake (>= 13)
|
71
|
+
googleapis-common-protos-types (1.20.0)
|
72
|
+
google-protobuf (>= 3.18, < 5.a)
|
73
|
+
io-endpoint (0.15.2)
|
74
|
+
io-event (1.12.0)
|
75
|
+
io-stream (0.10.0)
|
76
|
+
json (2.13.0)
|
77
|
+
localhost (1.5.0)
|
78
|
+
logger (1.7.0)
|
79
|
+
mapping (1.1.3)
|
80
|
+
memory-leak (0.5.2)
|
81
|
+
metrics (0.12.2)
|
82
|
+
mustermann (3.0.3)
|
83
|
+
ruby2_keywords (~> 0.0.1)
|
84
|
+
nats-pure (2.5.0)
|
85
|
+
base64
|
86
|
+
concurrent-ruby (~> 1.0)
|
87
|
+
json
|
88
|
+
securerandom
|
89
|
+
uri
|
90
|
+
openssl (3.3.0)
|
91
|
+
opentelemetry-api (1.5.0)
|
92
|
+
opentelemetry-common (0.22.0)
|
93
|
+
opentelemetry-api (~> 1.0)
|
94
|
+
opentelemetry-exporter-otlp (0.30.0)
|
95
|
+
google-protobuf (>= 3.18)
|
96
|
+
googleapis-common-protos-types (~> 1.3)
|
97
|
+
opentelemetry-api (~> 1.1)
|
98
|
+
opentelemetry-common (~> 0.20)
|
99
|
+
opentelemetry-sdk (~> 1.2)
|
100
|
+
opentelemetry-semantic_conventions
|
101
|
+
opentelemetry-helpers-mysql (0.2.0)
|
102
|
+
opentelemetry-api (~> 1.0)
|
103
|
+
opentelemetry-common (~> 0.21)
|
104
|
+
opentelemetry-helpers-sql (0.1.1)
|
105
|
+
opentelemetry-api (~> 1.0)
|
106
|
+
opentelemetry-helpers-sql-obfuscation (0.3.0)
|
107
|
+
opentelemetry-common (~> 0.21)
|
108
|
+
opentelemetry-instrumentation-action_mailer (0.4.0)
|
109
|
+
opentelemetry-api (~> 1.0)
|
110
|
+
opentelemetry-instrumentation-active_support (~> 0.7)
|
111
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
112
|
+
opentelemetry-instrumentation-action_pack (0.12.3)
|
113
|
+
opentelemetry-api (~> 1.0)
|
114
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
115
|
+
opentelemetry-instrumentation-rack (~> 0.21)
|
116
|
+
opentelemetry-instrumentation-action_view (0.9.0)
|
117
|
+
opentelemetry-api (~> 1.0)
|
118
|
+
opentelemetry-instrumentation-active_support (~> 0.7)
|
119
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
120
|
+
opentelemetry-instrumentation-active_job (0.8.0)
|
121
|
+
opentelemetry-api (~> 1.0)
|
122
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
123
|
+
opentelemetry-instrumentation-active_model_serializers (0.22.0)
|
124
|
+
opentelemetry-api (~> 1.0)
|
125
|
+
opentelemetry-instrumentation-active_support (>= 0.7.0)
|
126
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
127
|
+
opentelemetry-instrumentation-active_record (0.9.0)
|
128
|
+
opentelemetry-api (~> 1.0)
|
129
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
130
|
+
opentelemetry-instrumentation-active_storage (0.1.1)
|
131
|
+
opentelemetry-api (~> 1.0)
|
132
|
+
opentelemetry-instrumentation-active_support (~> 0.7)
|
133
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
134
|
+
opentelemetry-instrumentation-active_support (0.8.0)
|
135
|
+
opentelemetry-api (~> 1.0)
|
136
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
137
|
+
opentelemetry-instrumentation-all (0.78.0)
|
138
|
+
opentelemetry-instrumentation-active_model_serializers (~> 0.22.0)
|
139
|
+
opentelemetry-instrumentation-aws_lambda (~> 0.3.0)
|
140
|
+
opentelemetry-instrumentation-aws_sdk (~> 0.8.0)
|
141
|
+
opentelemetry-instrumentation-bunny (~> 0.22.0)
|
142
|
+
opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0)
|
143
|
+
opentelemetry-instrumentation-dalli (~> 0.27.0)
|
144
|
+
opentelemetry-instrumentation-delayed_job (~> 0.23.0)
|
145
|
+
opentelemetry-instrumentation-ethon (~> 0.22.0)
|
146
|
+
opentelemetry-instrumentation-excon (~> 0.23.0)
|
147
|
+
opentelemetry-instrumentation-faraday (~> 0.27.0)
|
148
|
+
opentelemetry-instrumentation-grape (~> 0.3.0)
|
149
|
+
opentelemetry-instrumentation-graphql (~> 0.29.0)
|
150
|
+
opentelemetry-instrumentation-grpc (~> 0.2.0)
|
151
|
+
opentelemetry-instrumentation-gruf (~> 0.3.0)
|
152
|
+
opentelemetry-instrumentation-http (~> 0.25.0)
|
153
|
+
opentelemetry-instrumentation-http_client (~> 0.23.0)
|
154
|
+
opentelemetry-instrumentation-koala (~> 0.21.0)
|
155
|
+
opentelemetry-instrumentation-lmdb (~> 0.23.0)
|
156
|
+
opentelemetry-instrumentation-mongo (~> 0.23.0)
|
157
|
+
opentelemetry-instrumentation-mysql2 (~> 0.29.0)
|
158
|
+
opentelemetry-instrumentation-net_http (~> 0.23.0)
|
159
|
+
opentelemetry-instrumentation-pg (~> 0.30.0)
|
160
|
+
opentelemetry-instrumentation-que (~> 0.9.0)
|
161
|
+
opentelemetry-instrumentation-racecar (~> 0.4.0)
|
162
|
+
opentelemetry-instrumentation-rack (~> 0.26.0)
|
163
|
+
opentelemetry-instrumentation-rails (~> 0.36.0)
|
164
|
+
opentelemetry-instrumentation-rake (~> 0.3.1)
|
165
|
+
opentelemetry-instrumentation-rdkafka (~> 0.7.0)
|
166
|
+
opentelemetry-instrumentation-redis (~> 0.26.1)
|
167
|
+
opentelemetry-instrumentation-resque (~> 0.6.0)
|
168
|
+
opentelemetry-instrumentation-restclient (~> 0.23.0)
|
169
|
+
opentelemetry-instrumentation-ruby_kafka (~> 0.22.0)
|
170
|
+
opentelemetry-instrumentation-sidekiq (~> 0.26.0)
|
171
|
+
opentelemetry-instrumentation-sinatra (~> 0.25.0)
|
172
|
+
opentelemetry-instrumentation-trilogy (~> 0.61.0)
|
173
|
+
opentelemetry-instrumentation-aws_lambda (0.3.0)
|
174
|
+
opentelemetry-api (~> 1.0)
|
175
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
176
|
+
opentelemetry-instrumentation-aws_sdk (0.8.1)
|
177
|
+
opentelemetry-api (~> 1.0)
|
178
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
179
|
+
opentelemetry-instrumentation-base (0.23.0)
|
180
|
+
opentelemetry-api (~> 1.0)
|
181
|
+
opentelemetry-common (~> 0.21)
|
182
|
+
opentelemetry-registry (~> 0.1)
|
183
|
+
opentelemetry-instrumentation-bunny (0.22.0)
|
184
|
+
opentelemetry-api (~> 1.0)
|
185
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
186
|
+
opentelemetry-instrumentation-concurrent_ruby (0.22.0)
|
187
|
+
opentelemetry-api (~> 1.0)
|
188
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
189
|
+
opentelemetry-instrumentation-dalli (0.27.3)
|
190
|
+
opentelemetry-api (~> 1.0)
|
191
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
192
|
+
opentelemetry-instrumentation-delayed_job (0.23.0)
|
193
|
+
opentelemetry-api (~> 1.0)
|
194
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
195
|
+
opentelemetry-instrumentation-ethon (0.22.0)
|
196
|
+
opentelemetry-api (~> 1.0)
|
197
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
198
|
+
opentelemetry-instrumentation-excon (0.23.0)
|
199
|
+
opentelemetry-api (~> 1.0)
|
200
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
201
|
+
opentelemetry-instrumentation-faraday (0.27.0)
|
202
|
+
opentelemetry-api (~> 1.0)
|
203
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
204
|
+
opentelemetry-instrumentation-grape (0.3.0)
|
205
|
+
opentelemetry-api (~> 1.0)
|
206
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
207
|
+
opentelemetry-instrumentation-rack (~> 0.21)
|
208
|
+
opentelemetry-instrumentation-graphql (0.29.0)
|
209
|
+
opentelemetry-api (~> 1.0)
|
210
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
211
|
+
opentelemetry-instrumentation-grpc (0.2.1)
|
212
|
+
opentelemetry-api (~> 1.0)
|
213
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
214
|
+
opentelemetry-instrumentation-gruf (0.3.0)
|
215
|
+
opentelemetry-api (>= 1.0.0)
|
216
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
217
|
+
opentelemetry-instrumentation-http (0.25.1)
|
218
|
+
opentelemetry-api (~> 1.0)
|
219
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
220
|
+
opentelemetry-instrumentation-http_client (0.23.0)
|
221
|
+
opentelemetry-api (~> 1.0)
|
222
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
223
|
+
opentelemetry-instrumentation-koala (0.21.0)
|
224
|
+
opentelemetry-api (~> 1.0)
|
225
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
226
|
+
opentelemetry-instrumentation-lmdb (0.23.0)
|
227
|
+
opentelemetry-api (~> 1.0)
|
228
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
229
|
+
opentelemetry-instrumentation-mongo (0.23.0)
|
230
|
+
opentelemetry-api (~> 1.0)
|
231
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
232
|
+
opentelemetry-instrumentation-mysql2 (0.29.1)
|
233
|
+
opentelemetry-api (~> 1.0)
|
234
|
+
opentelemetry-helpers-mysql
|
235
|
+
opentelemetry-helpers-sql
|
236
|
+
opentelemetry-helpers-sql-obfuscation
|
237
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
238
|
+
opentelemetry-instrumentation-net_http (0.23.0)
|
239
|
+
opentelemetry-api (~> 1.0)
|
240
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
241
|
+
opentelemetry-instrumentation-pg (0.30.1)
|
242
|
+
opentelemetry-api (~> 1.0)
|
243
|
+
opentelemetry-helpers-sql
|
244
|
+
opentelemetry-helpers-sql-obfuscation
|
245
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
246
|
+
opentelemetry-instrumentation-que (0.9.0)
|
247
|
+
opentelemetry-api (~> 1.0)
|
248
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
249
|
+
opentelemetry-instrumentation-racecar (0.4.0)
|
250
|
+
opentelemetry-api (~> 1.0)
|
251
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
252
|
+
opentelemetry-instrumentation-rack (0.26.0)
|
253
|
+
opentelemetry-api (~> 1.0)
|
254
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
255
|
+
opentelemetry-instrumentation-rails (0.36.0)
|
256
|
+
opentelemetry-api (~> 1.0)
|
257
|
+
opentelemetry-instrumentation-action_mailer (~> 0.4.0)
|
258
|
+
opentelemetry-instrumentation-action_pack (~> 0.12.0)
|
259
|
+
opentelemetry-instrumentation-action_view (~> 0.9.0)
|
260
|
+
opentelemetry-instrumentation-active_job (~> 0.8.0)
|
261
|
+
opentelemetry-instrumentation-active_record (~> 0.9.0)
|
262
|
+
opentelemetry-instrumentation-active_storage (~> 0.1.0)
|
263
|
+
opentelemetry-instrumentation-active_support (~> 0.8.0)
|
264
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
265
|
+
opentelemetry-instrumentation-concurrent_ruby (~> 0.22.0)
|
266
|
+
opentelemetry-instrumentation-rake (0.3.1)
|
267
|
+
opentelemetry-api (~> 1.0)
|
268
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
269
|
+
opentelemetry-instrumentation-rdkafka (0.7.0)
|
270
|
+
opentelemetry-api (~> 1.0)
|
271
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
272
|
+
opentelemetry-instrumentation-redis (0.26.1)
|
273
|
+
opentelemetry-api (~> 1.0)
|
274
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
275
|
+
opentelemetry-instrumentation-resque (0.6.0)
|
276
|
+
opentelemetry-api (~> 1.0)
|
277
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
278
|
+
opentelemetry-instrumentation-restclient (0.23.0)
|
279
|
+
opentelemetry-api (~> 1.0)
|
280
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
281
|
+
opentelemetry-instrumentation-ruby_kafka (0.22.0)
|
282
|
+
opentelemetry-api (~> 1.0)
|
283
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
284
|
+
opentelemetry-instrumentation-sidekiq (0.26.1)
|
285
|
+
opentelemetry-api (~> 1.0)
|
286
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
287
|
+
opentelemetry-instrumentation-sinatra (0.25.0)
|
288
|
+
opentelemetry-api (~> 1.0)
|
289
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
290
|
+
opentelemetry-instrumentation-rack (~> 0.21)
|
291
|
+
opentelemetry-instrumentation-trilogy (0.61.1)
|
292
|
+
opentelemetry-api (~> 1.0)
|
293
|
+
opentelemetry-helpers-mysql
|
294
|
+
opentelemetry-helpers-sql
|
295
|
+
opentelemetry-helpers-sql-obfuscation
|
296
|
+
opentelemetry-instrumentation-base (~> 0.23.0)
|
297
|
+
opentelemetry-semantic_conventions (>= 1.8.0)
|
298
|
+
opentelemetry-registry (0.4.0)
|
299
|
+
opentelemetry-api (~> 1.1)
|
300
|
+
opentelemetry-sdk (1.8.0)
|
301
|
+
opentelemetry-api (~> 1.1)
|
302
|
+
opentelemetry-common (~> 0.20)
|
303
|
+
opentelemetry-registry (~> 0.2)
|
304
|
+
opentelemetry-semantic_conventions
|
305
|
+
opentelemetry-semantic_conventions (1.11.0)
|
306
|
+
opentelemetry-api (~> 1.0)
|
307
|
+
pg (1.5.9)
|
308
|
+
prometheus-client (4.2.5)
|
309
|
+
base64
|
310
|
+
protocol-hpack (1.5.1)
|
311
|
+
protocol-http (0.51.0)
|
312
|
+
protocol-http1 (0.34.1)
|
313
|
+
protocol-http (~> 0.22)
|
314
|
+
protocol-http2 (0.22.1)
|
315
|
+
protocol-hpack (~> 1.4)
|
316
|
+
protocol-http (~> 0.47)
|
317
|
+
protocol-rack (0.15.0)
|
318
|
+
io-stream (>= 0.10)
|
319
|
+
protocol-http (~> 0.43)
|
320
|
+
rack (>= 1.0)
|
321
|
+
rack (3.1.16)
|
322
|
+
rack-protection (4.1.1)
|
323
|
+
base64 (>= 0.1.0)
|
324
|
+
logger (>= 1.6.0)
|
325
|
+
rack (>= 3.0.0, < 4)
|
326
|
+
rack-session (2.1.1)
|
327
|
+
base64 (>= 0.1.0)
|
328
|
+
rack (>= 3.0.0)
|
329
|
+
rack-test (2.2.0)
|
330
|
+
rack (>= 1.3)
|
331
|
+
rackup (2.2.1)
|
332
|
+
rack (>= 3)
|
333
|
+
rake (13.3.0)
|
334
|
+
rspec (3.13.1)
|
335
|
+
rspec-core (~> 3.13.0)
|
336
|
+
rspec-expectations (~> 3.13.0)
|
337
|
+
rspec-mocks (~> 3.13.0)
|
338
|
+
rspec-benchmark (0.6.0)
|
339
|
+
benchmark-malloc (~> 0.2)
|
340
|
+
benchmark-perf (~> 0.6)
|
341
|
+
benchmark-trend (~> 0.4)
|
342
|
+
rspec (>= 3.0)
|
343
|
+
rspec-core (3.13.5)
|
344
|
+
rspec-support (~> 3.13.0)
|
345
|
+
rspec-expectations (3.13.5)
|
346
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
347
|
+
rspec-support (~> 3.13.0)
|
348
|
+
rspec-files (1.1.3)
|
349
|
+
rspec (~> 3.0)
|
350
|
+
rspec-memory (1.0.4)
|
351
|
+
rspec (~> 3.0)
|
352
|
+
rspec-mocks (3.13.5)
|
353
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
354
|
+
rspec-support (~> 3.13.0)
|
355
|
+
rspec-support (3.13.4)
|
356
|
+
rspec_junit_formatter (0.6.0)
|
357
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
358
|
+
ruby2_keywords (0.0.5)
|
359
|
+
samovar (2.3.0)
|
360
|
+
console (~> 1.0)
|
361
|
+
mapping (~> 1.0)
|
362
|
+
securerandom (0.4.1)
|
363
|
+
sequel (5.94.0)
|
364
|
+
bigdecimal
|
365
|
+
simplecov (0.22.0)
|
366
|
+
docile (~> 1.1)
|
367
|
+
simplecov-html (~> 0.11)
|
368
|
+
simplecov_json_formatter (~> 0.1)
|
369
|
+
simplecov-html (0.13.2)
|
370
|
+
simplecov_json_formatter (0.1.4)
|
371
|
+
sinatra (4.1.1)
|
372
|
+
logger (>= 1.6.0)
|
373
|
+
mustermann (~> 3.0)
|
374
|
+
rack (>= 3.0.0, < 4)
|
375
|
+
rack-protection (= 4.1.1)
|
376
|
+
rack-session (>= 2.0.0, < 3)
|
377
|
+
tilt (~> 2.0)
|
378
|
+
sqlite3 (2.7.2-x86_64-linux-gnu)
|
379
|
+
stack-service-base (0.0.24)
|
380
|
+
async
|
381
|
+
nats-pure
|
382
|
+
opentelemetry-exporter-otlp
|
383
|
+
opentelemetry-instrumentation-all
|
384
|
+
opentelemetry-sdk
|
385
|
+
prometheus-client
|
386
|
+
rack
|
387
|
+
websocket
|
388
|
+
tilt (2.6.1)
|
389
|
+
traces (0.15.2)
|
390
|
+
uri (1.0.3)
|
391
|
+
websocket (1.2.11)
|
392
|
+
yard (0.9.37)
|
393
|
+
|
394
|
+
PLATFORMS
|
395
|
+
x86_64-linux
|
396
|
+
|
397
|
+
DEPENDENCIES
|
398
|
+
async
|
399
|
+
async-rspec
|
400
|
+
falcon
|
401
|
+
pg
|
402
|
+
rack (~> 3.1.13)
|
403
|
+
rack-test
|
404
|
+
rackup (~> 2.2.1)
|
405
|
+
rspec
|
406
|
+
rspec-benchmark
|
407
|
+
rspec_junit_formatter
|
408
|
+
sequel
|
409
|
+
simplecov
|
410
|
+
sinatra
|
411
|
+
sqlite3
|
412
|
+
stack-service-base
|
413
|
+
yard
|
414
|
+
|
415
|
+
BUNDLED WITH
|
416
|
+
2.6.7
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rspec/core/rake_task'
|
2
|
+
|
3
|
+
RSpec::Core::RakeTask.new(:spec)
|
4
|
+
|
5
|
+
task default: :rspec
|
6
|
+
|
7
|
+
desc "Run all tests"
|
8
|
+
task :test => :spec
|
9
|
+
|
10
|
+
desc "Run tests with coverage"
|
11
|
+
task :coverage do
|
12
|
+
ENV['COVERAGE'] = 'true'
|
13
|
+
Rake::Task[:spec].invoke
|
14
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'sequel'
|
2
|
+
require 'sinatra'
|
3
|
+
require 'stack-service-base'
|
4
|
+
|
5
|
+
StackServiceBase.rack_setup self
|
6
|
+
|
7
|
+
DB = Sequel.connect ENV.fetch('DB_URL')
|
8
|
+
|
9
|
+
# require Models ...
|
10
|
+
# require_relative 'models/...'
|
11
|
+
|
12
|
+
get '/api/foo' do
|
13
|
+
content_type :json
|
14
|
+
{status: 'Ok'}.to_json
|
15
|
+
end
|
16
|
+
|
17
|
+
post '/api/create' do
|
18
|
+
_form_data = JSON request.body.read, symbolize_names: true
|
19
|
+
|
20
|
+
# Model.create _form_data
|
21
|
+
|
22
|
+
content_type :json
|
23
|
+
{message: 'Created successfully'}.to_json
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
helpers do
|
28
|
+
def download(url)
|
29
|
+
response = HTTParty.get(url)
|
30
|
+
response.body
|
31
|
+
|
32
|
+
halt 400, { message: 'Invalid input data', errors: errors }.to_json unless errors.empty?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
run Sinatra::Application
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
$VERBOSE = nil
|
3
|
+
|
4
|
+
require 'rspec-benchmark'
|
5
|
+
require 'rack/test'
|
6
|
+
require 'async/rspec'
|
7
|
+
require 'rack/builder'
|
8
|
+
|
9
|
+
require 'simplecov'
|
10
|
+
SimpleCov.start
|
11
|
+
|
12
|
+
ENV['DB_URL'] = 'sqlite::memory:'
|
13
|
+
$app = Rack::Builder.parse_file('config.ru')
|
14
|
+
|
15
|
+
module Rack::Test::JHelpers
|
16
|
+
def app = $app
|
17
|
+
end
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
config.include Rack::Test::Methods
|
21
|
+
config.include Rack::Test::JHelpers
|
22
|
+
config.include RSpec::Benchmark::Matchers
|
23
|
+
config.include_context Async::RSpec::Reactor
|
24
|
+
|
25
|
+
config.before(:each) do
|
26
|
+
header 'Host', 'localhost'
|
27
|
+
end
|
28
|
+
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stack-service-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- Artyom B
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -208,16 +208,30 @@ dependencies:
|
|
208
208
|
version: 0.5.1
|
209
209
|
description:
|
210
210
|
email:
|
211
|
-
executables:
|
211
|
+
executables:
|
212
|
+
- ssbase
|
212
213
|
extensions: []
|
213
214
|
extra_rdoc_files: []
|
214
215
|
files:
|
216
|
+
- bin/ssbase
|
215
217
|
- lib/stack-service-base.rb
|
218
|
+
- lib/stack-service-base/command_init.rb
|
219
|
+
- lib/stack-service-base/command_line.rb
|
216
220
|
- lib/stack-service-base/database.rb
|
217
221
|
- lib/stack-service-base/fiber_pool.rb
|
218
222
|
- lib/stack-service-base/logging.rb
|
219
223
|
- lib/stack-service-base/nats_service.rb
|
220
224
|
- lib/stack-service-base/open_telemetry.rb
|
225
|
+
- lib/stack-service-base/project_template/gitlab-c/docker/Dockerfile.build
|
226
|
+
- lib/stack-service-base/project_template/gitlab-c/docker/local_build.sh
|
227
|
+
- lib/stack-service-base/project_template/home/docker/docker-compose.yml
|
228
|
+
- lib/stack-service-base/project_template/home/docker/ruby/Dockerfile
|
229
|
+
- lib/stack-service-base/project_template/home/src/Gemfile
|
230
|
+
- lib/stack-service-base/project_template/home/src/Gemfile.lock
|
231
|
+
- lib/stack-service-base/project_template/home/src/Rakefile
|
232
|
+
- lib/stack-service-base/project_template/home/src/config.ru
|
233
|
+
- lib/stack-service-base/project_template/home/src/specs/integration_spec.rb
|
234
|
+
- lib/stack-service-base/project_template/home/src/specs/spec_helper.rb
|
221
235
|
- lib/stack-service-base/prometheus.rb
|
222
236
|
- lib/stack-service-base/prometheus_parser.rb
|
223
237
|
- lib/stack-service-base/rack_helpers.rb
|