Module: KubeDeployTools

Defined in:
lib/kube_deploy_tools/file_filter.rb,
lib/kube_deploy_tools.rb,
lib/kube_deploy_tools/kdt.rb,
lib/kube_deploy_tools/tag.rb,
lib/kube_deploy_tools/push.rb,
lib/kube_deploy_tools/deploy.rb,
lib/kube_deploy_tools/errors.rb,
lib/kube_deploy_tools/kubectl.rb,
lib/kube_deploy_tools/publish.rb,
lib/kube_deploy_tools/version.rb,
lib/kube_deploy_tools/generate.rb,
lib/kube_deploy_tools/templater.rb,
lib/kube_deploy_tools/shellrunner.rb,
lib/kube_deploy_tools/push/options.rb,
lib/kube_deploy_tools/deploy/options.rb,
lib/kube_deploy_tools/image_registry.rb,
lib/kube_deploy_tools/make_configmap.rb,
lib/kube_deploy_tools/publish/options.rb,
lib/kube_deploy_tools/formatted_logger.rb,
lib/kube_deploy_tools/generate/options.rb,
lib/kube_deploy_tools/artifact_registry.rb,
lib/kube_deploy_tools/templater/options.rb,
lib/kube_deploy_tools/deploy_config_file.rb,
lib/kube_deploy_tools/kubernetes_resource.rb,
lib/kube_deploy_tools/render_deploys_hook.rb,
lib/kube_deploy_tools/built_artifacts_file.rb,
lib/kube_deploy_tools/image_registry/image.rb,
lib/kube_deploy_tools/image_registry/driver.rb,
lib/kube_deploy_tools/make_configmap/options.rb,
lib/kube_deploy_tools/deploy_config_file/util.rb,
lib/kube_deploy_tools/artifact_registry/driver.rb,
lib/kube_deploy_tools/deferred_summary_logging.rb,
lib/kube_deploy_tools/image_registry/driver/aws.rb,
lib/kube_deploy_tools/image_registry/driver/gcp.rb,
lib/kube_deploy_tools/image_registry/driver/base.rb,
lib/kube_deploy_tools/image_registry/driver/noop.rb,
lib/kube_deploy_tools/image_registry/driver/login.rb,
lib/kube_deploy_tools/artifact_registry/driver_gcs.rb,
lib/kube_deploy_tools/artifact_registry/driver_base.rb,
lib/kube_deploy_tools/kubernetes_resource/deployment.rb,
lib/kube_deploy_tools/artifact_registry/driver_artifactory.rb

Overview

Abstract Driver class that specific implementations inherit

Defined Under Namespace

Modules: DeferredSummaryLogging, DeployConfigFileUtil, FileFilter, RenderDeploysHook Classes: ArtifactRegistry, BuiltArtifactsFile, ConfigMap, Deploy, DeployConfigFile, Deployment, FatalDeploymentError, FormattedLogger, Generate, ImageRegistry, Kdt, Kubectl, KubernetesResource, Logger, Options, Publish, Push, Shellrunner, StrictHash, Templater

Constant Summary collapse

VERSION =
'3.0.8'
DEFAULT_FLAGS =
{
  'image_tag' => tag_from_local_env,
  'tag' => tag_from_local_env,
}.freeze
PROJECT =
ENV['JOB_NAME'] || File.basename(`git config remote.origin.url`.chomp, '.git')
BUILD_NUMBER =
ENV.fetch('BUILD_ID', 'dev')

Class Method Summary collapse

Class Method Details

.tag_from_local_envObject

Default method to derive a tag name. An image is tagged for the git sha.



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/kube_deploy_tools/tag.rb', line 4

def self.tag_from_local_env
  codestamp = `git describe --always --abbrev=7 --match=NONE --dirty`.chop

  # Include the Jenkins build ID, in the case that there are
  # multiple builds at the same git branch and git commit,
  # but with different dependencies. e.g. Java builds
  build = ENV.fetch('BUILD_ID', 'dev')[0...7]

  docker_tag = "#{codestamp}-#{build}"

  # Validate image tag.
  #
  # Definition of a valid image tag via:
  # https://docs.docker.com/engine/reference/commandline/tag/#extended-description:
  #
  # > A tag name must be valid ASCII and may contain lowercase and uppercase
  # > letters, digits, underscores, periods and dashes.
  # > A tag name may not start with a period or a dash and
  # > may contain a maximum of 128 characters.
  #
  # Regex for a valid image tag via:
  # https://github.com/docker/distribution/blob/749f6afb4572201e3c37325d0ffedb6f32be8950/reference/regexp.go#L37
  docker_tag = docker_tag.scan(/[\w][\w.-]{0,127}/).first
  if docker_tag.nil?
    raise "Expected valid Docker tag, but received '#{codestamp}'"
  end

  "#{docker_tag}"
end