2016-09-02 12:03:32 +00:00
|
|
|
module CycleAnalyticsHelpers
|
2017-03-23 16:37:14 +00:00
|
|
|
def create_commit_referencing_issue(issue, branch_name: generate(:branch))
|
|
|
|
project.repository.add_branch(user, branch_name, 'master')
|
2016-09-20 04:24:42 +00:00
|
|
|
create_commit("Commit for ##{issue.iid}", issue.project, user, branch_name)
|
|
|
|
end
|
|
|
|
|
2016-09-26 04:33:57 +00:00
|
|
|
def create_commit(message, project, user, branch_name, count: 1)
|
2016-09-20 05:47:36 +00:00
|
|
|
oldrev = project.repository.commit(branch_name).sha
|
2016-09-26 04:33:57 +00:00
|
|
|
commit_shas = Array.new(count) do |index|
|
2017-03-23 13:08:39 +00:00
|
|
|
commit_sha = project.repository.create_file(user, generate(:branch), "content", message: message, branch_name: branch_name)
|
2016-09-26 04:33:57 +00:00
|
|
|
project.repository.commit(commit_sha)
|
|
|
|
|
|
|
|
commit_sha
|
|
|
|
end
|
2016-09-20 04:24:42 +00:00
|
|
|
|
|
|
|
GitPushService.new(project,
|
|
|
|
user,
|
2016-09-20 05:47:36 +00:00
|
|
|
oldrev: oldrev,
|
2016-09-26 04:33:57 +00:00
|
|
|
newrev: commit_shas.last,
|
2016-09-20 04:24:42 +00:00
|
|
|
ref: 'refs/heads/master').execute
|
2016-09-07 08:59:12 +00:00
|
|
|
end
|
2016-09-02 12:03:32 +00:00
|
|
|
|
2017-04-24 16:26:23 +00:00
|
|
|
def create_merge_request_closing_issue(issue, message: nil, source_branch: nil, commit_message: 'commit message')
|
2016-09-20 05:47:36 +00:00
|
|
|
if !source_branch || project.repository.commit(source_branch).blank?
|
2017-03-23 13:08:39 +00:00
|
|
|
source_branch = generate(:branch)
|
2016-09-20 05:47:36 +00:00
|
|
|
project.repository.add_branch(user, source_branch, 'master')
|
|
|
|
end
|
|
|
|
|
2017-02-15 23:28:29 +00:00
|
|
|
sha = project.repository.create_file(
|
2016-12-08 11:11:52 +00:00
|
|
|
user,
|
2017-03-23 13:08:39 +00:00
|
|
|
generate(:branch),
|
2016-12-08 11:11:52 +00:00
|
|
|
'content',
|
2017-04-24 16:26:23 +00:00
|
|
|
message: commit_message,
|
2017-02-15 23:28:29 +00:00
|
|
|
branch_name: source_branch)
|
2016-09-07 08:59:12 +00:00
|
|
|
project.repository.commit(sha)
|
2016-09-02 12:03:32 +00:00
|
|
|
|
2016-09-07 08:59:12 +00:00
|
|
|
opts = {
|
|
|
|
title: 'Awesome merge_request',
|
|
|
|
description: message || "Fixes #{issue.to_reference}",
|
|
|
|
source_branch: source_branch,
|
|
|
|
target_branch: 'master'
|
|
|
|
}
|
2016-09-02 12:03:32 +00:00
|
|
|
|
2017-08-01 12:38:45 +00:00
|
|
|
mr = MergeRequests::CreateService.new(project, user, opts).execute
|
|
|
|
NewMergeRequestWorker.new.perform(mr, user)
|
|
|
|
mr
|
2016-09-07 08:59:12 +00:00
|
|
|
end
|
2016-09-02 12:03:32 +00:00
|
|
|
|
2016-09-07 08:59:12 +00:00
|
|
|
def merge_merge_requests_closing_issue(issue)
|
2016-11-01 20:18:51 +00:00
|
|
|
merge_requests = issue.closed_by_merge_requests(user)
|
|
|
|
|
2016-09-07 08:59:12 +00:00
|
|
|
merge_requests.each { |merge_request| MergeRequests::MergeService.new(project, user).execute(merge_request) }
|
|
|
|
end
|
2016-09-02 12:03:32 +00:00
|
|
|
|
2016-09-07 08:59:12 +00:00
|
|
|
def deploy_master(environment: 'production')
|
2017-06-01 18:46:34 +00:00
|
|
|
dummy_job =
|
|
|
|
case environment
|
|
|
|
when 'production'
|
|
|
|
dummy_production_job
|
|
|
|
when 'staging'
|
|
|
|
dummy_staging_job
|
|
|
|
else
|
|
|
|
raise ArgumentError
|
|
|
|
end
|
|
|
|
|
|
|
|
CreateDeploymentService.new(dummy_job).execute
|
|
|
|
end
|
|
|
|
|
|
|
|
def dummy_production_job
|
|
|
|
@dummy_job ||= new_dummy_job('production')
|
|
|
|
end
|
|
|
|
|
|
|
|
def dummy_staging_job
|
|
|
|
@dummy_job ||= new_dummy_job('staging')
|
|
|
|
end
|
|
|
|
|
|
|
|
def dummy_pipeline
|
|
|
|
@dummy_pipeline ||=
|
2017-07-05 19:23:10 +00:00
|
|
|
Ci::Pipeline.new(
|
2017-07-05 11:29:18 +00:00
|
|
|
sha: project.repository.commit('master').sha,
|
2017-08-23 11:48:48 +00:00
|
|
|
ref: 'master',
|
|
|
|
source: :push,
|
2017-08-31 16:51:55 +00:00
|
|
|
project: project,
|
2017-09-02 07:31:14 +00:00
|
|
|
protected: false)
|
2017-06-01 18:46:34 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def new_dummy_job(environment)
|
2017-06-02 13:00:56 +00:00
|
|
|
project.environments.find_or_create_by(name: environment)
|
|
|
|
|
2017-06-01 18:46:34 +00:00
|
|
|
Ci::Build.new(
|
|
|
|
project: project,
|
|
|
|
user: user,
|
|
|
|
environment: environment,
|
|
|
|
ref: 'master',
|
|
|
|
tag: false,
|
|
|
|
name: 'dummy',
|
2017-11-06 10:36:11 +00:00
|
|
|
stage: 'dummy',
|
2017-08-31 16:51:55 +00:00
|
|
|
pipeline: dummy_pipeline,
|
2017-09-02 07:31:14 +00:00
|
|
|
protected: false)
|
2016-09-02 12:03:32 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
RSpec.configure do |config|
|
2016-09-07 08:59:12 +00:00
|
|
|
config.include CycleAnalyticsHelpers
|
2016-09-02 12:03:32 +00:00
|
|
|
end
|