git-semaphore 1.1.0 → 1.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/README.md +9 -2
- data/exe/git-semaphore +6 -0
- data/lib/git/semaphore/api.rb +12 -0
- data/lib/git/semaphore/api_cache.rb +12 -0
- data/lib/git/semaphore/app.rb +4 -0
- data/lib/git/semaphore/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d581bd5005d05232ba4b5a48c550869e5b0899a
|
4
|
+
data.tar.gz: 11ebd99ca6deace07ea9bae7e99e8616316f78e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3dfe7c3bf1f6492b35649130e1dc6467841bcc6279172d0b8b7fb90bf2b8c27374a77594b66e5bd71261d650360511a3403f42baa0c0843a5bca5af1a338dfb6
|
7
|
+
data.tar.gz: e8559616dbab2c11fcc95f8d61cce38a148c1225b3af54e0989d4cbbe8df7c4dd786e02256bd77cbbe073b87c734af3ae82a5822b9fde3609bb60dc6b84353c2
|
data/README.md
CHANGED
@@ -44,7 +44,7 @@ The following [Semaphore API][] features are supported by `git semaphore`:
|
|
44
44
|
| [branch status][] | ✅ | `git semaphore --status` | list the build status for the current branch |
|
45
45
|
| [branch history][] | ✅ | `git semaphore --history` | list the build history for the current branch |
|
46
46
|
| [build information][] | ✅ | `git semaphore --information` | detailed information for a given build number _(ie. all commits)_ |
|
47
|
-
| [build log][] |
|
47
|
+
| [build log][] | ✅ | `git semaphore --log` | execution logs for a given build number _(per thread and command)_ |
|
48
48
|
| [rebuild][] | ✅ | `git semaphore --rebuild` | rebuild last revision for the current branch |
|
49
49
|
| [launch build][] | ❌ | | launch a build for the given commit SHA |
|
50
50
|
| [stop][] | ❌ | | stop an in-progress build |
|
@@ -178,6 +178,10 @@ _(the project and branch names are derived from the current git repository and t
|
|
178
178
|
|
179
179
|
_(the project and branch names are derived from the current git repository and the current git head)_
|
180
180
|
|
181
|
+
### build command and logs for the last build of a project's branch
|
182
|
+
|
183
|
+
git semaphore --log
|
184
|
+
|
181
185
|
## Formatting the raw `git semaphore` JSON output
|
182
186
|
|
183
187
|
After installing [the indispensable jq utility][jq] (`brew install jq`), the raw JSON output generated by the various `git semaphore` commands can be formatted and queried as follows:
|
@@ -193,10 +197,13 @@ After installing [the indispensable jq utility][jq] (`brew install jq`), the raw
|
|
193
197
|
|
194
198
|
# list the build duration (in minutes) for all "passed" builds of the current branch
|
195
199
|
git semaphore --history | jq -r '.builds | .[] | select(.result == "passed") | (.build_number|tostring) + "\t" + (.duration.minutes|tostring)'
|
196
|
-
|
200
|
+
|
197
201
|
# list all commit SHAs that triggered the latest build
|
198
202
|
git semaphore --information | jq -r '.commits | .[] | .id'
|
199
203
|
|
204
|
+
# list the various thread commands for the latest build
|
205
|
+
git semaphore --log | jq '.threads | .[] | .commands | .[] | .name'
|
206
|
+
|
200
207
|
[semaphoreci.com]: https://semaphoreci.com/
|
201
208
|
[account settings]: https://semaphoreci.com/users/edit
|
202
209
|
[Semaphore API]: https://semaphoreci.com/docs/api.html
|
data/exe/git-semaphore
CHANGED
@@ -27,6 +27,7 @@ if __FILE__ == $0
|
|
27
27
|
on :status, 'List the build status for the current branch'
|
28
28
|
on :history, 'List the build history for the current branch'
|
29
29
|
on :information, 'List the commit information for the last build'
|
30
|
+
on :log, 'List the build log for the last build'
|
30
31
|
on :rebuild, 'Rebuild last revision for the current branch'
|
31
32
|
|
32
33
|
end
|
@@ -73,6 +74,11 @@ if __FILE__ == $0
|
|
73
74
|
exit 0
|
74
75
|
end
|
75
76
|
|
77
|
+
if options.log?
|
78
|
+
puts app.log.to_json
|
79
|
+
exit 0
|
80
|
+
end
|
81
|
+
|
76
82
|
if options.rebuild?
|
77
83
|
puts app.rebuild
|
78
84
|
exit 0
|
data/lib/git/semaphore/api.rb
CHANGED
@@ -24,6 +24,10 @@ module Git
|
|
24
24
|
get_json information_uri(project_hash_id, branch_id, build_number, auth_token)
|
25
25
|
end
|
26
26
|
|
27
|
+
def self.log project_hash_id, branch_id, build_number, auth_token
|
28
|
+
get_json log_uri(project_hash_id, branch_id, build_number, auth_token)
|
29
|
+
end
|
30
|
+
|
27
31
|
def self.rebuild project_hash_id, branch_id, auth_token
|
28
32
|
get_json last_revision_uri(project_hash_id, branch_id, auth_token), :post
|
29
33
|
end
|
@@ -70,6 +74,14 @@ module Git
|
|
70
74
|
|
71
75
|
private_class_method :information_uri
|
72
76
|
|
77
|
+
def self.log_uri project_hash_id, branch_id, build_number, auth_token
|
78
|
+
# https://semaphoreci.com/docs/branches-and-builds-api.html#build_log
|
79
|
+
# GET /api/v1/projects/:hash_id/:id/builds/:number/log
|
80
|
+
request_uri(auth_token, :path => File.join('projects', project_hash_id, branch_id, 'builds', build_number, 'log'))
|
81
|
+
end
|
82
|
+
|
83
|
+
private_class_method :log_uri
|
84
|
+
|
73
85
|
def self.last_revision_uri project_hash_id, branch_id, auth_token
|
74
86
|
# https://semaphoreci.com/docs/branches-and-builds-api.html#rebuild
|
75
87
|
# POST /api/v1/projects/:project_hash_id/:branch_id/build
|
@@ -33,6 +33,12 @@ module Git
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
+
def self.log project_hash_id, branch_id, build_number, auth_token
|
37
|
+
@log ||= Git::Semaphore.from_json_cache(log_cache(project_hash_id, branch_id, build_number)) do
|
38
|
+
API.log project_hash_id, branch_id, build_number, auth_token
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
36
42
|
# private helper functions
|
37
43
|
|
38
44
|
def self.projects_cache
|
@@ -65,6 +71,12 @@ module Git
|
|
65
71
|
|
66
72
|
private_class_method :information_cache
|
67
73
|
|
74
|
+
def self.log_cache project_hash_id, branch_id, build_number
|
75
|
+
File.join(Git::Semaphore.cache_dir_for(project_hash_id), "#{branch_id}_#{build_number}_log.json")
|
76
|
+
end
|
77
|
+
|
78
|
+
private_class_method :log_cache
|
79
|
+
|
68
80
|
end
|
69
81
|
end
|
70
82
|
end
|
data/lib/git/semaphore/app.rb
CHANGED
@@ -67,6 +67,10 @@ class Git::Semaphore::App
|
|
67
67
|
Git::Semaphore::API::Cache.information(project_hash_id, branch_id, build_number, @auth_token,)
|
68
68
|
end
|
69
69
|
|
70
|
+
def log
|
71
|
+
Git::Semaphore::API::Cache.log(project_hash_id, branch_id, build_number, @auth_token,)
|
72
|
+
end
|
73
|
+
|
70
74
|
def rebuild
|
71
75
|
Git::Semaphore::API.rebuild(project_hash_id, branch_id, @auth_token)
|
72
76
|
end
|