diff options
Diffstat (limited to 'qa/qa/service/docker_run/jenkins.rb')
-rw-r--r-- | qa/qa/service/docker_run/jenkins.rb | 43 |
1 files changed, 33 insertions, 10 deletions
diff --git a/qa/qa/service/docker_run/jenkins.rb b/qa/qa/service/docker_run/jenkins.rb index 808fab80c63..88b69210382 100644 --- a/qa/qa/service/docker_run/jenkins.rb +++ b/qa/qa/service/docker_run/jenkins.rb @@ -4,11 +4,27 @@ module QA module Service module DockerRun class Jenkins < Base + include Mixins::ThirdPartyDocker + + attr_reader :port + def initialize - @image = 'registry.gitlab.com/gitlab-org/gitlab-qa/jenkins-gitlab:version1' + @image = "#{third_party_repository}/jenkins:latest" @name = 'jenkins-server' @port = '8080' - super() + super + end + + def network + @network || 'test' + end + + def username + Runtime::Env.jenkins_admin_username + end + + def password + Runtime::Env.jenkins_admin_password end def host_address @@ -16,30 +32,37 @@ module QA end def host_name - if !QA::Runtime::Env.running_in_ci? && !runner_network.equal?('airgapped') - 'localhost' - end + return 'localhost' unless QA::Runtime::Env.running_in_ci? super end def register! + authenticate_third_party + command = <<~CMD.tr("\n", ' ') docker run -d --rm --network #{network} --hostname #{host_name} --name #{@name} - --env JENKINS_HOME=jenkins_home + --env JENKINS_USER=#{username} + --env JENKINS_PASS=#{password} --publish #{@port}:8080 --publish 50000:50000 #{@image} CMD - if !QA::Runtime::Env.running_in_ci? && !runner_network.equal?('airgapped') - command.gsub!("--network #{network} ", '') - end + shell(command, mask_secrets: [password]) - shell command + wait_for_running + end + + private + + def wait_for_running + Support::Waiter.wait_until(max_duration: 10, reload_page: false, raise_on_failure: false) do + running? + end end end end |