Hogyan lehet változót átvinni a CI/CD folyamatban a feladatok között?
sobes.tech MI
Válasz az MI-től
A CI/CD folyamatban a változók közötti átadás általában artefaktumokat vagy környezeti változókat használ. Nézzük meg a tipikus módszereket:
-
Artefaktumok: Az előző feladat egy változó értékét fájlban tárolja, amely artefaktumként van megjelölve. A következő feladat letölti ezt az artefaktumot, és olvassa az értéket a fájlból. Ez alkalmas nagy adatmennyiség vagy fájlok esetén.
# .gitlab-ci.yml (Gitlab CI példa) 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 "A változó értéke: $MY_VARIABLE" -
Környezeti változók: Néhány CI/CD rendszer lehetővé teszi, hogy a jelenlegi feladat szkriptjéből közvetlenül beállítsuk a következő feladatok környezeti változóit.
-
Gitlab CI: Használja az
artifacts:reports:dotenv-t.# .gitlab-ci.yml (dotenv példával) 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 # Győződjön meg arról, hogy az artefaktumok betöltődtek script: - echo "A változó értéke: $MY_VARIABLE" # A változó közvetlenül elérhető -
Jenkins Pipeline: Használja a
stashésunstashfunkciókat fájlokhoz vagy azenv-t környezeti változókhoz.// Jenkinsfile (példa env-vel) pipeline { agent any stages { stage('Producer') { steps { script { env.MY_VARIABLE = "MY_VARIABLE_VALUE" } echo "A MY_VARIABLE beállítva a producerben: ${env.MY_VARIABLE}" } } stage('Consumer') { steps { echo "Az érték a fogyasztónál: ${env.MY_VARIABLE}" // A változó elérhető } } } }vagy a
stash/unstash-szal:// Jenkinsfile (stash/unstash példa) 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 "Az érték a fogyasztónál: ${myVariable}" } } } } }
-
-
CI/CD-specifikus API-k: Néhány platform API-t kínál a változók mentésére és lekérésére. Ez kevésbé elterjedt a szokásos esetekben.
-
Megosztott kötet: Ha a feladatok ugyanazon a gépen vagy klaszteren futnak, akkor ideiglenes adatok tárolására megosztott kötetet lehet használni.
A módszer kiválasztása a használt CI/CD platformtól, az átadott adatok típusától és mennyiségétől függ. Az artefaktumok és a környezeti változók a platform speciális mechanizmusain keresztül (dotenv, set +e) a legelterjedtebb és legmegbízhatóbb megközelítések.