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(os:, arch:) ⇒ RunnerInstructions

Returns a new instance of RunnerInstructions.


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

def initialize(os:, arch:)
  @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


62
63
64
65
66
67
68
# File 'lib/gitlab/ci/runner_instructions.rb', line 62

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


70
71
72
73
74
75
76
77
78
79
# File 'lib/gitlab/ci/runner_instructions.rb', line 70

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