File tree 4 files changed +109
-0
lines changed
4 files changed +109
-0
lines changed Original file line number Diff line number Diff line change
1
+ #! /bin/sh
2
+
3
+ set -e
4
+
5
+ NAME=mongo
6
+ RELEASE_NAME=mongo-ruby-driver-release
7
+ VERSION_REQUIRE=mongo/version
8
+ VERSION_CONSTANT_NAME=Mongo::VERSION
9
+
10
+ if ! test -f gem-private_key.pem; then
11
+ echo " gem-private_key.pem missing - cannot release" 1>&2
12
+ exit 1
13
+ fi
14
+
15
+ VERSION=` ruby -Ilib -r$VERSION_REQUIRE -e " puts $VERSION_CONSTANT_NAME " `
16
+
17
+ echo " Releasing $NAME $VERSION "
18
+ echo
19
+
20
+ for variant in mri; do
21
+ docker build -f release/$variant /Dockerfile -t $RELEASE_NAME -$variant .
22
+
23
+ docker kill $RELEASE_NAME -$variant || true
24
+ docker container rm $RELEASE_NAME -$variant || true
25
+
26
+ docker run -d --name $RELEASE_NAME -$variant -it $RELEASE_NAME -$variant
27
+
28
+ docker exec $RELEASE_NAME -$variant /app/release/$variant /build.sh
29
+
30
+ if test $variant = jruby; then
31
+ docker cp $RELEASE_NAME -$variant :/app/pkg/$NAME -$VERSION -java.gem .
32
+ else
33
+ docker cp $RELEASE_NAME -$variant :/app/pkg/$NAME -$VERSION .gem .
34
+ fi
35
+
36
+ docker kill $RELEASE_NAME -$variant
37
+ done
38
+
39
+ echo
40
+ echo Built: $NAME -$VERSION .gem
41
+ # echo Built: $NAME-$VERSION-java.gem
42
+ echo
43
+
44
+ git tag -a v$VERSION -m " Tagging release: $VERSION "
45
+ git push origin v$VERSION
46
+
47
+ gem push $NAME -$VERSION .gem
48
+ # gem push $NAME-$VERSION-java.gem
Original file line number Diff line number Diff line change
1
+ FROM debian:10
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive
4
+
5
+ RUN apt-get update && \
6
+ apt-get -y install git ruby-bundler make gcc ruby-dev
7
+
8
+ WORKDIR /app
9
+
10
+ COPY . .
Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+
3
+ set -e
4
+
5
+ rm -f * .lock
6
+ rm -f * .gem pkg/* .gem
7
+ bundle install --without=test
8
+ # Uses bundler gem tasks, outputs the built gem file to pkg subdir.
9
+ rake build
10
+ /app/release/verify-signature.sh pkg/* .gem
Original file line number Diff line number Diff line change
1
+ #! /bin/bash
2
+
3
+ set -ex
4
+
5
+ gem=" $1 "
6
+ if test -z " $gem " ; then
7
+ echo " Usage: ` basename $0 ` /path/to/built.gem" 1>&2
8
+ exit 1
9
+ fi
10
+
11
+ gem cert --add gem-public_cert.pem
12
+ gem install -P HighSecurity $gem
13
+
14
+ exit
15
+
16
+ # The verification below does not work.
17
+ # https://github.com/rubygems/rubygems/issues/3680
18
+
19
+ # https://docs.ruby-lang.org/en/2.7.0/Gem/Security.html
20
+
21
+ tar xf $gem
22
+
23
+ # Grab the public key from the gemspec
24
+
25
+ gem spec $gem cert_chain | \
26
+ ruby -ryaml -e ' puts YAML.load(STDIN)' > actual_public_key.crt
27
+
28
+ for file in data.tar.gz metadata.tar.gz; do
29
+ # Generate a SHA1 hash of the data.tar.gz
30
+
31
+ openssl dgst -sha1 < $file > actual.hash
32
+
33
+ # Verify the signature
34
+
35
+ openssl rsautl -verify -inkey actual_public_key.crt -certin \
36
+ -in $file .sig > signed.hash
37
+
38
+ # Compare your hash to the verified hash
39
+
40
+ diff -s actual.hash signed.hash
41
+ done
You can’t perform that action at this time.
0 commit comments