എന്തുകൊണ്ടാണ് കനിക്കോയ്ക്ക് Git സന്ദർഭത്തിന് പുറത്തുള്ള ഫയലുകൾ ആക്‌സസ് ചെയ്യാൻ കഴിയാത്തത്

Bash Script

ഡോക്കർ ബിൽഡുകൾക്കായി GitLab CI-ൽ Kaniko ഉപയോഗിക്കുന്നു

ഡോക്കർ ഇമേജുകൾ നിർമ്മിക്കാൻ ഞാൻ GitLab CI-യിൽ Kaniko ഉപയോഗിക്കുന്നു. കനിക്കോ നേരിട്ട് Git പ്രവർത്തനങ്ങളെ പിന്തുണയ്‌ക്കുന്നില്ല, അതിനാൽ എനിക്ക് മറ്റൊരു ശാഖയിലേക്ക് മാറുകയോ കനിക്കോ ഇമേജിനുള്ളിൽ പ്രതിബദ്ധതയോ വരുത്തേണ്ടതുണ്ട്. ചിത്രം നിർമ്മിക്കുന്നതിന് Git സന്ദർഭം ഉപയോഗിക്കാൻ ഇത് എന്നെ അനുവദിക്കുന്നു.

എന്നിരുന്നാലും, Git സന്ദർഭത്തിന് പുറത്തുള്ള മുൻ GitLab CI ജോലികളിൽ നിന്നുള്ള ആർട്ടിഫാക്‌റ്റുകൾ ഉൾപ്പെടുത്തേണ്ടിവരുമ്പോൾ എനിക്ക് ഒരു പ്രശ്‌നമുണ്ട്. ഡോക്കർ ഇമേജുകൾ നിർമ്മിക്കുന്നതിന് Git സന്ദർഭം ഉപയോഗിക്കുമ്പോൾ Git സന്ദർഭത്തിന് പുറത്തുള്ള ഫയലുകളിലേക്കുള്ള ആക്‌സസ് Kaniko നിയന്ത്രിക്കുന്നു. ഒരു ഡോക്കർഫയൽ നിർമ്മിക്കുമ്പോൾ കനിക്കോയിലെ Git സന്ദർഭത്തിന് പുറത്തുള്ള ഫയലുകളോ ഡയറക്ടറികളോ എങ്ങനെ ഉൾപ്പെടുത്താം?

കമാൻഡ് വിവരണം
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" $ARTIFACT_URL --output artifacts.zip പ്രാമാണീകരണത്തിനായി ജോബ് ടോക്കൺ ഉപയോഗിച്ച് ഒരു നിർദ്ദിഷ്‌ട GitLab ജോലിയിൽ നിന്നുള്ള ആർട്ടിഫാക്‌റ്റുകൾ ഡൗൺലോഡ് ചെയ്യുന്നു.
unzip artifacts.zip -d /build/artifacts ഒരു നിർദ്ദിഷ്‌ട ഡയറക്‌ടറിയിലേക്ക് ഡൗൺലോഡ് ചെയ്‌ത ആർട്ടിഫാക്‌ട്‌സ് zip ഫയലിൻ്റെ ഉള്ളടക്കങ്ങൾ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്യുന്നു.
rm artifacts.zip ഡൗൺലോഡ് ചെയ്‌ത zip ഫയൽ എക്‌സ്‌ട്രാക്‌ഷനുശേഷം സ്ഥലം ലാഭിക്കാൻ ഇല്ലാതാക്കുന്നു.
/kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --build-arg artifacts=/build/artifacts നിർദ്ദിഷ്‌ട ഡോക്കർഫയൽ ഉപയോഗിച്ച് ഒരു ഡോക്കർ ഇമേജ് നിർമ്മിക്കുന്നതിനും ആർഗ്യുമെൻ്റുകൾ നിർമ്മിക്കുന്നതിനും കനിക്കോ എക്‌സിക്യൂട്ടർ പ്രവർത്തിപ്പിക്കുന്നു.
dependencies: ഇമേജ് ബിൽഡിനായി ആർട്ടിഫാക്‌റ്റുകൾ ലഭ്യമാണെന്ന് ഉറപ്പാക്കിക്കൊണ്ട്, build_image ജോലി ഡൗൺലോഡ്_ആർട്ടിഫാക്‌റ്റ് ജോലിയെ ആശ്രയിച്ചിരിക്കുന്നുവെന്ന് വ്യക്തമാക്കുന്നു.
artifacts: ഡൗൺലോഡ്_ആർട്ടിഫാക്‌ട്‌സ് ജോലിയിലെ ആർട്ടിഫാക്‌റ്റുകളായി ഉൾപ്പെടുത്തേണ്ട പാതകൾ നിർവചിക്കുന്നു, തുടർന്നുള്ള ജോലികളിലേക്ക് അവ ആക്‌സസ് ചെയ്യാൻ കഴിയും.

കനിക്കോയുമായുള്ള ബാഹ്യ ആർട്ടിഫാക്‌റ്റുകളുടെ സംയോജനം മനസ്സിലാക്കുന്നു

മുമ്പത്തെ GitLab CI ജോലിയിൽ നിന്നുള്ള ആർട്ടിഫാക്‌റ്റുകൾ ഡൗൺലോഡ് ചെയ്യാൻ രൂപകൽപ്പന ചെയ്‌തിരിക്കുന്ന ഒരു ബാഷ് സ്‌ക്രിപ്‌റ്റാണ് ആദ്യ സ്‌ക്രിപ്റ്റ്. ഇത് ഉപയോഗിക്കുന്നു പുരാവസ്തുക്കൾ പ്രാമാണീകരിക്കാനും ലഭ്യമാക്കാനും ജോലി ടോക്കൺ ഉപയോഗിച്ച് കമാൻഡ് ചെയ്യുക. പുരാവസ്തുക്കൾ പിന്നീട് വേർതിരിച്ചെടുക്കുന്നത് ഉപയോഗിച്ചാണ് ഒരു നിർദ്ദിഷ്ട ഡയറക്ടറിയിലേക്ക് കമാൻഡ് ചെയ്യുക. അവസാനമായി, ഡൗൺലോഡ് ചെയ്ത zip ഫയൽ ഉപയോഗിച്ച് ഇല്ലാതാക്കപ്പെടും സ്ഥലം ലാഭിക്കാൻ കമാൻഡ്. നിലവിലെ CI പൈപ്പ്‌ലൈൻ ഘട്ടത്തിൽ മുൻ ജോലികളിൽ നിന്ന് ആവശ്യമായ പുരാവസ്തുക്കൾ ലഭ്യമാണെന്ന് ഈ സ്‌ക്രിപ്റ്റ് ഉറപ്പാക്കുന്നു.

രണ്ട് ഘട്ടങ്ങളെ നിർവചിക്കുന്ന ഒരു GitLab CI YAML കോൺഫിഗറേഷനാണ് രണ്ടാമത്തെ സ്ക്രിപ്റ്റ്: ഒപ്പം . ദി ആർട്ടിഫാക്‌റ്റുകൾ ഡൗൺലോഡ് ചെയ്യാനും എക്‌സ്‌ട്രാക്‌റ്റുചെയ്യാനും സ്റ്റേജ് ബാഷ് സ്‌ക്രിപ്റ്റ് എക്‌സിക്യൂട്ട് ചെയ്യുന്നു, അവ പിന്നീട് നിർവചിക്കുന്നു artifacts തുടർന്നുള്ള ജോലികളിൽ ഉപയോഗിക്കേണ്ട വിഭാഗം. ദി ഒരു ഡോക്കർ ഇമേജ് നിർമ്മിക്കാൻ സ്റ്റേജ് കനിക്കോ എക്സിക്യൂട്ടർ ഉപയോഗിക്കുന്നു, ഡൌൺലോഡ് ചെയ്ത പുരാവസ്തുക്കൾ അവയിൽ വ്യക്തമാക്കി പരാമീറ്റർ. Git സന്ദർഭത്തിന് പുറത്തുള്ള ഫയലുകൾ ഡോക്കർ ബിൽഡ് പ്രോസസ്സിൽ ഉൾപ്പെടുത്തിയിട്ടുണ്ടെന്ന് ഈ സജ്ജീകരണം ഉറപ്പാക്കുന്നു.

GitLab CI-ൽ ബാഹ്യ ആർട്ടിഫാക്‌റ്റുകൾക്കൊപ്പം കനിക്കോ ഉപയോഗിക്കുന്നു

ആർട്ടിഫാക്‌റ്റുകൾ ഡൗൺലോഡ് ചെയ്യുന്നതിനുള്ള ബാഷ് സ്‌ക്രിപ്റ്റ്

#!/bin/bash
# Download artifacts from a previous job
CI_PROJECT_ID=12345
CI_JOB_ID=67890
CI_JOB_TOKEN=$CI_JOB_TOKEN
ARTIFACT_URL="https://gitlab.com/api/v4/projects/$CI_PROJECT_ID/jobs/$CI_JOB_ID/artifacts"
curl --header "JOB-TOKEN: $CI_JOB_TOKEN" $ARTIFACT_URL --output artifacts.zip
unzip artifacts.zip -d /build/artifacts
rm artifacts.zip

കനിക്കോ ബിൽഡിൽ ആർട്ടിഫാക്‌റ്റുകൾ ഉൾപ്പെടുത്തുന്നു

ഗിറ്റ്ലാബ് സിഐ yml കോൺഫിഗറേഷൻ

stages:
  - download_artifacts
  - build_image

download_artifacts:
  stage: download_artifacts
  script:
    - ./download_artifacts.sh
  artifacts:
    paths:
      - /build/artifacts

build_image:
  stage: build_image
  image: gcr.io/kaniko-project/executor:latest
  script:
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --build-arg artifacts=/build/artifacts
  dependencies:
    - download_artifacts

കനിക്കോയ്‌ക്കൊപ്പം മൾട്ടി-സ്റ്റേജ് ഡോക്കർ ബിൽഡുകളിൽ ആർട്ടിഫാക്‌റ്റുകൾ കൈകാര്യം ചെയ്യുന്നു

കനിക്കോ ബിൽഡുകളിലെ പുരാവസ്തുക്കൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ഒരു ബദൽ സമീപനം മൾട്ടി-സ്റ്റേജ് ഡോക്കർ ബിൽഡുകൾ ഉപയോഗിക്കുക എന്നതാണ്. ഒരു മൾട്ടി-സ്റ്റേജ് ബിൽഡിൽ, നിങ്ങളുടെ ആർട്ടിഫാക്‌റ്റുകൾ ഡൗൺലോഡ് ചെയ്യാനും തയ്യാറാക്കാനും നിങ്ങൾക്ക് ഒരു ഘട്ടം ഉപയോഗിക്കാം, തുടർന്ന് അന്തിമ ഇമേജ് ബിൽഡിനായി അവ തുടർന്നുള്ള ഘട്ടങ്ങളിലേക്ക് മാറ്റാം. ഈ രീതി ഡോക്കർ ബിൽഡ് പ്രോസസിനുള്ളിൽ തന്നെ ആർട്ടിഫാക്റ്റ് തയ്യാറാക്കൽ ഉൾക്കൊള്ളാൻ നിങ്ങളെ അനുവദിക്കുന്നു. എല്ലാ പ്രവർത്തനങ്ങളും ഡോക്കർഫയലിനുള്ളിൽ കൈകാര്യം ചെയ്യുന്നതിനാൽ ഇതിന് CI കോൺഫിഗറേഷൻ ലളിതമാക്കാനും കഴിയും.

കൂടാതെ, നിങ്ങൾക്ക് പ്രയോജനപ്പെടുത്താം അവസാന ചിത്രത്തിലേക്ക് മുൻ ഘട്ടങ്ങളിൽ നിന്നുള്ള ഫയലുകൾ ഉൾപ്പെടുത്താൻ Dockerfiles-ൽ കമാൻഡ് ചെയ്യുക. ഒന്നിലധികം ഘട്ടങ്ങളുള്ള നിങ്ങളുടെ ഡോക്കർഫയലിനെ ഘടനാപരമായി ക്രമീകരിക്കുന്നതിലൂടെ, അന്തിമ ഇമേജിൽ ആവശ്യമായ ഫയലുകൾ മാത്രമേ ഉൾപ്പെടുത്തിയിട്ടുള്ളൂവെന്ന് നിങ്ങൾ ഉറപ്പാക്കുന്നു, ഇത് ചിത്രത്തിൻ്റെ വലുപ്പം ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിനും വൃത്തിയുള്ള ബിൽഡ് എൻവയോൺമെൻ്റ് നിലനിർത്തുന്നതിനും സഹായിക്കുന്നു. ഒന്നിലധികം ഡിപൻഡൻസികളും ആർട്ടിഫാക്‌റ്റുകളും കൈകാര്യം ചെയ്യേണ്ട സങ്കീർണ്ണമായ ബിൽഡുകൾക്ക് ഈ സമീപനം പ്രത്യേകിച്ചും ഉപയോഗപ്രദമാണ്.

  1. GitLab CI-യിലെ മുൻ ജോലിയിൽ നിന്നുള്ള ആർട്ടിഫാക്‌റ്റുകൾ എങ്ങനെ ഡൗൺലോഡ് ചെയ്യാം?
  2. ഉപയോഗിക്കുക പുരാവസ്തുക്കൾ ഡൗൺലോഡ് ചെയ്യാൻ ജോബ് ടോക്കണും ജോബ് ഐഡിയും സഹിതം കമാൻഡ് ചെയ്യുക.
  3. Git റിപ്പോസിറ്ററികളുമായി നേരിട്ട് സംവദിക്കാൻ കനിക്കോയ്ക്ക് കഴിയുമോ?
  4. ഇല്ല, കനിക്കോ നേരിട്ട് Git പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നില്ല; കനിക്കോയ്ക്ക് പുറത്ത് നിങ്ങൾ ഇവ കൈകാര്യം ചെയ്യേണ്ടതുണ്ട്.
  5. കനിക്കോ ബിൽഡുകളിൽ മുൻ ജോലികളിൽ നിന്നുള്ള പുരാവസ്തുക്കൾ എനിക്ക് എങ്ങനെ ഉപയോഗിക്കാം?
  6. ഒരു പ്രത്യേക സിഐ ജോലിയിൽ പുരാവസ്തുക്കൾ ഡൗൺലോഡ് ചെയ്ത് ഡിപൻഡൻസികൾ ഉപയോഗിച്ച് കനിക്കോ ബിൽഡ് സ്റ്റേജിലേക്ക് കൈമാറുക.
  7. എന്താണ് ഒരു മൾട്ടി-സ്റ്റേജ് ഡോക്കർ ബിൽഡ്?
  8. ഇൻ്റർമീഡിയറ്റ് ഇമേജുകൾ സൃഷ്ടിക്കുന്നതിനും അന്തിമ ഇമേജ് ഒപ്റ്റിമൈസ് ചെയ്യുന്നതിനും ഒന്നിലധികം ഫ്രോം പ്രസ്താവനകൾ ഉപയോഗിക്കുന്ന ഒരു ഡോക്കർ ബിൽഡ് പ്രോസസ്സ്.
  9. ഒരു മൾട്ടി-സ്റ്റേജ് ഡോക്കർ ബിൽഡിൽ മുൻ ഘട്ടങ്ങളിൽ നിന്നുള്ള ഫയലുകൾ എങ്ങനെ ഉൾപ്പെടുത്താം?
  10. ഉപയോഗിക്കുക Dockerfile-ലെ ഘട്ടങ്ങൾക്കിടയിൽ ഫയലുകൾ കൈമാറുന്നതിനുള്ള കമാൻഡ്.
  11. ഞാൻ എന്തിന് മൾട്ടി-സ്റ്റേജ് ബിൽഡുകൾ ഉപയോഗിക്കണം?
  12. അന്തിമ ഇമേജ് വലുപ്പം ചെറുതാക്കി നിലനിർത്താനും വൃത്തിയുള്ള ബിൽഡ് പരിസ്ഥിതി നിലനിർത്താനും അവ സഹായിക്കുന്നു.
  13. എന്താണ് ഉദ്ദേശ്യം GitLab CI-ലെ വിഭാഗം?
  14. പൈപ്പ്ലൈനിലെ തുടർന്നുള്ള ജോലികളിലേക്ക് കൈമാറേണ്ട ഫയലുകളോ ഡയറക്ടറികളോ നിർവ്വചിക്കാൻ.
  15. GitLab CI-ൽ കനിക്കോ ബിൽഡുകൾ എങ്ങനെ ഒപ്റ്റിമൈസ് ചെയ്യാം?
  16. കാഷിംഗ് ഉപയോഗിച്ച്, സന്ദർഭ വലുപ്പം കുറയ്ക്കുക, മൾട്ടി-സ്റ്റേജ് ബിൽഡുകൾ പ്രയോജനപ്പെടുത്തുക.

പൊതിയുന്നു: കനിക്കോ ബിൽഡുകളിൽ ബാഹ്യ ഫയലുകൾ സംയോജിപ്പിക്കുന്നു

ഡോക്കർ ഇമേജുകൾ നിർമ്മിക്കുന്നതിന് GitLab CI-ൽ Kaniko വിജയകരമായി ഉപയോഗിക്കുന്നത് Git പ്രവർത്തനങ്ങളും ഫയൽ ആക്‌സസ്സും ഉപയോഗിച്ച് അതിൻ്റെ പരിമിതികൾ മനസ്സിലാക്കുന്നത് ഉൾപ്പെടുന്നു. ആർട്ടിഫാക്‌റ്റുകളും മൾട്ടി-സ്റ്റേജ് ഡോക്കർ ബിൽഡുകളും ഡൗൺലോഡ് ചെയ്യാൻ ബാഷ് സ്‌ക്രിപ്റ്റുകൾ ഉപയോഗിക്കുന്നതിലൂടെ, നിങ്ങൾക്ക് Git സന്ദർഭത്തിന് പുറത്തുള്ള ആവശ്യമായ ഫയലുകൾ ഫലപ്രദമായി ഉൾപ്പെടുത്താം. മുമ്പത്തെ CI ജോലികളിൽ നിന്ന് ആവശ്യമായ എല്ലാ ഘടകങ്ങളും ഉൾപ്പെടുത്തിക്കൊണ്ട് നിങ്ങളുടെ ഡോക്കർ ഇമേജുകൾ ശരിയായി നിർമ്മിച്ചിട്ടുണ്ടെന്ന് ഈ സാങ്കേതിക വിദ്യകൾ ഉറപ്പാക്കുന്നു.

കനിക്കോയുടെ നിയന്ത്രണങ്ങൾ ഉയർത്തുന്ന വെല്ലുവിളികളെ തരണം ചെയ്യുന്നതിനുള്ള പ്രധാന തന്ത്രങ്ങളാണ് ഡിപൻഡൻസികൾ ശ്രദ്ധാപൂർവ്വം കൈകാര്യം ചെയ്യുക, പുരാവസ്തുക്കൾ കൈകാര്യം ചെയ്യാൻ GitLab CI കോൺഫിഗറേഷനുകൾ ഉപയോഗിക്കുക. ഈ സമീപനം കൂടുതൽ കാര്യക്ഷമവും കാര്യക്ഷമവുമായ നിർമ്മാണ പ്രക്രിയയിൽ കലാശിക്കുന്നു, ആത്യന്തികമായി മികച്ച പ്രോജക്റ്റ് ഫലങ്ങളിലേക്ക് നയിക്കുന്നു.