pact_broker-client 1.28.1 → 1.28.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/release_gem.yml +27 -9
- data/CHANGELOG.md +10 -0
- data/README.md +1 -3
- data/lib/pact_broker/client/cli/broker.rb +5 -0
- data/lib/pact_broker/client/create_tag.rb +12 -14
- data/lib/pact_broker/client/version.rb +1 -1
- data/lib/pact_broker/client/versions/describe.rb +1 -1
- data/script/trigger-release.sh +23 -7
- data/spec/integration/create_version_tag_spec.rb +1 -1
- metadata +2 -3
- data/script/release-via-github-action.sh +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 75733826388c0e949cc668a58d42f2020383afab1a5434f0357a3f8e4b807042
|
4
|
+
data.tar.gz: 536c574d886e62b61b76ec9d6e19c20719fb61facf5d75537cf882841515c364
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96ddbb368e99906b3a7b8d69d118283edfad013e8ed605af7430cca7babcbfe0f10bb1ffd43b7dec98cbe134368d48f811b04454aa60baa431eb81ac4b2856bb
|
7
|
+
data.tar.gz: 971e100f31ec4a5ea338e60d6f6e0f13f924430f98b40d637e23d2d80be39c243ac4ea0cd9905515563de486d3cb35b7e79993a92fea0884f499e987381d55b3
|
@@ -3,23 +3,41 @@ name: Release gem
|
|
3
3
|
on:
|
4
4
|
repository_dispatch:
|
5
5
|
types:
|
6
|
-
- release
|
6
|
+
- release-triggered
|
7
7
|
|
8
8
|
jobs:
|
9
|
-
|
9
|
+
release:
|
10
10
|
runs-on: ubuntu-latest
|
11
|
+
outputs:
|
12
|
+
gem_name: ${{ steps.release.outputs.gem_name }}
|
13
|
+
version: ${{ steps.release.outputs.version }}
|
14
|
+
increment: ${{ steps.release.outputs.increment }}
|
11
15
|
steps:
|
12
16
|
- uses: actions/checkout@v2
|
13
17
|
with:
|
14
18
|
fetch-depth: 0
|
15
|
-
- uses: pact-foundation/release-gem@v0.0.
|
19
|
+
- uses: pact-foundation/release-gem@v0.0.10
|
20
|
+
id: release
|
16
21
|
env:
|
17
22
|
GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_API_KEY }}'
|
18
23
|
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
|
19
24
|
INCREMENT: '${{ github.event.client_payload.increment }}'
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
repository: pact-foundation/pact-ruby-cli
|
25
|
-
|
25
|
+
dispatch:
|
26
|
+
needs: release
|
27
|
+
strategy:
|
28
|
+
matrix:
|
29
|
+
repository: [pact-foundation/pact-ruby-cli, pact-foundation/pact-ruby-standalone]
|
30
|
+
runs-on: ubuntu-latest
|
31
|
+
steps:
|
32
|
+
- name: Notify ${{ matrix.repository }} of gem release
|
33
|
+
uses: peter-evans/repository-dispatch@v1
|
34
|
+
with:
|
35
|
+
token: ${{ secrets.GHTOKENFORPACTCLIRELEASE }}
|
36
|
+
repository: ${{ matrix.repository }}
|
37
|
+
event-type: gem-released
|
38
|
+
client-payload: |
|
39
|
+
{
|
40
|
+
"name": "${{ needs.release.outputs.gem_name }}",
|
41
|
+
"version": "${{ needs.release.outputs.version }}",
|
42
|
+
"increment": "${{ needs.release.outputs.increment }}"
|
43
|
+
}
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
<a name="v1.28.2"></a>
|
2
|
+
### v1.28.2 (2020-07-17)
|
3
|
+
|
4
|
+
|
5
|
+
#### Bug Fixes
|
6
|
+
|
7
|
+
* **create-version-tag**
|
8
|
+
* raise an error if the version does not exist rather than automatically creating it. ([2ed7a55](/../../commit/2ed7a55))
|
9
|
+
|
10
|
+
|
1
11
|
<a name="v1.28.0"></a>
|
2
12
|
### v1.28.0 (2020-07-12)
|
3
13
|
|
data/README.md
CHANGED
@@ -42,13 +42,11 @@ Publish pacts to a Pact Broker.
|
|
42
42
|
### create-version-tag
|
43
43
|
|
44
44
|
```
|
45
|
-
Usage:
|
46
|
-
pact-broker create-version-tag -a, --pacticipant=PACTICIPANT -b, --broker-base-url=BROKER_BASE_URL -e, --version=VERSION
|
47
|
-
|
48
45
|
Options:
|
49
46
|
-a, --pacticipant=PACTICIPANT # The pacticipant name
|
50
47
|
-e, --version=VERSION # The pacticipant version
|
51
48
|
-t, [--tag=TAG] # Tag name for pacticipant version. Can be specified multiple times.
|
49
|
+
[--auto-create-version], [--no-auto-create-version] # Automatically create the pacticipant version if it does not exist. Default: false
|
52
50
|
-g, [--tag-with-git-branch], [--no-tag-with-git-branch] # Tag pacticipant version with the name of the current git branch. Default: false
|
53
51
|
-b, --broker-base-url=BROKER_BASE_URL # The base URL of the Pact Broker
|
54
52
|
-u, [--broker-username=BROKER_USERNAME] # Pact Broker basic auth username
|
@@ -8,6 +8,7 @@ module PactBroker
|
|
8
8
|
class PactPublicationError < ::Thor::Error; end
|
9
9
|
class WebhookCreationError < ::Thor::Error; end
|
10
10
|
class AuthError < ::Thor::Error; end
|
11
|
+
class VersionCreationError < ::Thor::Error; end
|
11
12
|
|
12
13
|
class Broker < CustomThor
|
13
14
|
desc 'can-i-deploy', ''
|
@@ -64,6 +65,7 @@ module PactBroker
|
|
64
65
|
method_option :pacticipant, required: true, aliases: "-a", desc: "The pacticipant name"
|
65
66
|
method_option :version, required: true, aliases: "-e", desc: "The pacticipant version"
|
66
67
|
method_option :tag, aliases: "-t", type: :array, banner: "TAG", desc: "Tag name for pacticipant version. Can be specified multiple times."
|
68
|
+
method_option :auto_create_version, type: :boolean, default: false, desc: "Automatically create the pacticipant version if it does not exist. Default: false"
|
67
69
|
method_option :tag_with_git_branch, aliases: "-g", type: :boolean, default: false, required: false, desc: "Tag pacticipant version with the name of the current git branch. Default: false"
|
68
70
|
method_option :broker_base_url, required: true, aliases: "-b", desc: "The base URL of the Pact Broker"
|
69
71
|
method_option :broker_username, aliases: "-u", desc: "Pact Broker basic auth username"
|
@@ -80,7 +82,10 @@ module PactBroker
|
|
80
82
|
options.pacticipant,
|
81
83
|
options.version,
|
82
84
|
tags,
|
85
|
+
options.auto_create_version,
|
83
86
|
pact_broker_client_options)
|
87
|
+
rescue PactBroker::Client::Error => e
|
88
|
+
raise VersionCreationError.new(e.message)
|
84
89
|
end
|
85
90
|
|
86
91
|
method_option :pacticipant, required: true, aliases: "-a", desc: "The name of the pacticipant that the version belongs to."
|
@@ -6,30 +6,22 @@ module PactBroker
|
|
6
6
|
module Client
|
7
7
|
class CreateTag
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
def initialize success, message = nil
|
13
|
-
@success = success
|
14
|
-
@message = message
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.call(pact_broker_base_url, pacticipant_name, version, tags, pact_broker_client_options={})
|
19
|
-
new(pact_broker_base_url, pacticipant_name, version, tags, pact_broker_client_options).call
|
9
|
+
def self.call(pact_broker_base_url, pacticipant_name, version, tags, auto_create_version, pact_broker_client_options={})
|
10
|
+
new(pact_broker_base_url, pacticipant_name, version, tags, auto_create_version, pact_broker_client_options).call
|
20
11
|
end
|
21
12
|
|
22
|
-
def initialize(pact_broker_base_url, pacticipant_name, version, tags, pact_broker_client_options)
|
13
|
+
def initialize(pact_broker_base_url, pacticipant_name, version, tags, auto_create_version, pact_broker_client_options)
|
23
14
|
@pact_broker_base_url = pact_broker_base_url
|
24
15
|
@pacticipant_name = pacticipant_name
|
25
16
|
@version = version
|
26
17
|
@tags = tags
|
18
|
+
@auto_create_version = auto_create_version
|
27
19
|
@pact_broker_client_options = pact_broker_client_options
|
28
20
|
end
|
29
21
|
|
30
22
|
def call
|
23
|
+
ensure_version_exists if !auto_create_version
|
31
24
|
tags.each do | tag |
|
32
|
-
# todo check that pacticipant exists first
|
33
25
|
$stdout.puts "Tagging #{pacticipant_name} version #{version} as #{tag}"
|
34
26
|
Retry.while_error do
|
35
27
|
pact_broker_client.pacticipants.versions.tag pacticipant: pacticipant_name, version: version, tag: tag
|
@@ -39,11 +31,17 @@ module PactBroker
|
|
39
31
|
|
40
32
|
private
|
41
33
|
|
42
|
-
attr_reader :pact_broker_base_url, :pacticipant_name, :version, :tags, :pact_broker_client_options
|
34
|
+
attr_reader :pact_broker_base_url, :pacticipant_name, :version, :tags, :auto_create_version, :pact_broker_client_options
|
43
35
|
|
44
36
|
def pact_broker_client
|
45
37
|
@pact_broker_client ||= PactBroker::Client::PactBrokerClient.new(base_url: pact_broker_base_url, client_options: pact_broker_client_options)
|
46
38
|
end
|
39
|
+
|
40
|
+
def ensure_version_exists
|
41
|
+
if pact_broker_client.pacticipants.versions.find(pacticipant: pacticipant_name, version: version).nil?
|
42
|
+
raise PactBroker::Client::Error.new("Could not create tag. Version #{version} of #{pacticipant_name} does not exist.")
|
43
|
+
end
|
44
|
+
end
|
47
45
|
end
|
48
46
|
end
|
49
47
|
end
|
data/script/trigger-release.sh
CHANGED
@@ -1,14 +1,30 @@
|
|
1
|
-
#!/bin/
|
1
|
+
#!/bin/sh
|
2
2
|
|
3
|
-
|
3
|
+
# Script to trigger release of gem via the pact-foundation/release-gem action
|
4
|
+
# Requires a Github API token with repo scope stored in the
|
5
|
+
# environment variable GITHUB_ACCESS_TOKEN_FOR_PF_RELEASES
|
6
|
+
|
7
|
+
: "${GITHUB_ACCESS_TOKEN_FOR_PF_RELEASES:?Please set environment variable GITHUB_ACCESS_TOKEN_FOR_PF_RELEASES}"
|
8
|
+
|
9
|
+
if [ -n "$1" ]; then
|
10
|
+
increment="\"${1}\""
|
11
|
+
else
|
12
|
+
increment="null"
|
13
|
+
fi
|
14
|
+
|
15
|
+
repository_slug=$(git remote get-url $(git remote show) | cut -d':' -f2 | sed 's/\.git//')
|
16
|
+
|
17
|
+
output=$(curl -v -X POST https://api.github.com/repos/${repository_slug}/dispatches \
|
4
18
|
-H 'Accept: application/vnd.github.everest-preview+json' \
|
5
|
-
-H "Authorization: Bearer $
|
6
|
-
-d
|
19
|
+
-H "Authorization: Bearer $GITHUB_ACCESS_TOKEN_FOR_PF_RELEASES" \
|
20
|
+
-d "{\"event_type\": \"release-triggered\", \"client_payload\": {\"increment\": ${increment}}}" 2>&1)
|
7
21
|
|
8
22
|
if ! echo "${output}" | grep "HTTP\/1.1 204" > /dev/null; then
|
9
|
-
echo "$output" | sed "s/${
|
10
|
-
echo "Failed to
|
23
|
+
echo "$output" | sed "s/${GITHUB_ACCESS_TOKEN_FOR_PF_RELEASES}/********/g"
|
24
|
+
echo "Failed to trigger release"
|
11
25
|
exit 1
|
26
|
+
else
|
27
|
+
echo "Release workflow triggered"
|
12
28
|
fi
|
13
29
|
|
14
|
-
echo "See https://github.com/
|
30
|
+
echo "See https://github.com/${repository_slug}/actions?query=workflow%3A%22Release+gem%22"
|
@@ -5,7 +5,7 @@ describe "pact-broker create-version-tag", skip_windows: true do
|
|
5
5
|
end
|
6
6
|
|
7
7
|
context "when the version is successfully tagged" do
|
8
|
-
subject { `bundle exec bin/pact-broker create-version-tag --pacticipant Condor --version 1.3.0 --tag prod --broker-base-url http://localhost:5001` }
|
8
|
+
subject { `bundle exec bin/pact-broker create-version-tag --auto-create-version --pacticipant Condor --version 1.3.0 --tag prod --broker-base-url http://localhost:5001` }
|
9
9
|
|
10
10
|
it "returns a success exit code" do
|
11
11
|
subject
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pact_broker-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.28.
|
4
|
+
version: 1.28.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Beth Skurrie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -218,7 +218,6 @@ files:
|
|
218
218
|
- pact-broker-client.gemspec
|
219
219
|
- script/generate-cli-usage.sh
|
220
220
|
- script/publish-pact.sh
|
221
|
-
- script/release-via-github-action.sh
|
222
221
|
- script/release.sh
|
223
222
|
- script/trigger-release.sh
|
224
223
|
- spec/integration/can_i_deploy_spec.rb
|