Skip to content

Commit de0c911

Browse files
authored
Add staging benchmarking (#2873)
1 parent 51aa934 commit de0c911

File tree

2 files changed

+36
-16
lines changed

2 files changed

+36
-16
lines changed

.github/workflows/benchmark.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ jobs:
5050

5151
- name: Archive benchmark report
5252
run: |
53-
GH_REF=${{github.head_ref}} GH_EVENT=${{github.event_name}} bundle exec rake benchmark:archive
53+
GH_REPO=${{github.repository}} GH_REF=${{github.head_ref}} GH_EVENT=${{github.event_name}} bundle exec rake benchmark:archive
5454
5555
- name: Upload benchmark metrics
5656
run: |
57-
GH_REF=${{github.head_ref}} GH_EVENT=${{github.event_name}} bundle exec rake benchmark:put-metrics
57+
GH_REPO=${{github.repository}} GH_REF=${{github.head_ref}} GH_EVENT=${{github.event_name}} bundle exec rake benchmark:put-metrics

tasks/benchmark.rake

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,29 @@ task 'benchmark:archive' do
1313
require 'aws-sdk-s3'
1414
require 'securerandom'
1515

16+
puts 'Archiving benchmark report from GH with '\
17+
"repo: #{ENV['GH_REPO']}, ref: #{ENV['GH_REF']}, event: #{ENV['GH_EVENT']}"
18+
folder =
19+
if ENV['GH_EVENT'] == 'pull_request'
20+
ref = ENV['GH_REF']
21+
if ENV['GH_REPO'] == 'aws/aws-sdk-ruby-staging'
22+
"staging-pr/#{ref}"
23+
else
24+
"pr/#{ref}"
25+
end
26+
else
27+
'release'
28+
end
29+
key = "#{folder}/#{Time.now.strftime('%Y-%m-%d')}/benchmark_#{SecureRandom.uuid}.json"
1630

17-
puts "Archiving benchmark report from GH with: #{ENV['GH_REF']}, #{ENV['GH_EVENT']}"
18-
ref = ENV['GH_REF'] || "version-3"
19-
event = ENV['GH_EVENT'] || 'push'
20-
client = Aws::S3::Client.new
21-
22-
key = "#{event == 'pull_request' ? 'pr/' + ref : 'release'}/#{Time.now.strftime('%Y-%m-%d')}/benchmark_#{SecureRandom.uuid}.json"
2331
puts "Uploading report to: #{key}"
24-
client.put_object(bucket: 'aws-sdk-ruby-performance-benchmark-archive', key: key, body: File.read('benchmark_report.json'))
25-
puts "Upload complete"
32+
client = Aws::S3::Client.new
33+
client.put_object(
34+
bucket: 'aws-sdk-ruby-performance-benchmark-archive',
35+
key: key,
36+
body: File.read('benchmark_report.json')
37+
)
38+
puts 'Upload complete'
2639
end
2740

2841
desc 'Upload benchmarking data to cloudwatch'
@@ -31,7 +44,16 @@ task 'benchmark:put-metrics' do
3144
require 'aws-sdk-cloudwatch'
3245
require_relative '../benchmark/metrics'
3346

34-
event = ENV['GH_EVENT'] == 'pull_request' ? 'pr' : 'release'
47+
event =
48+
if ENV['GH_EVENT'] == 'pull_request'
49+
if ENV['GH_REPO'] == 'aws/aws-sdk-ruby-staging'
50+
'staging-pr'
51+
else
52+
'pr'
53+
end
54+
else
55+
'release'
56+
end
3557
report = JSON.parse(File.read('benchmark_report.json'))
3658
target = report['ruby_engine'] + "-" + report['ruby_version'].split('.').first(2).join('.')
3759

@@ -44,14 +66,12 @@ task 'benchmark:put-metrics' do
4466
env: report['execution_env']
4567
}
4668

47-
puts "Uploading benchmarking metrics"
48-
69+
puts 'Uploading benchmarking metrics'
4970
client = Aws::CloudWatch::Client.new
50-
51-
benchmark_data = report["benchmark"]
71+
benchmark_data = report['benchmark']
5272
benchmark_data.each do |gem_name, gem_data|
5373
dims = report_dims.merge(gem: gem_name)
54-
gem_data.each do |k,v|
74+
gem_data.each do |k, v|
5575
Benchmark::Metrics.put_metric(client, dims, report['timestamp'] || Time.now, k, v)
5676
end
5777
end

0 commit comments

Comments
 (0)