Skip to content

Commit 6a8f724

Browse files
committed
Automated releases.
1 parent cb5f29f commit 6a8f724

5 files changed

+97
-41
lines changed

.travis.yml

+26-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,29 @@
11
language: ruby
22
sudo: false
33
rvm:
4-
- 2.2.4
5-
- 2.3.1
6-
- jruby-9.0.5.0
4+
- 2.2.4
5+
- 2.3.1
6+
- jruby-9.0.5.0
7+
env:
8+
global:
9+
secure: FqQ00zkw2heLh5XafaMMv1LXgy+DBxumbcSI3c9iDlRvi4KZQ+n+NqSp/feVEIxSMzA9FmH7ZqTVJmsA5jByrk71WiguU8RZ7NSVzonlLZK0tQ9idwzPtvc38abJwWm3cR9TJlkNxUgQ2iHXLobo4zFSEK/4s0Ob9ddf3x4BUmo=
10+
deploy:
11+
- provider: rubygems
12+
api_key:
13+
secure: EbS3ZRtfqoKrQ3pMGfkx/pqUBVUaEJE+KjUAnAy4h+6BF/6ZsY2H5vtpuDB8ypQ7au1AF2QuEoZsQZkHPngyhJ7Ebtn7XFh0c5WAB+c+mM7bSsNN+ZU176cUgY5PkS9GZ3rBZ/MEW+YyKcUpTmk+ClDx/WmofRjPFSD4n0x350Y=
14+
gem: pact-mock_service
15+
on:
16+
tags: true
17+
repo: pact-foundation/pact-mock_service
18+
- provider: releases
19+
api_key:
20+
secure: O9g/8HkwonBZOthoN+NFCiZQZ+AyakmqMxb/HpuC/ZB79KZ6GTM0brr++Bm08RYLD2MX6+IC8dqA4vkl4D11VEd7TrtxdtS2huScDGTEntzPtRu2WDo4cm6/B9y/erp7Thalt08+V7dqsSBMN5FWf0c001WrG7qpdWs9BElxul8=
21+
file: pkg/*
22+
file_glob: true
23+
skip_cleanup: true
24+
on:
25+
tags: true
26+
repo: pact-foundation/pact-mock_service
27+
after_deploy:
28+
- bundle exec rake generate_release_notes[$TRAVIS_TAG]
29+
- bundle exec rake upload_release_notes[$TRAVIS_REPO_SLUG,$TRAVIS_TAG]

RELEASING.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
$ git add CHANGELOG.md lib/pact/mock_service/version.rb
1111
$ git commit -m "Releasing version X.Y.Z"
1212

13-
3. Release:
13+
4. Tag and push
1414

15-
$ bundle exec rake release
15+
$ git tag -a vX.Y.Z -m "Releasing version X.Y.Z" && git push origin --tags

packaging/RELEASE_NOTES.md.template

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
Standalone release of the Pact Mock Service.
2+
3+
To install and run on OSX:
4+
5+
```
6+
curl -LO https://github.com/bethesque/pact-mock_service/releases/download/<TAG_NAME>/pact-mock-service-<PACKAGE_VERSION>-osx.tar.gz
7+
tar xzf pact-mock-service-<PACKAGE_VERSION>-osx.tar.gz
8+
cd pact-mock-service-<PACKAGE_VERSION>-osx/bin
9+
./pact-mock-service -p 1234
10+
```
11+
12+
To install and run on Linux 64 bit:
13+
14+
```
15+
curl -LO https://github.com/bethesque/pact-mock_service/releases/download/<TAG_NAME>/pact-mock-service-<PACKAGE_VERSION>-linux-x86_64.tar.gz
16+
tar xzf pact-mock-service-<PACKAGE_VERSION>-linux-x86_64.tar.gz
17+
cd pact-mock-service-<PACKAGE_VERSION>-linux-x86_64/bin
18+
./pact-mock-service -p 1234
19+
```
20+
21+
To install and run on Linux 32 bit:
22+
23+
```
24+
curl -LO https://github.com/bethesque/pact-mock_service/releases/download/<TAG_NAME>/pact-mock-service-<PACKAGE_VERSION>-linux-x86.tar.gz
25+
tar xzf pact-mock-service-<PACKAGE_VERSION>-linux-x86.tar.gz
26+
cd pact-mock-service-<PACKAGE_VERSION>-linux-x86/bin
27+
./pact-mock-service -p 1234
28+
```
29+
30+
To install and run on Windows:
31+
32+
Download package, unzip, cd to pact-mock-service-<PACKAGE_VERSION>-win32 and then run:
33+
34+
```
35+
$ .\bin\pact-mock-service.bat -p 1234
36+
```

packaging/RELEASE_NOTES_TEMPLATE.txt

-36
This file was deleted.

tasks/release.rake

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
RELEASE_NOTES_TEMPLATE_PATH = "packaging/RELEASE_NOTES.md.template"
2+
RELEASE_NOTES_PATH = "build/RELEASE_NOTES.md"
3+
4+
desc 'Generate release notes'
5+
task :generate_release_notes, [:tag] do | t, args |
6+
require 'fileutils'
7+
FileUtils.mkdir_p File.dirname(RELEASE_NOTES_PATH)
8+
tag = args[:tag]
9+
release_notes_template = File.read(RELEASE_NOTES_TEMPLATE_PATH)
10+
release_notes_content = release_notes_template.gsub("<TAG_NAME>", tag)
11+
release_notes_content = release_notes_content.gsub("<PACKAGE_VERSION>", VERSION)
12+
File.open(RELEASE_NOTES_PATH, "w") { |file| file << release_notes_content }
13+
end
14+
15+
desc 'Upload release notes'
16+
task :upload_release_notes, [:repository_slug, :tag] do |t, args |
17+
require 'octokit'
18+
stack = Faraday::RackBuilder.new do |builder|
19+
builder.response :logger do | logger |
20+
logger.filter(/(Authorization: )(.*)/,'\1[REMOVED]')
21+
end
22+
builder.use Octokit::Response::RaiseError
23+
builder.adapter Faraday.default_adapter
24+
end
25+
Octokit.middleware = stack
26+
client = Octokit::Client.new(access_token: ENV.fetch('GITHUB_ACCESS_TOKEN'))
27+
repository_slug = args[:repository_slug]
28+
tag = args[:tag]
29+
release_name = "#{PACKAGE_NAME}-#{VERSION}"
30+
release_notes_content = File.read(RELEASE_NOTES_PATH)
31+
release = client.release_for_tag repository_slug, tag
32+
client.update_release release.url, name: release_name, body: release_notes_content
33+
end

0 commit comments

Comments
 (0)