- होम
- डॉक्स बिल्डर
- CI/CD और गवर्नेंस
CI/CD और गवर्नेंस
यह रिपॉज़िटरी चार GitHub Actions वर्कफ़्लो और गवर्नेंस के लिए एक केंद्रीकृत टेम्पलेट सिस्टम का उपयोग करती है।
वर्कफ़्लो
Section titled “वर्कफ़्लो”| वर्कफ़्लो | फ़ाइल | ट्रिगर | उद्देश्य |
|---|---|---|---|
| GitHub Pages Deploy | github-pages-deploy.yml | main पर पुश (docs/**), मैनुअल डिस्पैच | डॉक्यूमेंटेशन साइट को बिल्ड और GitHub Pages पर डिप्लॉय करता है |
| Build and Publish Docker Image | build-image.yml | main पर पुश (docker/**, package*.json), दैनिक क्रॉन, repository_dispatch | Docker इमेज बिल्ड करता है, GHCR पर पुश करता है, और डाउनस्ट्रीम रिपोज़ में रीबिल्ड डिस्पैच करता है |
| Require Linked Issue | require-linked-issue.yml | पुल रिक्वेस्ट इवेंट्स | उन PRs को ब्लॉक करता है जो किसी GitHub issue का संदर्भ नहीं देते |
| Enforce Repository Settings | enforce-repo-settings.yml | हर 6 घंटे, सेटिंग्स कॉन्फ़िग पर पुश, मैनुअल डिस्पैच | टेम्पलेट से मानकीकृत रिपो सेटिंग्स लागू करता है |
GitHub Pages Deploy
Section titled “GitHub Pages Deploy”on: push: branches: [main] paths: - 'docs/**' workflow_dispatch:टेम्पलेट रिपॉज़िटरी में एक रीयूज़ेबल वर्कफ़्लो को डेलीगेट करता है:
jobs: docs: uses: f5-sales-demo/docs-control/.github/workflows/github-pages-deploy.yml@mainअनुमतियाँ: contents: read, packages: read, pages: write, id-token: write। पुरानी डिप्लॉयमेंट से बचने के लिए cancel-in-progress: true के साथ कंकरेंसी ग्रुप pages का उपयोग करता है।
केवल तब ट्रिगर होता है जब पुश पर docs/ के अंतर्गत फ़ाइलें बदलती हैं। workflow_dispatch के माध्यम से मैन्युअल रूप से भी ट्रिगर किया जा सकता है, जिस तरह build-image.yml में डिस्पैच जॉब डाउनस्ट्रीम रीबिल्ड ट्रिगर करता है।
Build and Publish Docker Image
Section titled “Build and Publish Docker Image”on: push: branches: [main] paths: - 'docker/**' - 'package.json' - 'package-lock.json' schedule: - cron: '0 6 * * *' repository_dispatch: types: [rebuild-image]चरण:
- कोड चेकआउट
docker/login-actionका उपयोग करकेghcr.ioमें लॉग इन- कॉन्टेक्स्ट
.और फ़ाइलdocker/Dockerfileके साथdocker/build-push-actionका उपयोग करके बिल्ड और पुश - टैग:
ghcr.io/<owner>/<repo>:latestऔरghcr.io/<owner>/<repo>:<sha>
सफल बिल्ड के बाद, dispatch जॉब टेम्पलेट रिपॉज़िटरी की downstream-repos.json कॉन्फ़िग में सूचीबद्ध हर डाउनस्ट्रीम रिपो पर workflow_dispatch के माध्यम से github-pages-deploy.yml ट्रिगर करता है। यह सुनिश्चित करता है कि सभी कंटेंट रिपो अपडेटेड बिल्डर इमेज के साथ अपने डॉक्स रीबिल्ड करें।
दैनिक क्रॉन सुनिश्चित करता है कि कोड परिवर्तन के बिना भी इमेज अपडेट रहे (डिपेंडेंसी अपडेट्स उठाता है)। repository_dispatch इवेंट बाहरी सिस्टम को रीबिल्ड ट्रिगर करने की अनुमति देता है।
केवल तब ट्रिगर होता है जब पुश पर docker/ फ़ाइलें या package*.json बदलते हैं। केवल डॉक्स परिवर्तन इमेज रीबिल्ड ट्रिगर नहीं करते।
Require Linked Issue
Section titled “Require Linked Issue”on: pull_request_target: types: [opened, edited, reopened, synchronize]यह सुनिश्चित करने के लिए nearform-actions/github-action-check-linked-issues@v1 का उपयोग करता है कि हर PR एक GitHub issue का संदर्भ दे (जैसे, विवरण में Closes #42)। Dependabot PRs को इसके माध्यम से बाहर रखा जाता है:
exclude-branches: "dependabot/**"यदि चेक विफल होता है तो एक कस्टम संदेश योगदानकर्ताओं को अपेक्षित प्रारूप बताता है। पूर्ण योगदानकर्ता वर्कफ़्लो के लिए CONTRIBUTING.md देखें।
Enforce Repository Settings
Section titled “Enforce Repository Settings”on: schedule: - cron: '0 */6 * * *' push: branches: [main] paths: - '.github/config/repo-settings.json' workflow_dispatch:टेम्पलेट रिपॉज़िटरी में एक रीयूज़ेबल वर्कफ़्लो को डेलीगेट करता है:
jobs: enforce: uses: f5-sales-demo/docs-control/.github/workflows/enforce-repo-settings.yml@main secrets: repo-admin-token: ${{ secrets.REPO_ADMIN_TOKEN }}हर 6 घंटे और सेटिंग्स कॉन्फ़िग फ़ाइल में परिवर्तन पर चलता है। .github/config/repo-settings.json से ब्रांच प्रोटेक्शन नियम, मर्ज सेटिंग्स, और अन्य रिपॉज़िटरी कॉन्फ़िगरेशन लागू करता है।
गवर्नेंस मॉडल
Section titled “गवर्नेंस मॉडल”केंद्रीकृत टेम्पलेट
Section titled “केंद्रीकृत टेम्पलेट”f5-sales-demo/docs-control रिपॉज़िटरी इनके लिए एकमात्र सत्य का स्रोत है:
- रीयूज़ेबल वर्कफ़्लो परिभाषाएँ (डॉक्स डिप्लॉय, रिपो सेटिंग्स एनफोर्समेंट)
- संगठन में सभी रिपो में सिंक की गई प्रबंधित फ़ाइलें
- मानक कॉन्फ़िगरेशन और ब्रांच प्रोटेक्शन नियम
यह बिल्डर और सभी कंटेंट रिपो अपना CI/CD व्यवहार टेम्पलेट से इनहेरिट करते हैं।
प्रबंधित फ़ाइल सिंक
Section titled “प्रबंधित फ़ाइल सिंक”टेम्पलेट रिपॉज़िटरी प्रबंधित फ़ाइलें (जैसे वर्कफ़्लो परिभाषाएँ और कॉन्फ़िग फ़ाइलें) डाउनस्ट्रीम रिपो में पुश कर सकती है। यह मैन्युअल अपडेट के बिना सभी रिपॉज़िटरी को संरेखित रखता है। सिंक टेम्पलेट रिपो में एक अलग वर्कफ़्लो के माध्यम से चलता है।
ब्रांच प्रोटेक्शन
Section titled “ब्रांच प्रोटेक्शन”enforce-repo-settings वर्कफ़्लो टेम्पलेट से ब्रांच प्रोटेक्शन नियम लागू करता है, जिसमें शामिल हैं:
- मर्ज से पहले आवश्यक स्टेटस चेक
- आवश्यक लिंक्ड इश्यू चेक
- स्क्वैश मर्ज प्राथमिक
- मर्ज के बाद हेड ब्रांच की ऑटो-डिलीट
सीक्रेट्स
Section titled “सीक्रेट्स”| सीक्रेट | स्रोत | उद्देश्य |
|---|---|---|
GITHUB_TOKEN | स्वचालित (GitHub) | अधिकांश वर्कफ़्लो द्वारा चेकआउट, पैकेज पब्लिशिंग, और API कॉल के लिए उपयोग किया जाता है |
REPO_ADMIN_TOKEN | मैनुअल (रिपॉज़िटरी सीक्रेट) | ब्रांच प्रोटेक्शन, रिपो सेटिंग्स को संशोधित करने, और डाउनस्ट्रीम वर्कफ़्लो ट्रिगर करने के लिए enforce-repo-settings और dispatch जॉब द्वारा आवश्यक (admin स्कोप चाहिए) |