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
1922ca0e
Commit
1922ca0e
authored
Oct 04, 2018
by
Rémy Coutable
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve downstream pipeine trigger class
Signed-off-by:
Rémy Coutable
<
remy@rymai.me
>
parent
ecbcda22
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
49 additions
and
24 deletions
+49
-24
scripts/trigger-build
scripts/trigger-build
+49
-24
No files found.
scripts/trigger-build
View file @
1922ca0e
#!/usr/bin/env ruby
# frozen_string_literal: true
require
'gitlab'
...
...
@@ -6,38 +7,27 @@ require 'gitlab'
# Configure credentials to be used with gitlab gem
#
Gitlab
.
configure
do
|
config
|
config
.
endpoint
=
'https://gitlab.com/api/v4'
config
.
private_token
=
ENV
[
'GITLAB_QA_ACCESS_TOKEN'
]
# gitlab-qa bot access token
config
.
endpoint
=
'https://gitlab.com/api/v4'
end
module
Trigger
TOKEN
=
ENV
[
'BUILD_TRIGGER_TOKEN'
]
def
self
.
ee?
ENV
[
'CI_PROJECT_NAME'
]
==
'gitlab-ee'
||
File
.
exist?
(
'CHANGELOG-EE.md'
)
end
class
Base
def
initialize
(
api_token
)
Gitlab
.
private_token
=
api_token
end
def
invoke!
(
post_comment:
false
)
pipeline
=
Gitlab
.
run_trigger
(
downstream_project_path
,
Trigger
::
TOKEN
,
trigger_token
,
ref
,
variables
)
puts
"Triggered
#{
pipeline
.
web_url
}
"
puts
"Triggered
downstream pipeline:
#{
pipeline
.
web_url
}
\n
"
puts
"Waiting for downstream pipeline status"
begin
Trigger
::
CommitComment
.
post!
(
downstream_project_path
,
pipeline
)
if
post_comment
rescue
Gitlab
::
Error
::
Error
=>
error
puts
"Ignoring the following error:
#{
error
}
"
end
Trigger
::
Pipeline
.
new
(
downstream_project_path
,
pipeline
.
id
)
Trigger
::
CommitComment
.
post!
(
pipeline
,
access_token
)
if
post_comment
Trigger
::
Pipeline
.
new
(
downstream_project_path
,
pipeline
.
id
,
access_token
)
end
private
...
...
@@ -52,6 +42,16 @@ module Trigger
raise
NotImplementedError
end
# Must be overriden
def
trigger_token
raise
NotImplementedError
end
# Must be overriden
def
access_token
raise
NotImplementedError
end
# Can be overriden
def
extra_variables
{}
...
...
@@ -68,7 +68,10 @@ module Trigger
def
base_variables
{
'TRIGGERED_USER'
=>
ENV
[
'GITLAB_USER_NAME'
],
'TOP_UPSTREAM_TRIGGER_PROJECT'
=>
ENV
[
'TOP_UPSTREAM_TRIGGER_PROJECT'
]
||
ENV
[
'CI_PROJECT_PATH'
],
'UPSTREAM_TRIGGER_PROJECT'
=>
ENV
[
'CI_PROJECT_PATH'
],
'UPSTREAM_TRIGGER_SOURCE'
=>
ENV
[
'TRIGGER_SOURCE'
],
'TRIGGERED_USER'
=>
ENV
[
'TRIGGERED_USER'
]
||
ENV
[
'GITLAB_USER_NAME'
],
'TRIGGER_SOURCE'
=>
ENV
[
'CI_JOB_URL'
]
}
end
...
...
@@ -85,13 +88,21 @@ module Trigger
private
def
downstream_project_path
'gitlab-org/omnibus-gitlab'
.
freeze
'gitlab-org/omnibus-gitlab'
end
def
ref
ENV
[
'OMNIBUS_BRANCH'
]
||
'master'
end
def
trigger_token
ENV
[
'BUILD_TRIGGER_TOKEN'
]
end
def
access_token
ENV
[
'GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN'
]
end
def
extra_variables
{
'GITLAB_VERSION'
=>
ENV
[
'CI_COMMIT_SHA'
],
...
...
@@ -112,6 +123,14 @@ module Trigger
ENV
[
'CNG_BRANCH'
]
||
'master'
end
def
trigger_token
ENV
[
'BUILD_TRIGGER_TOKEN'
]
end
def
access_token
ENV
[
'GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN'
]
end
def
extra_variables
edition
=
Trigger
.
ee?
?
'EE'
:
'CE'
...
...
@@ -134,11 +153,16 @@ module Trigger
end
class
CommitComment
def
self
.
post!
(
downstream_project_path
,
downstream_pipeline
)
def
self
.
post!
(
downstream_pipeline
,
access_token
)
Gitlab
.
private_token
=
access_token
Gitlab
.
create_commit_comment
(
ENV
[
'CI_PROJECT_PATH'
],
ENV
[
'CI_COMMIT_SHA'
],
"The [`
#{
ENV
[
'CI_JOB_NAME'
]
}
`](
#{
ENV
[
'CI_JOB_URL'
]
}
) job from pipeline
#{
ENV
[
'CI_PIPELINE_URL'
]
}
triggered
#{
downstream_pipeline
.
web_url
}
downstream."
)
rescue
Gitlab
::
Error
::
Error
=>
error
puts
"Ignoring the following error:
#{
error
}
"
end
end
...
...
@@ -146,15 +170,16 @@ module Trigger
INTERVAL
=
60
# seconds
MAX_DURATION
=
3600
*
3
# 3 hours
attr_reader
:project
,
:id
attr_reader
:project
,
:id
,
:api_token
def
initialize
(
project
,
id
)
def
initialize
(
project
,
id
,
api_token
)
@project
=
project
@id
=
id
@api_token
=
api_token
@start
=
Time
.
now
.
to_i
# gitlab-bot's token "GitLab multi-project pipeline polling"
Gitlab
.
private_token
=
ENV
[
'GITLAB_BOT_MULTI_PROJECT_PIPELINE_POLLING_TOKEN'
]
Gitlab
.
private_token
=
api_token
end
def
wait!
...
...
@@ -197,9 +222,9 @@ end
case
ARGV
[
0
]
when
'omnibus'
Trigger
::
Omnibus
.
new
(
ENV
[
'GITLAB_QA_ACCESS_TOKEN'
])
.
invoke!
(
post_comment:
true
).
wait!
Trigger
::
Omnibus
.
new
.
invoke!
(
post_comment:
true
).
wait!
when
'cng'
Trigger
::
CNG
.
new
(
ENV
[
'GITLAB_QA_ACCESS_TOKEN'
])
.
invoke!
.
wait!
Trigger
::
CNG
.
new
.
invoke!
.
wait!
else
puts
"Please provide a valid option:
omnibus - Triggers a pipeline that builds the omnibus-gitlab package
...
...
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