pact_broker-client 1.27.27 → 1.28.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a9a02367f2865a7b744a5b2938320e644422ed8d7b2e38268236236dbbd9d19
4
- data.tar.gz: 8269136a2be323378567e293eb30262172120b1cb2aac1e0fd5708e4092c32dc
3
+ metadata.gz: 21b198e50ce3323193d1d4ee08c5de775c6d1a86cea0fcab7150870a35a39dc2
4
+ data.tar.gz: 25f87195826bf949de6d330dc60cdbfcf06398fd9bee8b0d50c8095c98dd4230
5
5
  SHA512:
6
- metadata.gz: 15a4c4040668b15cc812023158ffabcb81a5f6ffa5813fde67eec12564358fa9269967f7dff73892e1b275ffb5dad6a653f3553f9b5c4759989c925eadd260e2
7
- data.tar.gz: 9b3e17aad790fc9aef19b7ded0453cbff1e77ea436068901cf9dbc87501589b75f7b721e130cd113988424835053252ca480419a2347774382b84355f8392c7a
6
+ metadata.gz: d32d943bb74e1bcaf0dcadb22f6fe8b9d9c434c131e43cfa23f67c7a2eeae7c5a7c4bceceb1bea9346ae5f30b10a2dbacff4a18c7a8c3d2046c03522ee78301d
7
+ data.tar.gz: 5a0065b1401a19cd4407c3f88f957e4169d7ca878ca35157c8b340475146372d32fffcd8ba135b2799a8ff70c1218343d79bb159ef59e3b2aec13711addfbbd7
@@ -3,22 +3,56 @@ name: Release gem
3
3
  on:
4
4
  repository_dispatch:
5
5
  types:
6
- - release-patch
6
+ - release-triggered
7
7
 
8
8
  jobs:
9
- build:
9
+ test:
10
10
  runs-on: ubuntu-latest
11
11
  steps:
12
+ - uses: actions/checkout@v2
13
+ - uses: actions/setup-ruby@v1
14
+ with:
15
+ ruby-version: '2.6'
16
+ - run: |
17
+ gem install bundler -v 2.1
18
+ bundle install
19
+ - name: Test
20
+ run: bundle exec rake
21
+
22
+ release:
23
+ needs: test
24
+ runs-on: ubuntu-latest
25
+ outputs:
26
+ gem_name: ${{ steps.release.outputs.gem_name }}
27
+ version: ${{ steps.release.outputs.version }}
28
+ increment: ${{ steps.release.outputs.increment }}
29
+ steps:
12
30
  - uses: actions/checkout@v2
13
31
  with:
14
32
  fetch-depth: 0
15
- - uses: pact-foundation/release-gem@0.0.1
33
+ - uses: pact-foundation/release-gem@v0.0.10
34
+ id: release
16
35
  env:
17
36
  GEM_HOST_API_KEY: '${{ secrets.RUBYGEMS_API_KEY }}'
18
37
  GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
19
- # - name: Trigger release of pact-cli Docker image
20
- # uses: peter-evans/repository-dispatch@v1
21
- # with:
22
- # token: ${{ secrets.GHTOKENFORPACTCLIRELEASE }}
23
- # repository: pact-foundation/pact-ruby-cli
24
- # event-type: gem-released
38
+ INCREMENT: '${{ github.event.client_payload.increment }}'
39
+
40
+ notify-gem-released:
41
+ needs: release
42
+ strategy:
43
+ matrix:
44
+ repository: [pact-foundation/pact-ruby-cli, pact-foundation/pact-ruby-standalone, $GITHUB_REPOSITORY]
45
+ runs-on: ubuntu-latest
46
+ steps:
47
+ - name: Notify ${{ matrix.repository }} of gem release
48
+ uses: peter-evans/repository-dispatch@v1
49
+ with:
50
+ token: ${{ secrets.GHTOKENFORPACTCLIRELEASE }}
51
+ repository: ${{ matrix.repository }}
52
+ event-type: gem-released
53
+ client-payload: |
54
+ {
55
+ "name": "${{ needs.release.outputs.gem_name }}",
56
+ "version": "${{ needs.release.outputs.version }}",
57
+ "increment": "${{ needs.release.outputs.increment }}"
58
+ }
@@ -6,6 +6,9 @@ on:
6
6
  - master
7
7
  paths:
8
8
  - '**.md'
9
+ repository_dispatch:
10
+ types:
11
+ - gem-released
9
12
 
10
13
  jobs:
11
14
  build:
@@ -1,5 +1,24 @@
1
- <a name="v1.27.27"></a>
2
- ### v1.27.27 (2020-07-12)
1
+ <a name="v1.28.3"></a>
2
+ ### v1.28.3 (2020-07-18)
3
+
4
+
5
+ #### Bug Fixes
6
+
7
+ * testing release process ([24d800f](/../../commit/24d800f))
8
+
9
+
10
+ <a name="v1.28.2"></a>
11
+ ### v1.28.2 (2020-07-17)
12
+
13
+
14
+ #### Bug Fixes
15
+
16
+ * **create-version-tag**
17
+ * raise an error if the version does not exist rather than automatically creating it. ([2ed7a55](/../../commit/2ed7a55))
18
+
19
+
20
+ <a name="v1.28.0"></a>
21
+ ### v1.28.0 (2020-07-12)
3
22
 
4
23
 
5
24
  #### Features
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
- class Result
10
- attr_reader :success, :message
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
@@ -11,7 +11,7 @@ APPVEYOR_REPO_COMMIT APPVEYOR_REPO_BRANCH https://www.appveyor.com/docs/en
11
11
  CI_COMMIT_REF_NAME https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
12
12
  CI_BRANCH CI_COMMIT_ID https://documentation.codeship.com/pro/builds-and-configuration/environment-variables/
13
13
  bamboo.repository.git.branch https://confluence.atlassian.com/bamboo/bamboo-variables-289277087.html
14
- BITBUCKET_BRANCH https://confluence.atlassian.com/bitbucket/variables-in-pipelines-794502608.html
14
+ BITBUCKET_BRANCH BITBUCKET_COMMIT https://confluence.atlassian.com/bitbucket/variables-in-pipelines-794502608.html
15
15
 
16
16
  =end
17
17
 
@@ -21,6 +21,11 @@ module PactBroker
21
21
  module Git
22
22
  COMMAND = 'git name-rev --name-only HEAD'.freeze
23
23
  BRANCH_ENV_VAR_NAMES = %w{BUILDKITE_BRANCH CIRCLE_BRANCH TRAVIS_BRANCH GIT_BRANCH GIT_LOCAL_BRANCH APPVEYOR_REPO_BRANCH CI_COMMIT_REF_NAME BITBUCKET_BRANCH}.freeze
24
+ COMMIT_ENV_VAR_NAMES = %w{BUILDKITE_COMMIT CIRCLE_SHA1 TRAVIS_COMMIT GIT_COMMIT APPVEYOR_REPO_COMMIT CI_COMMIT_ID BITBUCKET_COMMIT}
25
+
26
+ def self.commit
27
+ find_commit_from_env_vars
28
+ end
24
29
 
25
30
  def self.branch
26
31
  find_branch_from_env_vars || branch_from_git_command
@@ -28,11 +33,15 @@ module PactBroker
28
33
 
29
34
  # private
30
35
 
36
+ def self.find_commit_from_env_vars
37
+ COMMIT_ENV_VAR_NAMES.collect { |env_var_name| value_from_env_var(env_var_name) }.compact.first
38
+ end
39
+
31
40
  def self.find_branch_from_env_vars
32
- BRANCH_ENV_VAR_NAMES.collect { |env_var_name| branch_from_env_var(env_var_name) }.compact.first
41
+ BRANCH_ENV_VAR_NAMES.collect { |env_var_name| value_from_env_var(env_var_name) }.compact.first
33
42
  end
34
43
 
35
- def self.branch_from_env_var(env_var_name)
44
+ def self.value_from_env_var(env_var_name)
36
45
  val = ENV[env_var_name]
37
46
  if val && val.strip.size > 0
38
47
  val
@@ -1,5 +1,5 @@
1
1
  module PactBroker
2
2
  module Client
3
- VERSION = '1.27.27'
3
+ VERSION = '1.28.3'
4
4
  end
5
5
  end
@@ -28,7 +28,7 @@ module PactBroker
28
28
 
29
29
  def call
30
30
  version_hash = if params[:version]
31
- versions_client.find params
31
+ versions_client.find(params)
32
32
  else
33
33
  pact_broker_client.pacticipants.versions.latest(params)
34
34
  end
@@ -1,12 +1,30 @@
1
- #!/bin/bash
1
+ #!/bin/sh
2
2
 
3
- output=$(curl -v -X POST https://api.github.com/repos/pact-foundation/pact_broker-client/dispatches \
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 $GITHUB_ACCESS_TOKEN" \
6
- -d '{"event_type": "release-patch"}' 2>&1)
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/${GITHUB_ACCESS_TOKEN}/****/g"
10
- echo "Failed to do the thing"
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
29
+
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.27.27
4
+ version: 1.28.3
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-12 00:00:00.000000000 Z
11
+ date: 2020-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty