pact_broker-client 1.27.28 → 1.28.4

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: 153cee172375611179f4f2e37304fedb2e6328c90e6021604178b71989e1c026
4
- data.tar.gz: dbc1c5c0dd0d95047a70528d9adbcc65660ab294483fa7e7d5077145731b292e
3
+ metadata.gz: 460518f5eadcc793db6674bd2d080743a01aefe7b3c7956e6b7cd39d703c07cd
4
+ data.tar.gz: 04aba16e6627945f082461844b0a26d4c758b24bf27ceb75ebbb7b7db97a56e6
5
5
  SHA512:
6
- metadata.gz: 310948a91ce1b39b361936578d8cc8101faffbe6c3fee7f4e3a91079efd94abacd9584f7461c7130fd529757f1718c38a4a726cd9e8f1ff13b288c1072d37fd3
7
- data.tar.gz: 3fd44aff755149fdc51984ba779462e98c5c56d8f58c01a8bc60263a3399a666bbe6cbab37a703dbca0d5a730e5ce76f42aff4b44bf85c496ace14b08ae255b4
6
+ metadata.gz: 946cd6045077c72decc890ec527f3b327ee835f3fe7898db0b9ae03d0959329e6409744ce718f7868389daee733d57605560b0dc6cf55886c37847c4674c8a6f
7
+ data.tar.gz: 1dca9a3b97c207dce94e4a1e6a69739623e1897222fbf4e696e883d720ad6b36e8508431d69e011d597357f61e2c349352814d63af7b7891066cadc02d0d600b
@@ -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.11
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, pact-foundation/pact_broker-client]
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,25 @@
1
- <a name="v1.27.27"></a>
2
- ### v1.27.27 (2020-07-12)
1
+ <a name="v1.28.4"></a>
2
+ ### v1.28.4 (2020-07-31)
3
+
4
+ #### Bug Fixes
5
+
6
+ * add missing require for PactBroker::Client::Error ([72eb796](/../../commit/72eb796))
7
+
8
+ <a name="v1.28.3"></a>
9
+ ### v1.28.3 (2020-07-19)
10
+
11
+ <a name="v1.28.2"></a>
12
+ ### v1.28.2 (2020-07-17)
13
+
14
+
15
+ #### Bug Fixes
16
+
17
+ * **create-version-tag**
18
+ * raise an error if the version does not exist rather than automatically creating it. ([2ed7a55](/../../commit/2ed7a55))
19
+
20
+
21
+ <a name="v1.28.0"></a>
22
+ ### v1.28.0 (2020-07-12)
3
23
 
4
24
 
5
25
  #### 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', ''
@@ -52,6 +53,7 @@ module PactBroker
52
53
  method_option :verbose, aliases: "-v", type: :boolean, default: false, required: false, desc: "Verbose output. Default: false"
53
54
 
54
55
  def publish(*pact_files)
56
+ require 'pact_broker/client/error'
55
57
  validate_credentials
56
58
  validate_pact_files(pact_files)
57
59
  success = publish_pacts(pact_files)
@@ -64,6 +66,7 @@ module PactBroker
64
66
  method_option :pacticipant, required: true, aliases: "-a", desc: "The pacticipant name"
65
67
  method_option :version, required: true, aliases: "-e", desc: "The pacticipant version"
66
68
  method_option :tag, aliases: "-t", type: :array, banner: "TAG", desc: "Tag name for pacticipant version. Can be specified multiple times."
69
+ method_option :auto_create_version, type: :boolean, default: false, desc: "Automatically create the pacticipant version if it does not exist. Default: false"
67
70
  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
71
  method_option :broker_base_url, required: true, aliases: "-b", desc: "The base URL of the Pact Broker"
69
72
  method_option :broker_username, aliases: "-u", desc: "Pact Broker basic auth username"
@@ -80,7 +83,10 @@ module PactBroker
80
83
  options.pacticipant,
81
84
  options.version,
82
85
  tags,
86
+ options.auto_create_version,
83
87
  pact_broker_client_options)
88
+ rescue PactBroker::Client::Error => e
89
+ raise VersionCreationError.new(e.message)
84
90
  end
85
91
 
86
92
  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.28'
3
+ VERSION = '1.28.4'
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.28
4
+ version: 1.28.4
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-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty