bitrise-client 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +27 -0
- data/.gitignore +2 -0
- data/CHANGELOG.md +13 -0
- data/README.md +39 -6
- data/bin/console +1 -1
- data/bitrise-client.gemspec +1 -1
- data/lib/bitrise/build_trigger_result.rb +15 -0
- data/lib/bitrise/client/build.rb +36 -21
- data/lib/bitrise/client/middleware/error_handler.rb +20 -0
- data/lib/bitrise/client/test_device.rb +28 -0
- data/lib/bitrise/client/version.rb +1 -1
- data/lib/bitrise/client.rb +15 -4
- data/lib/bitrise/error.rb +5 -0
- data/lib/bitrise/test_device.rb +11 -0
- metadata +17 -11
- data/.travis.yml +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bea45506fb22cbcf82ac88de924ee3bbd72fac3f9e8e541f8a3e58a7ff9efca2
|
4
|
+
data.tar.gz: a9ef13c2d000307505b1bf3b7060d0998eccee62828796a2455d1710ddbd4164
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2fe332714ef892a3047f047d24697315461a8a3917826edb37a53ed19d57d20764f5b934597e6a240f5f6c7ad0d848177cc7a23a6da66273efac18c06b54c06
|
7
|
+
data.tar.gz: 80cf9f62e6ffe79a0f0740276031a967e786946f0f3062bc509ec11270491eae9d79c2283ae4d254fd78f4ae03548f47e3612c5f4c2fed41f243bde4f70e88c4
|
@@ -0,0 +1,27 @@
|
|
1
|
+
name: Test
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
branches:
|
6
|
+
- "**"
|
7
|
+
|
8
|
+
concurrency:
|
9
|
+
group: ${{ github.ref }}
|
10
|
+
cancel-in-progress: true
|
11
|
+
|
12
|
+
jobs:
|
13
|
+
test:
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
strategy:
|
16
|
+
matrix:
|
17
|
+
ruby-version: [head, 3.0, 2.7]
|
18
|
+
steps:
|
19
|
+
- uses: actions/checkout@v2
|
20
|
+
- name: Set up Ruby
|
21
|
+
uses: ruby/setup-ruby@v1
|
22
|
+
with:
|
23
|
+
ruby-version: ${{ matrix.ruby-version }}
|
24
|
+
bundler-cache: true
|
25
|
+
- name: Run tests
|
26
|
+
run: |
|
27
|
+
bundle exec rspec
|
data/.gitignore
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
## v0.2.0
|
2
|
+
|
3
|
+
Changed to use the [Bitrise v0.1 API](https://devcenter.bitrise.io/en/api.html), so you need to change to specify an access token to bitrise-client initialization. See: https://github.com/mataku/bitrise-client#usage
|
4
|
+
|
5
|
+
- Support endpoint for triggering a build
|
6
|
+
- Support aborting a build
|
7
|
+
- Support listing registered test devices of all members of a specified Bitrise app
|
8
|
+
|
9
|
+
## v0.1.0
|
10
|
+
|
11
|
+
Released.
|
12
|
+
|
13
|
+
- Support triggering a build
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
A ruby client for [Bitrise API](https://devcenter.bitrise.io/#bitrise-api).
|
4
4
|
|
5
|
-
Now supports [Build Trigger API](https://devcenter.bitrise.io/api/build-trigger/) only.
|
5
|
+
Now supports v0.1 [Build Trigger API](https://devcenter.bitrise.io/api/build-trigger/) and [Test Devices](https://devcenter.bitrise.io/en/api/api-reference.html#operations-tag-test-devices) only.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -25,19 +25,52 @@ Or install it yourself as:
|
|
25
25
|
```ruby
|
26
26
|
require 'bitrise'
|
27
27
|
|
28
|
-
|
29
|
-
client.
|
30
|
-
|
31
|
-
|
28
|
+
# Access token required to use bitrise v0.1 API. See: https://devcenter.bitrise.io/en/api/authenticating-with-the-bitrise-api.html
|
29
|
+
client = Bitrise::Client.new(access_token: 'your access token')
|
30
|
+
|
31
|
+
# Trigger a build
|
32
|
+
result = client.trigger_build(
|
33
|
+
app_slug: 'your_app_slug', # Required
|
32
34
|
build_params: {
|
33
|
-
#
|
35
|
+
# At least a tag, branch or workflow_id parameter required so that Bitrise can identify which workflow to run
|
34
36
|
branch: 'branch',
|
35
37
|
tag: 'tag',
|
36
38
|
workflow_id: 'workflow_id'
|
37
39
|
}
|
38
40
|
)
|
41
|
+
|
42
|
+
p result.build_url # => "https://app.bitrise.io/build/1234abcd5678efgh"
|
43
|
+
|
44
|
+
# Abort a build
|
45
|
+
client.abort_build(
|
46
|
+
# Required
|
47
|
+
app_slug: 'your_app_slug',
|
48
|
+
# Required
|
49
|
+
build_slug: 'build slug to abort',
|
50
|
+
|
51
|
+
# Optional
|
52
|
+
options: {
|
53
|
+
abort_reason: 'wanna relax', # You can set a reason
|
54
|
+
abort_with_success: true, # Set true if you want to treat as a successful
|
55
|
+
skip_notifications: true # Set true if you want to receive notification even if your notification setting in app is off
|
56
|
+
}
|
57
|
+
)
|
58
|
+
|
59
|
+
# List registered test devices of all members of a specified Bitrise app
|
60
|
+
devices = client.test_devices(
|
61
|
+
# Required
|
62
|
+
app_slug: 'your_app_slug'
|
63
|
+
)
|
64
|
+
devices.each do |device|
|
65
|
+
p device.device_id
|
66
|
+
p device.device_type
|
67
|
+
p device.owner
|
68
|
+
end
|
39
69
|
```
|
40
70
|
|
71
|
+
## Changelog
|
72
|
+
|
73
|
+
See [/CHANGELOG.md]
|
41
74
|
|
42
75
|
## License
|
43
76
|
|
data/bin/console
CHANGED
data/bitrise-client.gemspec
CHANGED
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
36
36
|
spec.require_paths = ["lib"]
|
37
37
|
|
38
|
-
spec.add_runtime_dependency 'faraday'
|
38
|
+
spec.add_runtime_dependency 'faraday'
|
39
39
|
|
40
40
|
spec.add_development_dependency "bundler"
|
41
41
|
spec.add_development_dependency "irb"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Bitrise
|
2
|
+
class BuildTriggerResult
|
3
|
+
attr_accessor :build_number, :build_slug, :build_url, :message, :service, :slug, :status, :triggered_workflow
|
4
|
+
def initialize(attrs = {})
|
5
|
+
@build_number = attrs['build_number']
|
6
|
+
@build_slug = attrs['build_slug']
|
7
|
+
@build_url = attrs['build_url']
|
8
|
+
@message = attrs['message']
|
9
|
+
@service = attrs['service']
|
10
|
+
@slug = attrs['slug']
|
11
|
+
@status = attrs['status']
|
12
|
+
@triggered_workflow = attrs['triggered_workflow']
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/bitrise/client/build.rb
CHANGED
@@ -1,43 +1,58 @@
|
|
1
|
+
require 'bitrise/build_trigger_result'
|
1
2
|
require 'json'
|
2
3
|
|
3
4
|
module Bitrise
|
4
5
|
class Client
|
5
6
|
module Build
|
6
|
-
|
7
7
|
# Trigger a build of your bitrise app
|
8
8
|
#
|
9
9
|
# @param app_slug [String] Your bitrise app slug
|
10
|
-
# @param
|
11
|
-
#
|
12
|
-
#
|
13
|
-
|
14
|
-
|
15
|
-
|
10
|
+
# @param build_params [Hash] Bulld params so that Bitrise can identify which workflow to run. Specify a branch or tag or workflow_id at least.
|
11
|
+
#
|
12
|
+
# @return [Bitrise::BuildTriggerResult]
|
13
|
+
#
|
14
|
+
# See: https://devcenter.bitrise.io/en/api/triggering-and-aborting-builds.html#triggering-a-new-build-with-the-api
|
15
|
+
def trigger_build(app_slug: nil, build_params: {})
|
16
|
+
raise ArgumentError, 'App slug required. You must specify by \'app_slug:\'' unless app_slug
|
17
|
+
raise ArgumentError, 'No value found for \'branch\' or \'tag\' or \'workflow_id\'' if build_params.empty?
|
16
18
|
|
17
19
|
response = client.post do |request|
|
18
|
-
request.url "/
|
20
|
+
request.url "/v0.1/apps/#{app_slug}/builds"
|
19
21
|
request.headers['Content-Type'] = 'application/json'
|
20
22
|
request.body = {
|
21
23
|
hook_info: {
|
22
|
-
type: 'bitrise'
|
23
|
-
build_trigger_token: @build_trigger_token
|
24
|
+
type: 'bitrise'
|
24
25
|
},
|
25
|
-
build_params:
|
26
|
+
build_params: build_params
|
26
27
|
}.to_json
|
27
28
|
end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
JSON.parse(response.body)
|
30
|
+
result = JSON.parse(response.body)
|
31
|
+
BuildTriggerResult.new(result)
|
32
32
|
end
|
33
|
+
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
# Abort a build of your bitrise app
|
36
|
+
#
|
37
|
+
# @param app_slug [String] Your bitrise app slug
|
38
|
+
# @param build_slug [String] Bitrise build slug which you want to abort
|
39
|
+
#
|
40
|
+
# @param options [Hash]
|
41
|
+
# @option opts [String] :abort_reason A reason for aborting the build
|
42
|
+
# @option opts [Boolean] :abort_with_success Treat as a successful or not
|
43
|
+
# @option opts [Boolean] :skip_notifications Set true if you want to send email notifications about aborting by Bitrise
|
44
|
+
#
|
45
|
+
# @return [Bitrise::BuildTriggerResult]
|
46
|
+
#
|
47
|
+
# See: https://devcenter.bitrise.io/en/api/triggering-and-aborting-builds.html#aborting-a-build
|
48
|
+
def abort_build(app_slug: nil, build_slug: nil, options: {})
|
49
|
+
raise ArgumentError, 'App slug required. You must specify by \'app_slug:\'' unless app_slug
|
50
|
+
raise ArgumentError, 'Build slug required. You must specify by \'build_slug:\'' unless build_slug
|
51
|
+
|
52
|
+
client.post do |request|
|
53
|
+
request.url "/v0.1/apps/#{app_slug}/builds/#{build_slug}/abort"
|
54
|
+
request.headers['Content-Type'] = 'application/json'
|
55
|
+
request.body = options.to_json
|
41
56
|
end
|
42
57
|
end
|
43
58
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'bitrise/error'
|
3
|
+
|
4
|
+
module Bitrise
|
5
|
+
class Client
|
6
|
+
module Middleware
|
7
|
+
|
8
|
+
class ErrorHandler < Faraday::Response::Middleware
|
9
|
+
|
10
|
+
# @param [Faraday::Response]
|
11
|
+
def on_complete(response)
|
12
|
+
case response.status
|
13
|
+
when 400..599
|
14
|
+
raise Bitrise::Error.new(JSON.parse(response.body)['message'])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'bitrise/test_device'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
|
5
|
+
module Bitrise
|
6
|
+
class Client
|
7
|
+
module TestDevice
|
8
|
+
|
9
|
+
# List registered test devices of all members of a specified Bitrise app
|
10
|
+
#
|
11
|
+
# @param app_slug [String] Your bitrise app slug
|
12
|
+
#
|
13
|
+
# @return [Array<Bitrise::TestDevice>
|
14
|
+
def test_devices(app_slug: nil)
|
15
|
+
raise ArgumentError, 'App slug required. You must specify by \'app_slug:\'' unless app_slug
|
16
|
+
|
17
|
+
response = client.get do |request|
|
18
|
+
request.url "/v0.1/apps/#{app_slug}/test-devices"
|
19
|
+
request.headers['Content-Type'] = 'application/json'
|
20
|
+
end
|
21
|
+
|
22
|
+
JSON.parse(response.body)['data'].map do |device|
|
23
|
+
Bitrise::TestDevice.new(device)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/bitrise/client.rb
CHANGED
@@ -1,14 +1,23 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
%w(
|
2
|
+
bitrise/client/build
|
3
|
+
bitrise/client/test_device
|
4
|
+
bitrise/client/middleware/error_handler
|
5
|
+
faraday
|
6
|
+
).each do |lib|
|
7
|
+
require lib
|
8
|
+
end
|
3
9
|
|
4
10
|
module Bitrise
|
5
11
|
class Client
|
6
12
|
include Bitrise::Client::Build
|
13
|
+
include Bitrise::Client::TestDevice
|
7
14
|
|
8
|
-
def initialize(options
|
9
|
-
|
15
|
+
def initialize(access_token: nil, options: {})
|
16
|
+
raise ArgumentError.new('You must specify Bitrise access token by `access_token:`.') unless access_token
|
17
|
+
@api_host = options[:host] || 'https://api.bitrise.io'
|
10
18
|
@timeout = options[:timeout] || 30
|
11
19
|
@open_timeout = options[:open_timeout] || 30
|
20
|
+
@access_token = access_token
|
12
21
|
end
|
13
22
|
|
14
23
|
def client
|
@@ -16,7 +25,9 @@ module Bitrise
|
|
16
25
|
faraday.options.timeout = @timeout
|
17
26
|
faraday.options.open_timeout = @open_timeout
|
18
27
|
faraday.options.params_encoder = Faraday::FlatParamsEncoder
|
28
|
+
faraday.use Bitrise::Client::Middleware::ErrorHandler
|
19
29
|
faraday.response :logger if ENV['DEBUG']
|
30
|
+
faraday.headers['Authorization'] = @access_token
|
20
31
|
|
21
32
|
faraday.adapter Faraday.default_adapter
|
22
33
|
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitrise-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mataku
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,9 +87,10 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
+
- ".github/workflows/test.yml"
|
90
91
|
- ".gitignore"
|
91
92
|
- ".rspec"
|
92
|
-
-
|
93
|
+
- CHANGELOG.md
|
93
94
|
- Gemfile
|
94
95
|
- LICENSE.txt
|
95
96
|
- README.md
|
@@ -98,16 +99,21 @@ files:
|
|
98
99
|
- bin/setup
|
99
100
|
- bitrise-client.gemspec
|
100
101
|
- lib/bitrise.rb
|
102
|
+
- lib/bitrise/build_trigger_result.rb
|
101
103
|
- lib/bitrise/client.rb
|
102
104
|
- lib/bitrise/client/build.rb
|
105
|
+
- lib/bitrise/client/middleware/error_handler.rb
|
106
|
+
- lib/bitrise/client/test_device.rb
|
103
107
|
- lib/bitrise/client/version.rb
|
108
|
+
- lib/bitrise/error.rb
|
109
|
+
- lib/bitrise/test_device.rb
|
104
110
|
homepage: https://github.com/mataku/bitrise-client
|
105
111
|
licenses:
|
106
112
|
- MIT
|
107
113
|
metadata:
|
108
114
|
homepage_uri: https://github.com/mataku/bitrise-client
|
109
115
|
source_code_uri: https://github.com/mataku/bitrise-client
|
110
|
-
post_install_message:
|
116
|
+
post_install_message:
|
111
117
|
rdoc_options: []
|
112
118
|
require_paths:
|
113
119
|
- lib
|
@@ -122,8 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
128
|
- !ruby/object:Gem::Version
|
123
129
|
version: '0'
|
124
130
|
requirements: []
|
125
|
-
rubygems_version: 3.
|
126
|
-
signing_key:
|
131
|
+
rubygems_version: 3.2.32
|
132
|
+
signing_key:
|
127
133
|
specification_version: 4
|
128
134
|
summary: A ruby clent for Bitrise API
|
129
135
|
test_files: []
|