File tree Expand file tree Collapse file tree 4 files changed +109
-0
lines changed Expand file tree Collapse file tree 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