1+ name : Ruby Release
2+
3+ on :
4+ push :
5+ tags :
6+ - ' ruby-*'
7+
8+ permissions :
9+ contents : write
10+
11+ jobs :
12+ ruby-release-linux :
13+ needs : [ 'ruby-release' ]
14+ name : Release Linux gem amd64
15+ runs-on : ubuntu-x64-large
16+ steps :
17+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
18+ with :
19+ persist-credentials : false
20+ - run : make gem/linux/amd64
21+ - uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
22+ with :
23+ name : ${{ github.sha }}-ruby-amd64
24+ path : pyroscope_ffi/ruby/pkg/*.gem
25+
26+ - name : Upload release artifact
27+ uses : korniltsev/actions-upload-release-asset@a7f1a48a96ff80f206fd26bdbfcf81539d44fa5e # TODO(korniltsev): get rid of this fork
28+ env :
29+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
30+ with :
31+ upload_url : ${{ needs.ruby-release.outputs.upload_url }}
32+ asset_path : " pyroscope_ffi/ruby/pkg/*.gem"
33+
34+ ruby-release-linux-arm :
35+ needs : [ 'ruby-release' ]
36+ name : Release Linux gem arm64
37+ runs-on : ubuntu-arm64-large
38+ steps :
39+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
40+ with :
41+ persist-credentials : false
42+ - run : make gem/linux/arm64
43+ - uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
44+ with :
45+ name : ${{ github.sha }}-ruby-arm64
46+ path : pyroscope_ffi/ruby/pkg/*.gem
47+
48+ - name : Upload release artifact
49+ uses : korniltsev/actions-upload-release-asset@a7f1a48a96ff80f206fd26bdbfcf81539d44fa5e # TODO(korniltsev): get rid of this fork
50+ env :
51+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
52+ with :
53+ upload_url : ${{ needs.ruby-release.outputs.upload_url }}
54+ asset_path : " pyroscope_ffi/ruby/pkg/*.gem"
55+
56+ ruby-release-macos :
57+ needs : [ 'ruby-release' ]
58+ strategy :
59+ fail-fast : false
60+ matrix :
61+ include :
62+ - macos-version : " 14"
63+ target : x86_64-apple-darwin
64+ mk-arch : amd64
65+ - macos-version : " 14"
66+ target : aarch64-apple-darwin
67+ mk-arch : arm64
68+
69+ name : macOS - ${{ matrix.target }}
70+ runs-on : macos-${{ matrix.macos-version }}
71+
72+ steps :
73+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
74+ with :
75+ persist-credentials : false
76+ - uses : ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.235.0
77+ with :
78+ ruby-version : ' 3.1'
79+ - uses : dtolnay/rust-toolchain@888c2e1ea69ab0d4330cbf0af1ecc7b68f368cc1
80+ with :
81+ toolchain : 1.85.0
82+ target : ${{ matrix.target }}
83+
84+ - run : make pyroscope_ffi/clean gem/mac/${{ matrix.mk-arch }}
85+
86+ - uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
87+ with :
88+ name : ${{ github.sha }}-ruby-mac-${{ matrix.target }}
89+ path : pyroscope_ffi/ruby/pkg/*.gem
90+
91+ - name : Upload release artifact
92+ uses : korniltsev/actions-upload-release-asset@a7f1a48a96ff80f206fd26bdbfcf81539d44fa5e # TODO(korniltsev): get rid of this fork
93+ env :
94+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
95+ with :
96+ upload_url : ${{ needs.ruby-release.outputs.upload_url }}
97+ asset_path : " pyroscope_ffi/ruby/pkg/*.gem"
98+
99+ ruby-release-source :
100+ needs : [ 'ruby-release' ]
101+ name : source
102+ runs-on : ubuntu-x64-small
103+
104+ steps :
105+ - uses : actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
106+ with :
107+ persist-credentials : false
108+
109+ - uses : ruby/setup-ruby@dffc446db9ba5a0c4446edb5bca1c5c473a806c5 # v1.235.0
110+ with :
111+ ruby-version : ' 3.1'
112+
113+ - name : Install bundles
114+ run : bundle
115+ working-directory : pyroscope_ffi/ruby
116+
117+ - name : Build source gem
118+ run : rake source:gem
119+ working-directory : pyroscope_ffi/ruby
120+
121+ - uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
122+ with :
123+ name : ${{ github.sha }}-ruby-source
124+ path : pyroscope_ffi/ruby/pkg/*.gem
125+
126+ - name : Upload release artifact
127+ uses : korniltsev/actions-upload-release-asset@a7f1a48a96ff80f206fd26bdbfcf81539d44fa5e # TODO(korniltsev): get rid of this fork
128+ env :
129+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
130+ with :
131+ upload_url : ${{ needs.ruby-release.outputs.upload_url }}
132+ asset_path : " pyroscope_ffi/ruby/pkg/*.gem"
133+
134+ ruby-release :
135+ name : Ruby Gem
136+ runs-on : ubuntu-x64-small
137+ outputs :
138+ upload_url : ${{ steps.auto-release.outputs.upload_url }}
139+ steps :
140+ - id : auto-release
141+ uses : " marvinpinto/action-automatic-releases@919008cf3f741b179569b7a6fb4d8860689ab7f0" # v1.2.1 TODO(korniltsev): get rid of this, this one is unmaintained
142+ with :
143+ repo_token : " ${{ secrets.GITHUB_TOKEN }}"
144+ automatic_release_tag : " ${{ github.ref_name }}"
145+ title : " Ruby Gem: ${{ github.ref_name }}"
146+ draft : true
147+ prerelease : false
0 commit comments