Skip to content

Commit e385604

Browse files
committed
De-hardcode CI
1 parent 1204bfe commit e385604

File tree

1 file changed

+72
-24
lines changed

1 file changed

+72
-24
lines changed

.github/workflows/build.yml

Lines changed: 72 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,36 +11,50 @@ jobs:
1111
uses: actions/checkout@v2
1212
- name: Bundle
1313
run: bundle install
14-
- name: Set Node.js version
15-
run: |
16-
bundle exec ruby -e 'puts Libv8Node::NODE_VERSION' | tee node_version
14+
- name: Set metadata
15+
id: set-metadata
16+
run: |
17+
bundle exec ruby -e 'puts RUBY_PLATFORM' | tee ruby_platform
18+
echo "::set-output name=RUBY_PLATFORM::$(cat ruby_platform)"
19+
bundle exec ruby -e 'puts Gem.platforms.last.to_s' | tee gem_platform
20+
echo "::set-output name=GEM_PLATFORM::$(cat gem_platform)"
21+
bundle exec ruby -e 'puts Libv8::Node::VERSION' | tee gem_version
22+
echo "::set-output name=GEM_VERSION::$(cat gem_version)"
23+
bundle exec ruby -e 'puts Libv8::Node::NODE_VERSION' | tee node_version
24+
echo "::set-output name=NODE_VERSION::$(cat node_version)"
25+
bundle exec ruby -e 'puts Libv8::Node::LIBV8_VERSION' | tee libv8_version
26+
echo "::set-output name=LIBV8_VERSION::$(cat libv8_version)"
1727
- name: Download Node.js
1828
run: |
19-
./download-node 14.14.0
29+
./download-node ${{ steps.set-metadata.outputs.NODE_VERSION }}
2030
- name: Extract Node.js
2131
run: |
22-
./extract-node 14.14.0
32+
./extract-node ${{ steps.set-metadata.outputs.NODE_VERSION }}
33+
- name: Validate V8 version
34+
run: |
35+
ruby -e 'h = File.read("src/node-14.14.0/deps/v8/include/v8-version.h"); eval h.each_line.with_object([]) { |l, e| l =~ /#define (V8_[A-Z_]+)\s(\d+)/ && e << "#{$1} = #{$2}" }.join(";"); puts "#{V8_MAJOR_VERSION}.#{V8_MINOR_VERSION}.#{V8_BUILD_NUMBER}.#{V8_PATCH_LEVEL}"' | tee libv8_version_h
36+
diff libv8_version_h libv8_version
2337
- name: Build V8
2438
run: |
25-
./build-libv8 14.14.0
39+
./build-libv8 ${{ steps.set-metadata.outputs.NODE_VERSION }}
2640
- name: Build Monolith
2741
run: |
28-
./build-monolith 14.14.0
42+
./build-monolith ${{ steps.set-metadata.outputs.NODE_VERSION }}
2943
- name: Inject V8
3044
run: |
31-
./inject-libv8 14.14.0
45+
./inject-libv8 ${{ steps.set-metadata.outputs.NODE_VERSION }}
3246
- name: Build gem
3347
run: |
3448
bundle exec rake binary
3549
- name: Upload V8
3650
uses: actions/upload-artifact@v1
3751
with:
38-
name: v8-x86_64-darwin19
52+
name: v8-${{ steps.set-metadata.outputs.LIBV8_VERSION }}-${{ steps.set-metadata.outputs.GEM_PLATFORM }}
3953
path: vendor
4054
- name: Upload gem
4155
uses: actions/upload-artifact@v1
4256
with:
43-
name: gem-x86_64-darwin19
57+
name: gem-${{ steps.set-metadata.outputs.GEM_VERSION }}-${{ steps.set-metadata.outputs.GEM_PLATFORM }}
4458
path: pkg
4559
build-linux-glibc:
4660
name: Build (Linux glibc)
@@ -51,33 +65,50 @@ jobs:
5165
uses: actions/checkout@v2
5266
- name: Bundle
5367
run: bundle install
68+
- name: Set metadata
69+
id: set-metadata
70+
run: |
71+
bundle exec ruby -e 'puts RUBY_PLATFORM' | tee ruby_platform
72+
echo "::set-output name=RUBY_PLATFORM::$(cat ruby_platform)"
73+
bundle exec ruby -e 'puts Gem.platforms.last.to_s' | tee gem_platform
74+
echo "::set-output name=GEM_PLATFORM::$(cat gem_platform)"
75+
bundle exec ruby -e 'puts Libv8::Node::VERSION' | tee gem_version
76+
echo "::set-output name=GEM_VERSION::$(cat gem_version)"
77+
bundle exec ruby -e 'puts Libv8::Node::NODE_VERSION' | tee node_version
78+
echo "::set-output name=NODE_VERSION::$(cat node_version)"
79+
bundle exec ruby -e 'puts Libv8::Node::LIBV8_VERSION' | tee libv8_version
80+
echo "::set-output name=LIBV8_VERSION::$(cat libv8_version)"
5481
- name: Download Node.js
5582
run: |
56-
./download-node 14.14.0
83+
./download-node ${{ steps.set-metadata.outputs.NODE_VERSION }}
5784
- name: Extract Node.js
5885
run: |
59-
./extract-node 14.14.0
86+
./extract-node ${{ steps.set-metadata.outputs.NODE_VERSION }}
87+
- name: Validate V8 version
88+
run: |
89+
ruby -e 'h = File.read("src/node-14.14.0/deps/v8/include/v8-version.h"); eval h.each_line.with_object([]) { |l, e| l =~ /#define (V8_[A-Z_]+)\s(\d+)/ && e << "#{$1} = #{$2}" }.join(";"); puts "#{V8_MAJOR_VERSION}.#{V8_MINOR_VERSION}.#{V8_BUILD_NUMBER}.#{V8_PATCH_LEVEL}"' | tee libv8_version_h
90+
diff libv8_version_h libv8_version
6091
- name: Build V8
6192
run: |
62-
./build-libv8 14.14.0
93+
./build-libv8 ${{ steps.set-metadata.outputs.NODE_VERSION }}
6394
- name: Build Monolith
6495
run: |
65-
./build-monolith 14.14.0
96+
./build-monolith ${{ steps.set-metadata.outputs.NODE_VERSION }}
6697
- name: Inject V8
6798
run: |
68-
./inject-libv8 14.14.0
99+
./inject-libv8 ${{ steps.set-metadata.outputs.NODE_VERSION }}
69100
- name: Build gem
70101
run: |
71102
bundle exec rake binary
72103
- name: Upload V8
73104
uses: actions/upload-artifact@v1
74105
with:
75-
name: v8-x86_64-linux-glibc
106+
name: v8-${{ steps.set-metadata.outputs.LIBV8_VERSION }}-${{ steps.set-metadata.outputs.GEM_PLATFORM }}
76107
path: vendor
77108
- name: Upload gem
78109
uses: actions/upload-artifact@v1
79110
with:
80-
name: gem-x86_64-linux-glibc
111+
name: gem-${{ steps.set-metadata.outputs.GEM_VERSION }}-${{ steps.set-metadata.outputs.GEM_PLATFORM }}
81112
path: pkg
82113
build-linux-musl:
83114
name: Build (Linux musl)
@@ -90,21 +121,38 @@ jobs:
90121
uses: actions/checkout@v2
91122
- name: Bundle
92123
run: bundle install
124+
- name: Set metadata
125+
id: set-metadata
126+
run: |
127+
bundle exec ruby -e 'puts RUBY_PLATFORM' | tee ruby_platform
128+
echo "::set-output name=RUBY_PLATFORM::$(cat ruby_platform)"
129+
bundle exec ruby -e 'puts Gem.platforms.last.to_s' | tee gem_platform
130+
echo "::set-output name=GEM_PLATFORM::$(cat gem_platform)"
131+
bundle exec ruby -e 'puts Libv8::Node::VERSION' | tee gem_version
132+
echo "::set-output name=GEM_VERSION::$(cat gem_version)"
133+
bundle exec ruby -e 'puts Libv8::Node::NODE_VERSION' | tee node_version
134+
echo "::set-output name=NODE_VERSION::$(cat node_version)"
135+
bundle exec ruby -e 'puts Libv8::Node::LIBV8_VERSION' | tee libv8_version
136+
echo "::set-output name=LIBV8_VERSION::$(cat libv8_version)"
93137
- name: Download Node.js
94138
run: |
95-
./download-node 14.14.0
139+
./download-node ${{ steps.set-metadata.outputs.NODE_VERSION }}
96140
- name: Extract Node.js
97141
run: |
98-
./extract-node 14.14.0
142+
./extract-node ${{ steps.set-metadata.outputs.NODE_VERSION }}
143+
- name: Validate V8 version
144+
run: |
145+
ruby -e 'h = File.read("src/node-14.14.0/deps/v8/include/v8-version.h"); eval h.each_line.with_object([]) { |l, e| l =~ /#define (V8_[A-Z_]+)\s(\d+)/ && e << "#{$1} = #{$2}" }.join(";"); puts "#{V8_MAJOR_VERSION}.#{V8_MINOR_VERSION}.#{V8_BUILD_NUMBER}.#{V8_PATCH_LEVEL}"' | tee libv8_version_h
146+
diff libv8_version_h libv8_version
99147
- name: Build V8
100148
run: |
101-
./build-libv8 14.14.0
149+
./build-libv8 ${{ steps.set-metadata.outputs.NODE_VERSION }}
102150
- name: Build Monolith
103151
run: |
104-
./build-monolith 14.14.0
152+
./build-monolith ${{ steps.set-metadata.outputs.NODE_VERSION }}
105153
- name: Inject V8
106154
run: |
107-
./inject-libv8 14.14.0
155+
./inject-libv8 ${{ steps.set-metadata.outputs.NODE_VERSION }}
108156
- name: Build gem
109157
run: |
110158
bundle exec rake binary
@@ -116,10 +164,10 @@ jobs:
116164
- name: Upload V8
117165
uses: actions/upload-artifact@v1
118166
with:
119-
name: v8-x86_64-linux-musl
167+
name: v8-${{ steps.set-metadata.outputs.LIBV8_VERSION }}-${{ steps.set-metadata.outputs.GEM_PLATFORM }}
120168
path: vendor
121169
- name: Upload gem
122170
uses: actions/upload-artifact@v1
123171
with:
124-
name: gem-x86_64-linux-musl
172+
name: gem-${{ steps.set-metadata.outputs.GEM_VERSION }}-${{ steps.set-metadata.outputs.GEM_PLATFORM }}
125173
path: pkg

0 commit comments

Comments
 (0)