Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
2998b886
Commit
2998b886
authored
Nov 24, 2017
by
Grzegorz Bizon
Committed by
Rémy Coutable
Nov 24, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add a feedback mechanism to `package-qa` manual action
parent
7c1e54d5
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
91 additions
and
20 deletions
+91
-20
.gitlab-ci.yml
.gitlab-ci.yml
+3
-1
scripts/trigger-build-omnibus
scripts/trigger-build-omnibus
+88
-19
No files found.
.gitlab-ci.yml
View file @
2998b886
...
@@ -152,8 +152,10 @@ stages:
...
@@ -152,8 +152,10 @@ stages:
-
master@gitlab/gitlabhq
-
master@gitlab/gitlabhq
-
master@gitlab/gitlab-ee
-
master@gitlab/gitlab-ee
##
# Trigger a package build in omnibus-gitlab repository
# Trigger a package build in omnibus-gitlab repository
build-package
:
#
package-qa
:
image
:
ruby:2.4-alpine
image
:
ruby:2.4-alpine
before_script
:
[]
before_script
:
[]
stage
:
build
stage
:
build
...
...
scripts/trigger-build-omnibus
View file @
2998b886
...
@@ -2,26 +2,95 @@
...
@@ -2,26 +2,95 @@
require
'net/http'
require
'net/http'
require
'json'
require
'json'
require
'cgi'
uri
=
URI
(
'https://gitlab.com/api/v4/projects/20699/trigger/pipeline'
)
module
Omnibus
params
=
{
PROJECT_PATH
=
'gitlab-org/omnibus-gitlab'
.
freeze
class
Trigger
TOKEN
=
ENV
[
'BUILD_TRIGGER_TOKEN'
]
def
initialize
@uri
=
URI
(
"https://gitlab.com/api/v4/projects/
#{
CGI
.
escape
(
Omnibus
::
PROJECT_PATH
)
}
/trigger/pipeline"
)
@params
=
env_params
.
merge
(
file_params
).
merge
(
token:
TOKEN
)
end
def
invoke!
res
=
Net
::
HTTP
.
post_form
(
@uri
,
@params
)
id
=
JSON
.
parse
(
res
.
body
)[
'id'
]
if
id
puts
"Triggered https://gitlab.com/
#{
Omnibus
::
PROJECT_PATH
}
/pipelines/
#{
id
}
"
else
raise
"Trigger failed! The response from the trigger is:
#{
res
.
body
}
"
end
Omnibus
::
Pipeline
.
new
(
id
)
end
private
def
env_params
{
"ref"
=>
ENV
[
"OMNIBUS_BRANCH"
]
||
"master"
,
"ref"
=>
ENV
[
"OMNIBUS_BRANCH"
]
||
"master"
,
"token"
=>
ENV
[
"BUILD_TRIGGER_TOKEN"
],
"variables[GITLAB_VERSION]"
=>
ENV
[
"CI_COMMIT_SHA"
],
"variables[GITLAB_VERSION]"
=>
ENV
[
"CI_COMMIT_SHA"
],
"variables[ALTERNATIVE_SOURCES]"
=>
true
,
"variables[ALTERNATIVE_SOURCES]"
=>
true
,
"variables[ee]"
=>
ENV
[
"EE_PACKAGE"
]
||
"false"
"variables[ee]"
=>
ENV
[
"EE_PACKAGE"
]
||
"false"
}
}
end
Dir
.
glob
(
"*_VERSION"
).
each
do
|
version_file
|
def
file_params
Hash
.
new
.
tap
do
|
params
|
Dir
.
glob
(
"*_VERSION"
).
each
do
|
version_file
|
params
[
"variables[
#{
version_file
}
]"
]
=
File
.
read
(
version_file
).
strip
params
[
"variables[
#{
version_file
}
]"
]
=
File
.
read
(
version_file
).
strip
end
end
end
end
end
res
=
Net
::
HTTP
.
post_form
(
uri
,
params
)
class
Pipeline
pipeline_id
=
JSON
.
parse
(
res
.
body
)[
'id'
]
INTERVAL
=
60
# seconds
MAX_DURATION
=
3600
*
3
# 3 hours
unless
pipeline_id
.
nil?
def
initialize
(
id
)
puts
"Triggered pipeline can be found at https://gitlab.com/gitlab-org/omnibus-gitlab/pipelines/
#{
pipeline_id
}
"
@start
=
Time
.
now
.
to_i
else
@uri
=
URI
(
"https://gitlab.com/api/v4/projects/
#{
CGI
.
escape
(
Omnibus
::
PROJECT_PATH
)
}
/pipelines/
#{
id
}
"
)
puts
"Trigger failed. The response from trigger is: "
end
puts
res
.
body
def
wait!
loop
do
raise
'Pipeline timeout!'
if
timeout?
case
status
when
:pending
,
:running
puts
"Waiting another
#{
INTERVAL
}
seconds ..."
sleep
INTERVAL
when
:success
puts
"Omnibus pipeline succeeded!"
break
else
raise
"Omnibus pipeline did not succeed!"
end
STDOUT
.
flush
end
end
def
timeout?
Time
.
now
.
to_i
>
(
@start
+
MAX_DURATION
)
end
def
status
req
=
Net
::
HTTP
::
Get
.
new
(
@uri
)
req
[
'PRIVATE-TOKEN'
]
=
ENV
[
'GITLAB_QA_ACCESS_TOKEN'
]
res
=
Net
::
HTTP
.
start
(
@uri
.
hostname
,
@uri
.
port
,
use_ssl:
true
)
do
|
http
|
http
.
request
(
req
)
end
JSON
.
parse
(
res
.
body
)[
'status'
].
to_s
.
to_sym
end
end
end
end
Omnibus
::
Trigger
.
new
.
invoke!
.
wait!
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment