आज के ज़माने में GiBOGONONONONONONT (हिन्दी (Hindi))

आज के ज़माने में GiBOGONONONONONONT

Thursday, 04 December 2025

//

9 minute read

कोर सिद्धांत: तेजी से और दर्दरहित छोड़ दो, और आप और अधिक बार छोड़ देंगे. जब गाड़ी चलाते वक्‍त बदलाव होते हैं, तो कई बार तो आप छोटे - छोटे बदलाव करते हैं ।

यह गाइड मैं उत्पादन में उपयोग की उपलब्ध योजनाओं को कवर करता है, सरल टैग- आधारित कर्मचारी वितरण के लिए। सभी उदाहरण वास्तविक से आते हैं। Git क्रियाएँ इस भंडार में काम करते हैं.

ग्लैडियेटर की रेल - व्यवस्था

Voning विवरण में जोड़ने से पहले, यहाँ है कि कैसे आम नीतियाँ तुलना करते हैं:

[ पेज 11 पर तसवीर] |----------|----------|------------|-----------| | टैग आधारित WAV अनुप्रयोग, स्पष्ट रिलीज कम्‌स स्टार्टअप, सोलो devs, प्रौढ़ टीमों | शाखा आधारित एमिलिंग रिपरेशन लॉशन कम प्रारंभ होता है, तेज-ग्रेसन टीम | GiFestivalVoiceName सनकिम्पेड रिलीज, बहुत से संस्करण हेलीफाइड, पालन-clowns | ट्रक आधारित + विशेषता फ्लैग [ चित्र का श्रेय] | मोनोरे- मल्टी- पैकेज जन्नती लाइब्रेरी, कोड अतिसंपारकारी मध्यम प्लेटफॉर्म टीम, ओएसएस परियोजना

कहाँ कार्य करता है

प्रारंभ होता है व छोटा टीम: टैग आधारित या शाखा आधारित तैनाती के साथ प्रारंभ करें. इसे हमेशा आसान रखें - आप सहज रूप से आगे जोड़ सकते हैं. सुविधा के साथ आधारित विकास लोकप्रिय है लेकिन छोटे टीमों के लिए gixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

छोटे - छोटे रंग: अकसर कम - से - कम कुल वातावरण में, एक - दूसरे को खुश करने के लिए ज़रूरी होता है कि एक - दूसरे को सहयोग दें और एक - दूसरे को सहयोग दें ।

सोलो डेवलपर: टैग आधारित मूल्य है. एक टैग दबाएँ, तैनाती हो जाता है. कोई समारोह, कोई खड़ा नहीं.

प्लेटफॉर्म/ लाइब्रेरी टोली: हर पैकेज के स्वतंत्र संस्करण के साथ एकलीकरण की ज़रूरत होती है ।

टैग- बेस्ड बीजीय

सबसे आसान और सबसे भरोसेमंद रणनीति ।

एनवायरनमेंट लक्ष्य

on:
  push:
    tags:
      - 'release-*'  # Production
      - 'local-*'    # Dev environment
- name: Build Docker image
  run: |
    TAG_NAME=${GITHUB_REF#refs/tags/}
    if [[ "$TAG_NAME" == local-* ]]; then
      docker build -t myapp:local .
    else
      docker build -t myapp:latest -t myapp:$(date +%s) .
    fi

क्यों यह काम करता है: एक सरल मानसिक मॉडल, स्पष्ट प्रदर्शन, समय के गुज़रते टैग के माध्यम से आसान रोलबैक।

# Deploy to production
git tag release-v2024.12.01 && git push origin release-v2024.12.01

# Deploy to dev
git tag local-feature-test && git push origin local-feature-test

बहु- पैकेज संस्करण

एकलानेक पैकेजों के साथ एकलाने योग्य पैकेजों के लिए, टैग उपसर्ग का उपयोग करें जो कि पैकेज को रिहा करने के लिए:

# Different workflows, different tag patterns
# umami-net.yml
on:
  push:
    tags: ['umamiv*.*.*']  # e.g., umamiv1.0.5

# fetchextension.yml
on:
  push:
    tags: ['fetchextension-v*.*.*']  # e.g., fetchextension-v1.2.0

संस्करण निकालें तथा इसे पूरे मे इस्तेमाल करें:

- name: Extract version
  run: echo "VERSION=${GITHUB_REF#refs/tags/umamiv}" >> $GITHUB_OUTPUT

- name: Build & Pack
  run: |
    dotnet build -c Release -p:Version=${{ steps.version.outputs.VERSION }}
    dotnet pack -c Release -p:PackageVersion=${{ steps.version.outputs.VERSION }}

स्वचालित संस्करण के लिए, न्यून. Git टैगों में से संस्करणों की गणना करता है:

<PackageReference Include="MinVer" Version="6.0.0" PrivateAssets="all" />
<PropertyGroup>
  <MinVerTagPrefix>umamiv</MinVerTagPrefix>
</PropertyGroup>

शाखा- बेस्ड dpropy

विशिष्ट शाखाओं में कोड देशों पर जब कोड छोटा हो तो स्वचालित रूप से उपलब्ध हों. स्टार्टअप तथा तेज- किलोमीटर की टीमों में सामान्य.

on:
  push:
    branches: [main]      # → Production
    # branches: [develop] # → Staging

छैतिज पैमाना: कोई हस्तचालित कदम नहीं, सम्मिलित करने पर तैनात करता है कॉन्न्स: दुर्घटनाकारी तैनाती संभव, कम सुस्पष्ट इतिहास

मैं एक Dudbe के पास - शाखा धक्का पर निर्माण का उपयोग करें (CII सत्यापन), लेकिन केवल टैग पर प्रकाशित:

on:
  push:
    tags: ['scheduler-*']
    branches: [main, local]

jobs:
  build:
    # Always build
  publish:
    if: startsWith(github.ref, 'refs/tags/')  # Only publish on tags

प्रहरीदुर्ग के साथ स्वतः अद्यतन करें

खुद की तैनाती के लिए, प्रहरीदुर्ग नई छवियों को स्वचालित खींच रहा है:

services:
  app:
    image: myapp:latest
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

  watchtower:
    image: containrrr/watchtower
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: --interval 300  # Check every 5 minutes

न्यायिक प्रवाह: दबाएँ टैग नीचेोक्‍त काम को बल देता है ।

विशेषता गेट

अगर आप तैनात बग को तैनात करते हैं तो तेज तैनात करना बेकार है. हर काम का फूल में शामिल होना चाहिए:

- name: Run tests
  run: dotnet test --configuration Release

- name: Build
  run: dotnet build --configuration Release

# Tests or build fail → workflow stops → no publish

बहु कार्य पैकेजों के लिए सभी लक्ष्य बिल्ड करें:

- run: dotnet build -c Release --framework net8.0
- run: dotnet build -c Release --framework net9.0

ओसीसी के साथ सुरक्षित प्रकाशक

आज के पास जाने के लिए कोई रहस्य नहीं है, कोई कुंजी नहीं जो छेद करने के लिए है:

permissions:
  id-token: write
  contents: read

- uses: NuGet/login@v1
  with:
    user: 'myusername'

- run: dotnet nuget push *.nupkg --api-key ${{ steps.login.outputs.NUGET_API_KEY }}

GiHhb इसके ओएमसी चिह्न के लिए एक छोटे से एनू लेग कुंजी के लिए. Nue.org पर भरोसा करें यह सक्षम करने के लिए.

सिनेइन्स सुरक्षा प्रदान करता है

आर्टिकल टिप्पणी यह साबित करने के लिए कि आपके माल को सीआई में बनाया गया था, न कि उस में हेर - फेर किया गया ।

permissions:
  id-token: write
  attestations: write

- uses: docker/build-push-action@v6
  id: push
  with:
    push: true
    tags: myapp:latest

- uses: actions/attest-build-provenance@v2
  with:
    subject-name: index.docker.io/myuser/myapp
    subject-digest: ${{ steps.push.outputs.digest }}
    push-to-registry: true

प्रमाण पत्र के साथ जांचता है: gh attestation verify oci://index.docker.io/myuser/myapp:latest --owner myuser

यह हासिल होता है एसएलएसए स्तर २.. स्तर 3, उपयोग के लिए रीus कार्य प्रवाहित होता है.

पूर्वावलोकन वातावरण

सम्मिलित करने से पहले टीमों को स्तम्भों की आवश्यकता होती है.

छोटे - छोटे रास्ते - शाखा आधारित पूर्वावलोकन वातावरण:

on:
  pull_request:
    types: [opened, synchronize]

- run: |
    BRANCH=$(echo ${{ github.head_ref }} | sed 's/[^a-zA-Z0-9]/-/g')
    docker build -t myapp:preview-$BRANCH .
    # Deploy to k8s namespace, cloud platform, etc.

आरंभ/सोलो पास - Tann अपने स्थानीय मशीन:

# Cloudflare Tunnel (free)
cloudflared tunnel run --url http://localhost:5000 my-preview
# → https://my-preview.cfargotunnel.com

या प्रयोग तारी आंतरिक टीम के लिए WPN आपके dev मशीन में पहुँच.

व्यावहारिक सुझाव

टैग साफ- सफाई: Git टैग हमेशा के आसपास रहना.

git tag -d old-test-tag                      # Delete local
git push origin :refs/tags/old-test-tag      # Delete remote

अधिवेशनों का नाम: अटल रहिए ।

  • release-YYYY.MM.DD उत्पादन के लिए
  • local-feature-name लेखक के लिए
  • packagev1.2.3 लाइब्रेरी के लिए

गुप्त: में भंडारित करें GiHest गुप्तकोड में कभी नहीं. आवश्यक रहस्य विशेष:

  • DOCKER_HUB_ACCESS_TOKEN
  • NUGET_API_KEY (या आईपीएससी इस्तेमाल करें)
  • NPM_TOKEN

मोनो- धातु विकास: विकास के दौरान परियोजना संदर्भों का प्रयोग करें, तैनात सत्यापन के लिए पैकेज संदर्भों के संदर्भों को स्विच करें:

<ProjectReference Include="..\MyLib\MyLib.csproj" />
<!-- <PackageReference Include="MyLib" Version="1.0.0" /> -->

% 1 कि. बा.

एक ही सिद्धांत, विविध औज़ार:

डॉक डॉकर लिखा कुबर्स |----------------|------------| इससे मुझे बहुत मदद मिली । ” आरगोसीडी / फ्लक्स | offpler- क़िस्म.yml वातावरण नेबुर्ग समाहित अंशों को पुनः प्रारंभ करें घड़ो मैनुअल रोलबैक GiMO रोलबैक

सारांश

  1. सरल प्रारंभ करें: टैग आधारित तैनातिंग ज़्यादातर आवश्यकताओं को ढकता है
  2. जब ज़रूरत हो तो जटिलता जोड़ें: शाखा आधारित, बहु- अधिष्ठापन, लेखक
  3. **गुण फाटकों को स्वचालित करें (t)**प्रकाशित करने से पहले परीक्षण को पास करना होगा
  4. रोलबैक सक्षम करें: समयबद्ध टैग या GiBS इतिहास
  5. अपने तने को सुरक्षित रखें: रहस्य के लिए, साबित करने के लिए सबूत
  6. अपने संदर्भ का मिलान करें: सोलो डेव सीएस प्रारंभ

इस भंडार - जाँच में कार्य फ्लो यहाँ दिखाया गया है .github/workflows/ पूर्ण कार्यान्वयन के लिए.

याद रखें: बिजली, भरोसेमंद तैनातियों के विकास की बुनियाद होती है ।

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.