Skip to main content

Common component

This component needs to be present in each pipeline.

Usage

include:
- component: $CI_SERVER_FQDN/xrow-public/ci-tools/common@stable

Common pipeline stages

The following stages are implemented by default:

NameDescription
.predefault reserved special stage that is executed before all other stages and is used by some helper tasks
lintLinting stage for all linting jobs before build
buildBuild stage for all software builds
testTest stage to validate all software builds
deployDeploy stage to ship a build to environments
releaseRelease stage to publish software releases
.postdefault post pipeline stage in GitLab used by some helper tasks

Validation

When validate-enabled is true, the .pre validation job checks common project settings. If KUBECONFIG is set as a file variable or base64 text variable, the job also validates that the credentials can reach the Kubernetes API server and have the namespace permissions required by CI Tools. The Kubernetes check is skipped when KUBECONFIG is unset.

npm package proxy

Set the common component input npm-package-proxy to route npm package installation through a registry proxy such as Nexus. Components that install npm packages use npm defaults when the input is empty. You can still set CI_NPM_PACKAGE_PROXY directly when a project does not include the common component.

Load the library from a protected repository

A bootloader token is not required when loading the library with the default images in this library.

  • Set the global variable CI_BOOTLOADER_TOKEN in your GitLab instance with the value

Inputs

NameDescriptionDefaultType
------------
bootloaderThe internal bootloader to load the CI library. See scripts/bootloader.sh for details.IyEvYmluL2Jhc2gKCiMgZ2VuZXJhdGUgaGFzaCBhbmQgcmVwbGFjZSBpbiB0ZW1wbGF0ZS9jb21tb24vdGVtcGxhdGUueW1sCiMgY2F0IHNjcmlwdHMvYm9vdGxvYWRlci5zaCB8IGJhc2U2NCAtdyAwCiMgZGVidWcKIyBDSV9ERUJVR19UUkFDRT10cnVlIC4vc2NyaXB0cy9ib290bG9hZGVyLnNoCgppZiBbWyAtdiAxIF1dOyB0aGVuCiAgZXhwb3J0IENJX1RPT0xTX1ZFUlNJT049IiR7MX0iCmVsc2UKICBleHBvcnQgQ0lfVE9PTFNfVkVSU0lPTj0iJHtDSV9UT09MU19WRVJTSU9OOi1tYWlufSIKZmkKCmlmIFtbICR7Q0lfREVCVUdfVFJBQ0U6LWZhbHNlfSA9PSAidHJ1ZSIgXV07IHRoZW4KICBzZXQgLXgKICBzZXQgLW8gcGlwZWZhaWwKZmkKCmZ1bmN0aW9uIGNpX2xvYWRfbGliIHsKICB0bXBkaXI9JChta3RlbXAgLWQgLXAgL3RtcCk7CiAgZXhwb3J0IENJX1RPT0xTX0RJUj0iJHt0bXBkaXJ9IgogIGV4cG9ydCBDSV9TRVJWRVJfRlFETj0iJHtDSV9TRVJWRVJfRlFETjotZ2l0bGFiLmNvbX0iCgogICMgU2V0IHRvIGVtcHR5IHZhbHVlIGlmIENJX0JPT1RMT0FERVJfVE9LRU4gd2FzIG5vdCBleHBhbmRlZAogIGlmIFtbICIke0NJX0JPT1RMT0FERVJfVE9LRU59IiA9fiBDSV9CT09UTE9BREVSX1RPS0VOIF1dOyB0aGVuCiAgICBleHBvcnQgQ0lfQk9PVExPQURFUl9UT0tFTj0iIgogIGZpCgogIGlmIFtbIC14ICIkKGNvbW1hbmQgLXYgY3VybCkiICYmIC14ICIkKGNvbW1hbmQgLXYgdGFyKSIgJiYgKCAtbiAiJHtDSV9CT09UTE9BREVSX1RPS0VOfSIgfHwgIiR7Q0lfU0VSVkVSX0ZRRE59IiA9PSAiZ2l0bGFiLmNvbSIgKSBdXTsgdGhlbgogICAgaWYgW1sgLW4gIiR7Q0lfQk9PVExPQURFUl9UT0tFTn0iIF1dOyB0aGVuCiAgICAgIGF1dGg9Ii0taGVhZGVyIFwiUFJJVkFURS1UT0tFTjogJHtDSV9CT09UTE9BREVSX1RPS0VOfVwiIgogICAgZmkKICAgIGxvY2FsIHVybD0iaHR0cHM6Ly8ke0NJX1NFUlZFUl9GUUROfS9hcGkvdjQvcHJvamVjdHMveHJvdy1wdWJsaWMlMkZjaS10b29scy9yZXBvc2l0b3J5L2FyY2hpdmUudGd6P3NoYT0ke0NJX1RPT0xTX1ZFUlNJT059IgogICAgIyBBbHNvIHdvcmtzIHdpdGggdGFnIGFuZCBicmFuY2ggbmFtZXMKICAgIGN1cmwgLWYgLUwgLXMgLS11cmwgIiR7dXJsfSIgXAogICAgLS1vdXRwdXQgLSB8IHRhciAteHogLUMgIiR7Q0lfVE9PTFNfRElSfSIgLS1zdHJpcC1jb21wb25lbnRzPTE7CiAgICByZXR1cm4gMAogIGZpCiAgaWYgW1sgISAteCAiJChjb21tYW5kIC12IGdpdCkiICYmIC14ICIkKGNvbW1hbmQgLXYgZG5mKSIgJiYgIiQoaWQgLXUpIiAtZXEgIjAiIF1dOyB0aGVuCiAgICBkbmYgaW5zdGFsbCAteSBnaXQ7CiAgZmkKICBpZiBbWyAhIC14ICIkKGNvbW1hbmQgLXYgZ2l0KSIgJiYgLXggIiQoY29tbWFuZCAtdiBtaWNyb2RuZikiICYmICIkKGlkIC11KSIgLWVxICIwIiBdXTsgdGhlbgogICAgbWljcm9kbmYgaW5zdGFsbCAteSBnaXQ7CiAgZmkKICBpZiBbWyAhIC14ICIkKGNvbW1hbmQgLXYgZ2l0KSIgJiYgLXggIiQoY29tbWFuZCAtdiBhcHQtZ2V0KSIgJiYgIiQoaWQgLXUpIiAtZXEgIjAiIF1dOyB0aGVuCiAgICBhcHQtZ2V0IGluc3RhbGwgLXkgZ2l0OwogIGZpCiAgaWYgW1sgLXggIiQoY29tbWFuZCAtdiBnaXQpIiBdXTsgdGhlbgogICAgaWYgW1sgLXYgQ0lfSk9CX1RPS0VOIF1dOyB0aGVuCiAgICAgIGF1dGg9ImdpdGxhYi1jaS10b2tlbjoke0NJX0pPQl9UT0tFTn1AIgogICAgZWxzZQogICAgICBhdXRoPSIiCiAgICBmaQogICAgbG9jYWwgZ3VybD0iaHR0cHM6Ly8ke2F1dGh9JHtDSV9TRVJWRVJfRlFETn0veHJvdy1wdWJsaWMvY2ktdG9vbHMuZ2l0IgogICAgdXJsPSJodHRwczovLyR7YXV0aH0ke0NJX1NFUlZFUl9GUUROfS94cm93LXB1YmxpYy9jaS10b29scy5naXQiCiAgICBnaXQgY29uZmlnIC0tZ2xvYmFsIGFkdmljZS5kZXRhY2hlZEhlYWQgZmFsc2UgfHwgdHJ1ZQogICAgaWYgW1sgIiR7Q0lfVE9PTFNfVkVSU0lPTn0iID1+IF5bYS1mMC05XXs0MH0kIF1dOyB0aGVuCiAgICAgIGdpdCBjbG9uZSAke2d1cmx9ICR7Q0lfVE9PTFNfRElSfQogICAgICBnaXQgLUMgJHtDSV9UT09MU19ESVJ9IHJlc2V0ICR7Q0lfVE9PTFNfVkVSU0lPTn0gLS1oYXJkCiAgICBlbHNlCiAgICAgIGdpdCBjbG9uZSAtLWJyYW5jaCAke0NJX1RPT0xTX1ZFUlNJT059IC0tc2luZ2xlLWJyYW5jaCAke3VybH0gJHtDSV9UT09MU19ESVJ9CiAgICBmaQogICAgaWYgW1sgISAtZCAiJHtDSV9UT09MU19ESVJ9IiAmJiAkQ0lfU0VSVkVSX0ZRRE4gIT0gImdpdGxhYi5jb20iIF1dOyB0aGVuCiAgICAgIGVjaG8gIltlcnJvcl0gQ291bGQgbm90IGNsb25lIENJIHRvb2xzIGxpYnJhcnkgZnJvbSAke0NJX1NFUlZFUl9GUUROfSIKICAgICAgcmV0dXJuIDEKICAgIGZpCiAgICByZXR1cm4gMAogIGZpCiAgcmV0dXJuIDEKfQoKaWYgW1sgLWYgIi4vc2NyaXB0cy9saWJyYXJ5LnNoIiAmJiAtZiAiLi9zY3JpcHRzL2Jvb3Rsb2FkZXIuc2giIF1dOyB0aGVuCiAgQ0lfVE9PTFNfRElSPSQocmVhbHBhdGggLi8pCiAgc291cmNlICIke0NJX1RPT0xTX0RJUn0vc2NyaXB0cy9saWJyYXJ5LnNoIgplbHNlCiAgY2lfbG9hZF9saWIgfHwgewogICAgZWNobyAiW2Vycm9yXSBMb2FkaW5nIGxpYnJhcnk6IGhvc3QgJHtDSV9TRVJWRVJfRlFETn07IHZlcnNpb24gJyR7Q0lfVE9PTFNfVkVSU0lPTn0nOyBkaXJlY3RvcnkgJHtDSV9UT09MU19ESVJ9IgogICAgZXhpdCAxCiAgfQogIHNvdXJjZSAiJHtDSV9UT09MU19ESVJ9L3NjcmlwdHMvbGlicmFyeS5zaCIKZmk=string
bootloader-tokenThe deployment token to use for the bootloader to fetch the CI library from private repositories. Needs to be unmasked if used.${CI_BOOTLOADER_TOKEN}string
ca-bundle-pathThe path to the CA bundle file with additional CA certificates.string
npm-package-proxyOptional npm registry proxy URL used by components that install npm packages.string
registryRegistry to store container image releases in$CI_REGISTRYstring
reporegistry.gitlab.com/xrow-public/ci-toolsstring
repository-pathRepository to store container image releases in$CI_PROJECT_PATHstring
stagesThe stages available in the pipeline.["lint","build","test","release","deploy"]array
trivy-repositoryThe image repository to use for trivy.ghcr.io/aquasecuritystring
validate-allow-failureShould the pipeline continue if linting fails?falseboolean
validate-enabledEnable validation of the GitLab CI configurationfalseboolean
validate-needsThe jobs that the validate job depends on.[]array
validate-scriptEnable validation of the GitLab CI configurationstring