Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

Gitlab-en aldagaiak hainbat lekutan ezar daitezke:

  1. Taldearen ezarpenetan
  2. Proiektuaren ezarpenetan
  3. .gitlab-ci.yml barruan

Kasu honetan, taldeen eta proiektuaren ezarpenetan aldagaiak "fitxategia" edo "aldagai arrunta" gisa ezar daitezke eta "babestuta" eta "maskara" kontrol-laukiak markatu.

Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

Has gaitezen herentzia sinpletik eta pixkanaka konplexuagoa izango da.

Lehentasun mailen behin betiko zerrenda dokumentuaren amaieran aurki daiteke.

Oinordetza taldeekin [iturriak]

Taldeetako aldagaiak heredatzen dira, eta arauarekin taldea zenbat eta hurbilago egon proiektutik, orduan eta garrantzitsuagoa da haren balioa.

Aldagaiak dituzten taldeak

Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none

echo:
  stage: test
  script:
    - echo $MSG

Pipeline emaitza

$ echo $MSG
B

Aldagaia B taldean zehaztu ez balitz, A balioa ikusiko genuke.

.gitlab-ci.yml barruan aldagaiak heredatuz [iturriak]

Hemen dena nahiko erraza da: aldagai bat globalki ezar dezakezu, edo lanaren barruan gainidatzi dezakezu.

Aldagaiak dituzten taldeak

Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

.gitlab-ci.yml

Sor ditzagun orain 2 lanpostu, horietako batean $MSG esplizituki adieraziko dugu.

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

Pipeline emaitza

  • oihartzuna:
    $ echo $MSG
    Custom in global .gitlab-ci.yml
    Job succeeded
  • oihartzuna barietatearekin:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Oinordetza taldeekin eta .gitlab-ci.yml barruan [iturriak]

Saia gaitezen aurreko 2 adibideak konbinatzen. Taldeko aldagaiek lehentasuna dute .gitlab-ci.yml barruko aldagaien aurrean.

Aldagaiak dituzten taldeak

Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

Pipeline emaitza

  • oihartzuna:
    $ echo $MSG
    Y
    Job succeeded
  • oihartzuna barietatearekin:
    $ echo $MSG
    Y
    Job succeeded

Oinordetza proiektuaren ezarpenetan aldagaiak zehaztuz [iturriak]

Proiektuaren ezarpenetan aldagaiek BETI dute lehentasun handiena! Eta .gitlab-ci.yml barruan zehaztutako aldagaiek ez dute inolako funtziorik betetzen.

Aldagaiak dituzten taldeak

Taldeko aldagaiek lehentasun txikiagoa dute.
Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

.gitlab-ci.yml

Erabili dezagun aurreko adibideko fitxategia. Hemen, berriz, .gitlab-ci.yml barruan zehaztutako aldagaiak daude, baina taldeen barruko aldagaiek lehentasuna dute oraindik.

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

Pipeline emaitza

  • oihartzuna:
    $ echo $MSG
    project-3
    Job succeeded
  • oihartzuna barietatearekin:
    $ echo $MSG
    project-3
    Job succeeded

Balio hutsa duen herentzia [iturriak]

Balio hutsa ere balio bat da
Balio huts bat ez da Nulua

Aldagaiak dituzten taldeak

Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

.gitlab-ci.yml

image: busybox:latest
variables:
  GIT_STRATEGY: none
  MSG: "Custom in global .gitlab-ci.yml"

echo:
  stage: test
  script:
    - echo $MSG

echo with var:
  stage: test
  variables:
    MSG: "Custom in job .gitlab-ci.yml"
  script:
    - echo $MSG

Pipeline emaitza

  • oihartzuna:
    $ echo $MSG
    Job succeeded
  • oihartzuna barietatearekin:
    $ echo $MSG
    Job succeeded

Oinordetza barne eta taldeekin [iturriak]

Hemen saiatuko gara 2 proiektua 3 proiektuan sartzen
Kasu honetan taldeek dute lehentasuna.

Aldagaiak dituzten taldeak

Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

.gitlab-ci.yml

Eta ezarri aldagaia globalki .gitlab-ci.yml-en

variables:
 MSG: "With  include  .gitlab-ci.yml"
include:
 - project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
   file: '.gitlab-ci.yml'

Pipeline emaitza

  • oihartzuna:
    $ echo $MSG
    B
    Job succeeded
  • oihartzuna barietatearekin:
    $ echo $MSG
    B
    Job succeeded

Oinordetza barne [iturriak]

Hemen saiatuko gara 2 proiektua 3 proiektuan sartzen.
Baldintzarekin: ez taldeek ez proiektuak berak ez dute aldagairik.

Aldagaiak dituzten taldeak

Nola heredatzen ditu Gitlab-CI-k ingurune-aldagaiak?

.gitlab-ci.yml

Aurreko adibidean bezala

variables:
 MSG: "With  include  .gitlab-ci.yml"
include:
 - project: how-is-gitlab-ci-inherit-environment-variables/z/y/project-3
   file: '.gitlab-ci.yml'

Pipeline emaitza

  • oihartzuna:
    $ echo $MSG
    With include .gitlab-ci.yml
    Job succeeded
  • oihartzuna barietatearekin:
    $ echo $MSG
    Custom in job .gitlab-ci.yml
    Job succeeded

Emaitzak hauek dira lehentasunak:

  1. Aldagaiak proiektuaren ezarpenetan
  2. Aldagaiak taldeka
  3. Lanpostuen barruan zorrozki zehazten diren aldagaiak (fitxategiak barne)
  4. Aldagai globalak .gitlab-ci.yml barruan
  5. Fitxategi barneko aldagai globalak

Ondorioa

Agerikoena ez den puntua da "aldagai bat kodetik zenbat eta hurbilago egon, orduan eta garrantzitsuagoa da" arauak taldeentzat funtzionatzen duela lehenik, eta, ondoren, arau bera .gitlab-ci.yml barruko aldagaietarako, baina baldintzapean bakarrik. taldeetako aldagaiak zehazten ez direla .
Ondoren, puntu garrantzitsu bat .gitlab-ci.yml nagusi eta barneko espazio globala ohikoa dela ulertzea da. Eta sartzea gertatzen den fitxategiak du lehentasuna.

Iturria: www.habr.com

Gehitu iruzkin berria