Class: Gitlab::Ci::RunnerInstructions

Inherits:
Object
  • Object
show all
Includes:
Allowable
Defined in:
lib/gitlab/ci/runner_instructions.rb

Defined Under Namespace

Classes: ArgumentError

Constant Summary collapse

OS =
{
  linux: {
    human_readable_name: "Linux",
    download_locations: {
      amd64: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64",
      '386': "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-386",
      arm: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm",
      arm64: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-arm64"
    },
    install_script_template_path: "lib/gitlab/ci/runner_instructions/templates/linux/install.sh",
    runner_executable: "sudo gitlab-runner"
  },
  osx: {
    human_readable_name: "macOS",
    download_locations: {
      amd64: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64"
    },
    install_script_template_path: "lib/gitlab/ci/runner_instructions/templates/osx/install.sh",
    runner_executable: "sudo gitlab-runner"
  },
  windows: {
    human_readable_name: "Windows",
    download_locations: {
      amd64: "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe",
      '386': "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-386.exe"
    },
    install_script_template_path: "lib/gitlab/ci/runner_instructions/templates/windows/install.ps1",
    runner_executable: "./gitlab-runner.exe"
  }
}.freeze
OTHER_ENVIRONMENTS =
{
  docker: {
    human_readable_name: "Docker",
    installation_instructions_url: "https://docs.gitlab.com/runner/install/docker.html"
  },
  kubernetes: {
    human_readable_name: "Kubernetes",
    installation_instructions_url: "https://docs.gitlab.com/runner/install/kubernetes.html"
  }
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Allowable

#can?

Constructor Details

#initialize(current_user:, group: nil, project: nil, os:, arch:) ⇒ RunnerInstructions

Returns a new instance of RunnerInstructions.


54
55
56
57
58
59
60
61
62
63
# File 'lib/gitlab/ci/runner_instructions.rb', line 54

def initialize(current_user:, group: nil, project: nil, os:, arch:)
  @current_user = current_user
  @group = group
  @project = project
  @os = os
  @arch = arch
  @errors = []

  validate_params
end

Instance Attribute Details

#errorsObject (readonly)

Returns the value of attribute errors


52
53
54
# File 'lib/gitlab/ci/runner_instructions.rb', line 52

def errors
  @errors
end

Instance Method Details

#install_scriptObject


65
66
67
68
69
70
71
# File 'lib/gitlab/ci/runner_instructions.rb', line 65

def install_script
  with_error_handling [Gitlab::Ci::RunnerInstructions::ArgumentError] do
    raise Gitlab::Ci::RunnerInstructions::ArgumentError, s_('Architecture not found for OS') unless environment[:download_locations].key?(@arch.to_sym)

    replace_variables(get_file(environment[:install_script_template_path]))
  end
end

#register_commandObject


73
74
75
76
77
78
79
80
81
82
# File 'lib/gitlab/ci/runner_instructions.rb', line 73

def register_command
  with_error_handling [Gitlab::Ci::RunnerInstructions::ArgumentError, Gitlab::Access::AccessDeniedError] do
    raise Gitlab::Ci::RunnerInstructions::ArgumentError, s_('No runner executable') unless environment[:runner_executable]

    server_url = Gitlab::Routing.url_helpers.root_url(only_path: false)
    runner_executable = environment[:runner_executable]

    "#{runner_executable} register --url #{server_url} --registration-token #{registration_token}"
  end
end