Sobes.tech
Middle

Kuidas üle kanda muutuja CI/CD protsessis tööde vahel?

sobes.tech AI

Vastus AI-lt

CI/CD protsessis kasutatakse tavaliselt artefakte või keskkonnamuutujaid muutujate edastamiseks tööde vahel. Vaatame tüüpilisi meetodeid:

  1. Artefaktid: Eelmine töö salvestab muutuja väärtuse faili, mis deklareeritakse artefaktina. Järgmine töö allalaadib selle artefakti ja loeb väärtuse failist. Sobib suurema andme- või failimahtude jaoks.

    # .gitlab-ci.yml (näide Gitlab CI-st)
    job_producer:
      stage: build
      script:
        - echo "MY_VARIABLE_VALUE" > variable.txt
      artifacts:
        paths:
          - variable.txt
    
    job_consumer:
      stage: deploy
      dependencies:
        - job_producer
      script:
        - MY_VARIABLE=$(cat variable.txt)
        - echo "Muuttuja väärtus on: $MY_VARIABLE"
    
  2. Keskkonnamuutujad: Mõned CI/CD süsteemid võimaldavad otse skriptist määrata keskkonnamuutujaid järgnevatele töödele.

    • Gitlab CI: Kasutage artifacts:reports:dotenv.

      # .gitlab-ci.yml (näide dotenv-iga)
      job_producer:
        stage: build
        script:
          - echo "MY_VARIABLE=MY_VARIABLE_VALUE" > variables.env
        artifacts:
          reports:
            dotenv: variables.env
      
      job_consumer:
        stage: deploy
        needs:
          - job: job_producer
            artifacts: true # Veenduge, et artefaktid on üles laaditud
        script:
          - echo "Muuttuja väärtus on: $MY_VARIABLE" # Muutuja on otse saadaval
      
    • Jenkins Pipeline: Kasutage stash ja unstash funktsioone failidele või env keskkonnamuutujatele.

      // Jenkinsfile (näide env-iga)
      pipeline {
          agent any
          stages {
              stage('Producer') {
                  steps {
                      script {
                          env.MY_VARIABLE = "MY_VARIABLE_VALUE"
                      }
                      echo "Seadistatud MY_VARIABLE tootmises: ${env.MY_VARIABLE}"
                  }
              }
              stage('Consumer') {
                  steps {
                      echo "Väärtus tarbimises: ${env.MY_VARIABLE}" // Muutuja on saadaval
                  }
              }
          }
      }
      

      või stash/unstash-iga:

      // Jenkinsfile (näide stash/unstash-iga)
      pipeline {
          agent any
          stages {
              stage('Producer') {
                  steps {
                      sh 'echo "MY_VARIABLE_VALUE" > variable.txt'
                      stash name: 'variable_file', includes: 'variable.txt'
                  }
              }
              stage('Consumer') {
                  steps {
                      unstash 'variable_file'
                      script {
                         def myVariable = readFile 'variable.txt'
                         echo "Väärtus tarbimises: ${myVariable}"
                      }
                  }
              }
          }
      }
      
  3. CI/CD-spetsiifilised API-d: Mõned platvormid pakuvad API-d muutuja salvestamiseks ja saamiseks. See on vähem levinud meetod standardjuhtumite jaoks.

  4. Shared volume: Kui tööde käivitamine toimub samal hostil või klastril, saab kasutada ühise mahu ajutiste andmete salvestamiseks.

Valitud meetod sõltub kasutatavast CI/CD platvormist, andmetüübist ja mahust. Artefaktid ja keskkonnamuutujad platvormi spetsiaalsete mehhanismide (dotenv, set +e) kaudu on kõige levinumad ja usaldusväärsemad lähenemised.