വേഗതയേറിയ സിഐ പൈപ്പ്ലൈനുകൾ: 40 മിനിറ്റിൽ നിന്ന് 8 മിനിറ്റിലേക്ക്
ഏറ്റവും വലിയ വ്യത്യാസം ഉണ്ടാക്കുന്ന കാഷിംഗ്, സ്പ്ലിറ്റ്, റണ്ണർ തന്ത്രങ്ങൾ.
ഏറ്റവും വലിയ വ്യത്യാസം ഉണ്ടാക്കുന്ന കാഷിംഗ്, സ്പ്ലിറ്റ്, റണ്ണർ തന്ത്രങ്ങൾ.

ഒരു പതുക്കിയ പൈപ്പ്ലൈനിന് കമ്പ്യൂട്ടർ സമയത്തേക്കാൾ വില കൂടുതലാണ്. കാത്തിരിക്കുമ്പോൾ ഡെവലപ്പർമാർ മറ്റൊന്നിലേക്ക് മാറുന്നു, ഫോക്കസ് നഷ്ടപ്പെടുന്നു, വീണ്ടും കാത്തിരിക്കാതിരിക്കാൻ മാറ്റങ്ങൾ കൂട്ടിച്ചേർക്കുന്നു, "ഇത് ഒരുപക്ഷേ കടന്നുപോകും" എന്ന ചിന്തയിൽ ലയിക്കാൻ തുടങ്ങുന്നു. 40 മിനിറ്റ് നീണ്ടു നിൽക്കുന്ന ഒരു പൈപ്പ്ലൈൻ എല്ലാം മോശമാക്കുന്നു. വലിയ മാറ്റങ്ങൾ, വേഗത കുറഞ്ഞ അവലോകനങ്ങൾ, കൂടുതൽ അപകടസാധ്യത.
മിക്ക പദ്ധതികളും അവരുടെ പൈപ്പ്ലൈൻ സമയം 40 മിനിറ്റിൽ നിന്ന് 10 മിനിറ്റിലധികം കുറയ്ക്കുന്നു. ഏറ്റവും വലിയ വ്യത്യാസം ഉണ്ടാക്കുന്ന സാങ്കേതിക വിദ്യകൾ ഇതാ, ഞാൻ ശ്രമിക്കുന്ന ക്രമത്തിൽ.
അന്ധമായി ഒപ്റ്റിമൈസ് ചെയ്യരുത്. ആദ്യം, നടപടി:
സാധാരണയായി മൂന്നോ നാലോ ചുവടുകള് മിക്ക സമയവും എടുക്കുന്നു. അവിടെ ശ്രദ്ധിക്കുക.
മിക്ക പൈപ്പ് ലൈനുകളുടെയും ഏറ്റവും വലിയ വിജയം.
ആശ്രിതത്വത്തിന്റെ ഒളിപ്പിടങ്ങൾ. പാക്കേജ് ഡൌൺലോഡുകൾ (npm, pip, Maven, Go മൊഡ്യൂളുകൾ) ഓരോ റണ്ണിലും ആദ്യം മുതൽ സംഭവിക്കരുത്. മിക്ക സജ്ജീകരണ പ്രവർത്തനങ്ങളിലും ലോക്ക് ഫയലിൽ ഒരു ബിൽറ്റ്-ഇൻ കാഷെ ഓപ്ഷൻ കീ ചെയ്തിട്ടുണ്ട്:
- uses: actions/setup-node@<sha> # v4
with:
node-version: 22
cache: npm
ഡോക്കര് ലെയര് കാഷിംഗ്. ബിൽഡ്കിറ്റ് ഉപയോഗിച്ച്, റൺസ് തമ്മിലുള്ള കാഷെ ലെയറുകൾ, ഐസി ദാതാവിന്റെ കാഷെ അല്ലെങ്കിൽ ഒരു രജിസ്ട്രിയിൽഃ
- uses: docker/build-push-action@<sha> # v6
with:
cache-from: type=registry,ref=ghcr.io/my-org/shop-api:buildcache
cache-to: type=registry,ref=ghcr.io/my-org/shop-api:buildcache,mode=max
നന്നായി ഓർഡർ ചെയ്ത ഡോക്കർഫയലുമായി (ആദ്യം ആശ്രയത്വങ്ങൾ, അവസാനം കോഡ്) സംയോജിപ്പിച്ച്, ഇമേജ് ബിൽഡുകൾ പലപ്പോഴും നിരവധി മിനിറ്റുകളിൽ നിന്ന് ഒന്നിൽ താഴെയായി കുറയുന്നു.
ഒളിപ്പിടങ്ങൾ ഉണ്ടാക്കുക. ഗ്രാഡ്ലെ, ബേസെൽ, എൻഎക്സ്, ടർബോറെപ്പോ തുടങ്ങിയ ഉപകരണങ്ങള് ക്ക് ബിൽഡ് ചെയ്യാനും വിദൂരമായി ഔട്ട്പുട്ടുകൾ പരിശോധിക്കാനും സാധിക്കും, അങ്ങനെ മാറ്റമില്ലാത്ത മൊഡ്യൂളുകള് പുനർനിർമിക്കുകയോ വീണ്ടും പരിശോധിക്കുകയോ ചെയ്യുന്നില്ല.
നിങ്ങളുടെ പൈപ്പ് ലൈനിന് വീണ്ടും ചെയ്യേണ്ടിവരാത്ത ജോലിയാണ് ഏറ്റവും വേഗതയേറിയത്.
പല പൈപ്പ്ലൈനുകളും ഒരു പടി പിന്നാലെ മറ്റൊന്ന് നടക്കുന്നു. സ്വതന്ത്രമായ ജോലി തേടുക:
പരിശോധനകളാണ് ഏറ്റവും ദൈർഘ്യമേറിയ ഘട്ടം. രണ്ടു രീതികൾ:
പരീക്ഷണം വിഭജിക്കുന്നു. ടെസ്റ്റ് സ്യൂട്ടിനെ പല സമാന്തര ജോലികളിലായി വിഭജിക്കുക, ചരിത്രപരമായ സമയക്രമത്തിൽ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, അതിനാൽ ഓരോ ജോലിയും ഏകദേശം ഒരേ സമയം എടുക്കും. പല ടെസ്റ്റ് ഫ്രെയിം വർക്കുകളും ഐസി ടൂളുകളും ഇത് പ്രാദേശികമായി അല്ലെങ്കിൽ ചെറിയ സഹായ ഉപകരണങ്ങളിലൂടെ പിന്തുണയ്ക്കുന്നു.
ഫ്ളാക്ക് ടെസ്റ്റ് ക്വാറന്റീൻ. ഒരു പരീക്ഷണം പരാജയപ്പെട്ടാൽ, അത് പൈപ്പ്ലൈനിന്റെ മുഴുവൻ ഭാഗവും വീണ്ടും പ്രവർത്തിപ്പിക്കും. അത് വെറും മാലിന്യമാണ്. ഫ്ലാക്ക് ടെസ്റ്റുകൾ ട്രാക്കുചെയ്യുക, അവയെ ഒരു പ്രത്യേക നോൺ ബ്ലോക്കിംഗ് ജോലിക്കായി മാറ്റുക, അവ ഒരു ഡെഡ്ലൈനിൽ പരിഹരിക്കുക. എല്ലായിടത്തും ഓട്ടോമാറ്റിക് റീട്രൈസ് ചേര് ത്ത് അതിനെ കുറിച്ച് മറക്കരുത്.
എല്ലാ പരീക്ഷണങ്ങളും ഓരോ കമ്മിറ്റിലും നടത്തേണ്ടതുണ്ടോ എന്ന് ചോദിക്കുക. നീണ്ട എൻഡ്-ടു-എൻഡ് സ്യൂട്ടുകൾ മെയിൻ അല്ലെങ്കിൽ നൈറ്റ്ലി ലേക്ക് ലയിപ്പിച്ചുകൊണ്ട് പ്രവർത്തിപ്പിക്കാൻ കഴിയും, അതേസമയം പിൻ അഭ്യർത്ഥനകൾ ഫോക്കസ് ചെയ്ത ഉപസെറ്റ് പ്രവർത്തിപ്പിക്കുന്നു.
മോണോറെപ്പോയില് , എല്ലാം പുനര് നിർമ്മിക്കുകയും വീണ്ടും പരിശോധിക്കുകയും ചെയ്യുക എന്നത് ഒരു വരി മാറ്റത്തിന് ഏറ്റവും വലിയ മാലിന്യ സ്രോതസ്സാണ്:
ചിലപ്പോള് യന്ത്രം തന്നെയാണ് തടസ്സം.
fetch-depth: 1) നിങ്ങൾക്ക് ചരിത്രം ആവശ്യമില്ലെങ്കിൽ.concurrency കൂടെ cancel-in-progress).ഒരു പുഷ് മുതൽ ഗ്രീൻ ചെക്ക് വരെയുള്ള പത്ത് മിനിറ്റിനുള്ളിൽ ഒരു പിൻ അഭ്യർത്ഥന മിക്ക സേവനങ്ങൾക്കും നല്ല ലക്ഷ്യമാണ്. അഞ്ചു വയസിനു താഴെയുള്ളത് നല്ലതാണ്. അളക്കുക, കാഷെ ചെയ്യുക, സമാന്തരമാക്കുക, ചെറിയ പരിശോധനകൾ നടത്തുക, എത്ര സമയം അപ്രത്യക്ഷമാകുന്നു എന്ന് നിങ്ങൾ അത്ഭുതപ്പെടും.
എന്റെ അഭിപ്രായം: പൈപ്പ് ലൈനിന്റെ വേഗത ഒരു സവിശേഷതയായി കണക്കാക്കുക. നിങ്ങൾ സംരക്ഷിക്കുന്ന ഓരോ മിനിറ്റും ഓരോ ഡെവലപ്പർമാരും വീണ്ടും സംരക്ഷിക്കുന്നു, ഓരോ കമ്മിറ്റിലും.
ഡെസ്ലി