Text size
പരീക്ഷിച്ചറിഞ്ഞത്6 മിനിറ്റ് വായന

ഓരോ പിൻ അഭ്യർത്ഥനയ്ക്കും പുതിയ അന്തരീക്ഷം

പങ്കിട്ട വേദി എല്ലാവരെയും മന്ദഗതിയിലാക്കും. പ്രിവ്യൂ പരിതസ്ഥിതികൾ അത് പരിഹരിക്കും, നിങ്ങൾ ചെലവ് നിയന്ത്രിക്കുകയാണെങ്കിൽ.

A fresh environment for every pull request
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

ഞാൻ ജോലി ചെയ്തിട്ടുള്ള എല്ലാ ടീമുകളിലും ഒരു "സ്റ്റേജിംഗ്" പരിസ്ഥിതി ഉണ്ടായിരുന്നു. സ്ലാക്കിലെ എല്ലാ ടീമുകളും ഒരേ സംഭാഷണം നടത്തി. "ആരാണ് സംയോജിപ്പിക്കാൻ വിന്യസിച്ചത്? "ഒരു മണിക്കൂറോളം നീയൊന്നും ചെയ്യരുത്, ഞാൻ എന്തോ പരീക്ഷിക്കുകയാണ്". "ഇനി വീണ്ടും സ്റ്റേജിംഗ് തകരാറിലായി, എന്തിനാണെന്ന് ആർക്കെങ്കിലും അറിയാമോ?"

പല ഡെവലപ്പർമാർക്കും ഒരു പൊതുവായ പരിസ്ഥിതി ഒരു കുടുക്ക് സൃഷ്ടിക്കുന്നു. പ്രിവ്യൂ പരിതസ്ഥിതികൾ ആ തടസ്സം ഇല്ലാതാക്കുന്നു.

പങ്കുവെച്ച വേദനിപ്പിക്കുന്നതിന്റെ കാരണം

  • മാറ്റങ്ങൾ പരസ്പരം കൂട്ടിയിടിക്കുന്നു. ഒരേ സ്ഥലത്ത് വിന്യസിച്ചിരിക്കുന്ന രണ്ട് സവിശേഷത ശാഖകൾ പരസ്പരം തിരുത്തിയെഴുതുന്നു.
  • അത് എപ്പോഴും അല്പം തകർന്നിരിക്കുന്നു. ആരുടെയെങ്കിലും പകുതി പണിയും അവിടെയുണ്ട്.
  • പ്രതികരണം വളരെ പതുക്കെയാണ്. അവലോകകര് , ടെസ്റ്റര് , ഉത്പന്ന മാനേജര് എന്നിവര് ക്ക് ഒരു മാറ്റം കാണാന് കഴിയില്ല അത് ലയിപ്പിക്കപ്പെടുന്നതുവരെ.
  • ആരും വിശ്വസിക്കുന്നില്ല. ആരും വിശ്വസിക്കാത്ത ഒരു പരിസ്ഥിതി ശരിയായി പരീക്ഷിക്കാത്ത ഒരു പരിതസ്ഥിതി ആണ്.

പ്രിവ്യൂ പരിതസ്ഥിതികൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു

ആശയം ലളിതമാണ്. ഒരു pull request തുറക്കുമ്പോൾ, ആ ബ്രാഞ്ചിനായി മാത്രം ആപ്ലിക്കേഷന്റെ ഒരു താൽക്കാലിക കോപ്പി പൈപ്പ്ലൈൻ സൃഷ്ടിക്കുന്നു, അതിന്റെ സ്വന്തം URL ഉപയോഗിച്ച് pr-142.preview.example.com. ഈ അഭ്യർത്ഥന ലയിപ്പിച്ചോ അടച്ചോ കഴിഞ്ഞാൽ, പരിസ്ഥിതി ഇല്ലാതാക്കപ്പെടും.

കുബർനെറ്റീസിൽ ഇത് നിർമ്മിക്കാൻ ചില സാധാരണ വഴികളുണ്ട്:

ഓരോ പിൻ അഭ്യർത്ഥനയ്ക്കും ഒരു നാമമേഖല. ഏറ്റവും ലളിതമായ രീതി. പൈപ്പ്ലൈൻ ഒരു നാമമേഖല സൃഷ്ടിക്കുന്നു, ബ്രാഞ്ചിന്റെ ഇമേജ് ടാഗ് ഉപയോഗിച്ച് ഹെൽം ചാർട്ട് വിന്യസിക്കുന്നു, കൂടാതെ പ്രിവ്യൂ ഹോസ്റ്റ്നാമത്തിനായി ഒരു പ്രവേശനമോ HTTP റൂട്ടോ സജ്ജമാക്കുന്നു.

പിൾ അഭ്യർത്ഥന ജനറേറ്ററുള്ള അര് ഗോ സിഡി ആപ്ലിക്കേഷന് സെറ്റ്സ്. അര് ഗോ സിഡി നിങ്ങളുടെ റിപ്പോസിറ്ററി നിരീക്ഷിക്കുന്നു ഓരോ തുറന്ന പിൾ അഭ്യർത്ഥനയ്ക്കും ഒരു ആപ്ലിക്കേഷൻ സ്വപ്രേരിതമായി സൃഷ്ടിക്കുന്നു, PR അടയ്ക്കുമ്പോൾ അത് നീക്കം ചെയ്യുന്നു. കസ്റ്റം സ്ക്രിപ്റ്റുകളില്ല.

apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: shop-previews
spec:
  generators:
  - pullRequest:
      github:
        owner: my-org
        repo: shop
      requeueAfterSeconds: 120
  template:
    metadata:
      name: 'shop-pr-{{number}}'
    spec:
      project: previews
      source:
        repoURL: https://github.com/my-org/shop
        targetRevision: '{{head_sha}}'
        path: deploy/chart
        helm:
          parameters:
          - name: image.tag
            value: '{{head_sha}}'
          - name: ingress.host
            value: 'pr-{{number}}.preview.example.com'
      destination:
        server: https://kubernetes.default.svc
        namespace: 'shop-pr-{{number}}'
      syncPolicy:
        automated: { prune: true }
        syncOptions: [CreateNamespace=true]

വിർച്വൽ ക്ലസ്റ്ററുകള് (വി ക്ലസ്റ്റര്). CRD കൾ പോലുള്ള ക്ലസ്റ്റർ തലത്തിലുള്ള വിഭവങ്ങൾ ടീമുകൾക്ക് ആവശ്യമുള്ളപ്പോൾ, ഓരോ pull അഭ്യർത്ഥനയ്ക്കും ഒരു വിർച്വൽ ക്ലസ്റ്റർ ഓരോ തവണയും ഒരു യഥാർത്ഥ ക്ലസ്റ്ററിന് പണം നൽകാതെ പൂർണ്ണമായ ഒറ്റപ്പെടൽ നൽകുന്നു.

ഏറ്റവും നല്ല അവലോകന അഭിപ്രായം "ഞാൻ അത് ക്ലിക്കുചെയ്തു, അത് പ്രവർത്തിക്കുന്നു", ഒപ്പം പ്രിവ്യൂ പരിതസ്ഥിതികൾ ലയിപ്പിക്കുന്നതിന് മുമ്പ് അത് സാധ്യമാക്കുന്നു.

വിവരങ്ങളും രഹസ്യങ്ങളും: ബുദ്ധിമുട്ടുള്ള ഭാഗം

ആപ്ലിക്കേഷൻ വിന്യസിക്കുക എന്നത് എളുപ്പമുള്ള കാര്യമാണ്. കട്ടിയുള്ള ചോദ്യങ്ങൾ:

  • ഡാറ്റാബേസുകൾ. പരീക്ഷണ ഡാറ്റ അടങ്ങിയ ഒരു ചെറിയ ഡാറ്റാബേസ് കണ്ടെയ്നറിൽ നിന്നും, ഓരോ PR നും പ്രത്യേക സ്കീമയുള്ള ഒരു പങ്കിട്ട ഡാറ്റാ ബേസ് വരെ, അജ്ഞാതമാക്കിയ ഡാറ്റാ സെറ്റിന്റെ സ്നാപ്പ്ഷോട്ടുകൾ വരെ ഓപ്ഷനുകൾ വ്യത്യാസപ്പെടുന്നു. വ്യക്തിഗത വിവരങ്ങളുള്ള ഉല്പാദന ഡാറ്റ ഒരിക്കലും പ്രിവ്യൂവിൽ പകര് ക്കരുത്.
  • ബാഹ്യ സേവനങ്ങള് . പേയ്മെന്റ് പ്രൊവൈഡര് മാര് , ഇമെയില് , മൂന്നാം കക്ഷി എപിഐ. സാൻഡ്ബോക്സ് അക്കൌണ്ടുകളോ കപട അക്കൌണ്ടുകളും ഉപയോഗിക്കുക.
  • രഹസ്യങ്ങൾ. പ്രിവ്യൂകൾക്ക് അവരുടെ പരിമിതമായ അംഗീകാരങ്ങൾ ലഭിക്കണം, നല്ലത് ബാഹ്യ രഹസ്യങ്ങളിലൂടെയോ നിങ്ങളുടെ രഹസ്യ മാനേജർ വഴിയോ, ആസൂത്രണ രഹസ്യങ്ങളുടെ പകർപ്പുകളല്ല.
  • വൈൽഡ്കാർഡ് ഡിഎൻഎസും ടിഎൽഎസും. ഒരു വൈഡ്കാർഡ് റെക്കോർഡ് പോലെ *.preview.example.com ഒരു വൈഡ്കാർഡ് സർട്ടിഫിക്കറ്റ് (സെർട്ട് മാനേജർ ഇത് കൈകാര്യം ചെയ്യുന്നു) പുതിയ ഹോസ്റ്റ്നാമങ്ങൾ തൽക്ഷണം പ്രവർത്തിപ്പിക്കുന്നു.

ബില്ല് ചെറുതായിരിക്കാന് വേണ്ടി വൃത്തിയാക്കുന്നു

പ്രിവ്യൂ പരിതസ്ഥിതികൾ വിലകൂടിയതായി മാറുന്നു. അമ്പതു തുറന്ന പിൻ അഭ്യർത്ഥനകൾ നിങ്ങളുടെ ആപ്പിന്റെ അമ്പതു കോപ്പികളാണ്.

സഹായിക്കുന്നവ

  • എപ്പോഴും അടുത്തുള്ള ഭാഗത്ത് നിന്ന് മായ്ക്കുക. ആപ്ലിക്കേഷൻ സെറ്റുകൾ ഇത് ഓട്ടോമാറ്റിക്കായി ചെയ്യുന്നു. സ്ക്രിപ്റ്റുകൾ ഉപയോഗിച്ച്, പൈപ്പ് ലൈനിന് പരാജയപ്പെട്ടാലും ശുചീകരണ ജോലി നടക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക.
  • ജീവിക്കാനുള്ള സമയം. കുറച്ച് ദിവസമായി അപ്ഡേറ്റ് ചെയ്യാത്ത പ്രിവ്യൂകൾ ഇല്ലാതാക്കുക, PR ഇപ്പോഴും തുറന്നിട്ടുണ്ടെങ്കിൽ പോലും.
  • ചെറിയ വിഭവങ്ങൾ. പ്രിവ്യൂവിന് പ്രൊഡക്ഷന് സൈസിംഗ് ആവശ്യമില്ല. ഒരു പകർപ്പ്, കുറഞ്ഞ അഭ്യർത്ഥനകൾ.
  • സ്പോട്ട് അല്ലെങ്കിൽ പ്രീമീറ്റബിൾ നോഡുകൾ പ്രിവ്യൂ നോഡ് പൂളിന് വേണ്ടി.
  • പൂജ്യം വരെ രാത്രിയിൽ ഒരു ലളിതമായ ഷെഡ്യൂൾ ചെയ്ത ജോലി, അല്ലെങ്കിൽ ആദ്യത്തെ അഭ്യർത്ഥനയിൽ പരിസ്ഥിതികളെ ഉണർത്തുന്ന ഉപകരണങ്ങൾ.

അത് വിലപ്പെട്ടതാണോ?

കുറച്ച് ഡെവലപ്പർമാരെക്കൂടി സമാന്തരമായി പ്രവർത്തിക്കുന്ന ടീമുകൾക്ക്, അതെ. അവലോകനങ്ങൾ മെച്ചപ്പെടുന്നു, പരിശോധന നേരത്തെ നടക്കുന്നു, "ആര് സ്റ്റേജിംഗ് തകർത്തു" എന്ന സന്ദേശങ്ങൾ അപ്രത്യക്ഷമാകുന്നു. ഓരോ PR നും ഒരു നെയിംസ്പെയ്സ് ഉപയോഗിച്ച് തുടങ്ങുക, ഡാറ്റ ചേർക്കുക, ശരിയായി വൃത്തിയാക്കുക, അവിടെ നിന്ന് വളരുക.

എന്റെ അഭിപ്രായം: ഓരോ മാറ്റത്തിനും അതിന്റേതായ ചെറിയ ലോകം കൊടുക്കുക. നിങ്ങളുടെ ടീം സ്റ്റേജിംഗ് കാത്തിരിക്കുന്നതില് സമയം നഷ്ടപ്പെടുത്തുന്നതിനേക്കാൾ വിലകുറഞ്ഞതാണ്.

ഡെസ്ലി