आपने Kotlin में एक शानदार प्रोजेक्ट लिखा है। लेकिन अब बिना दर्द के अपडेट कैसे डिलीवर करें?
\n\nआपने कोड कमिट किया, GitHub पर पुश किया और... मैन्युअल रस्म शुरू हुई: jar बनाएँ, सर्वर पर अपलोड करें, पुनः आरंभ करें, जाँचें कि कुछ खराब तो नहीं हुआ। परिचित लग रहा है? और अगर प्रोजेक्ट बढ़ता है, परीक्षण, लिंटर्स, कई वातावरण आते हैं — तो यह दिनचर्या घंटों खा जाती है, और एक भूला हुआ कमांड प्रोडक्शन को खराब कर सकता है।
\n\nएक समाधान है — Kotlin के लिए CI/CD पाइपलाइन। यह एक स्वचालित कन्वेयर है जो खुद प्रोजेक्ट बनाता है, परीक्षण चलाता है, कोड शैली की जाँच करता है और प्रत्येक पुश के बाद सर्वर पर डिप्लॉय करता है। इस लेख में, मैं दिखाऊंगा कि GitHub Actions और Gradle के साथ शुरू से ऐसी पाइपलाइन कैसे सेटअप करें। आपको एक तैयार टेम्पलेट मिलेगा जिसे आप अपने प्रोजेक्ट के अनुसार अनुकूलित कर सकते हैं — चाहे वह Ktor पर सर्वर एप्लिकेशन हो, Android एप्लिकेशन हो या लाइब्रेरी।
\n\nचलिए शुरू करते हैं! 🚀
\n\nCI/CD क्या है और Kotlin डेवलपर को इसकी आवश्यकता क्यों है?
\n\nCI (Continuous Integration) — सतत एकीकरण। आप कोड पुश करते हैं, और सिस्टम स्वचालित रूप से इसे बनाता है, परीक्षण करता है और गुणवत्ता की जाँच करता है। CD (Continuous Delivery/Deployment) — सतत वितरण या तैनाती। सफल बिल्ड के बाद, कोड स्वचालित रूप से सर्वर (या ऐप स्टोर) पर पहुँच जाता है।
\n\nKotlin प्रोजेक्ट्स के लिए, CI/CD विशेष रूप से महत्वपूर्ण है:
\n- \n
- समय की बचत — मैन्युअल रूप से gradle build चलाने की आवश्यकता नहीं। \n
- कोड गुणवत्ता — प्रत्येक कमिट पर परीक्षण और लिंटर्स चलते हैं। \n
- सुरक्षा — प्रोडक्शन केवल हरी पाइपलाइन के बाद अपडेट होता है। \n
- पारदर्शिता — पूरी टीम बिल्ड की स्थिति देखती है। \n
आज हम GitHub Actions पर Kotlin के लिए एक पूर्ण CI/CD पाइपलाइन बनाएंगे। यह सार्वजनिक रिपॉजिटरी के लिए मुफ्त और बहुत लचीला है।
\n\nचरण 1. Kotlin प्रोजेक्ट तैयार करना
\n\nपाइपलाइन लिखने से पहले, सुनिश्चित करें कि आपका प्रोजेक्ट CI/CD के लिए तैयार है। मैं Gradle (Kotlin DSL) के साथ एक मानक संरचना का उपयोग करूंगा।
\n\nयहाँ एक सरल कंसोल एप्लिकेशन के लिए build.gradle.kts का उदाहरण है:
plugins {\n kotlin("jvm") version "1.9.22"\n application\n}\n\napplication {\n mainClass.set("com.example.MainKt")\n}\n\nrepositories {\n mavenCentral()\n}\n\ndependencies {\n implementation(kotlin("stdlib"))\n testImplementation("org.jetbrains.kotlin:kotlin-test")\n}\n\ntasks.test {\n useJUnitPlatform()\n}\n\nमहत्वपूर्ण: पाइपलाइन को सार्थक बनाने के लिए कम से कम एक परीक्षण जोड़ें।
\n\nपरीक्षण का उदाहरण (src/test/kotlin/com/example/AppTest.kt):
import kotlin.test.Test\nimport kotlin.test.assertEquals\n\nclass AppTest {\n @Test\n fun testGreeting() {\n assertEquals("Hello, Kotlin!", getGreeting())\n }\n}\n\nअब प्रोजेक्ट को कमिट करें और GitHub पर पुश करें।
\n\nचरण 2. पहली CI पाइपलाइन बनाना: बिल्ड और परीक्षण
\n\nरिपॉजिटरी की रूट में .github/workflows फ़ोल्डर बनाएँ और उसके अंदर ci.yml फ़ाइल बनाएँ।
यहाँ Kotlin के लिए न्यूनतम GitHub Actions workflow है:
\n\nname: CI Pipeline for Kotlin\n\non:\n push:\n branches: [ main, develop ]\n pull_request:\n branches: [ main ]\n\njobs:\n build:\n runs-on: ubuntu-latest\n\n steps:\n - name: Checkout code\n uses: actions/checkout@v4\n\n - name: Set up JDK 17\n uses: actions/setup-java@v4\n with:\n java-version: '17'\n distribution: 'temurin'\n\n - name: Grant execute permission for gradlew\n run: chmod +x gradlew\n\n - name: Build with Gradle\n run: ./gradlew build\n\n - name: Run tests\n run: ./gradlew test\n\n - name: Archive test results\n if: always()\n uses: actions/upload-artifact@v4\n with:\n name: test-results\n path: build/reports/tests/\n\nयहाँ क्या हो रहा है:
\n- \n
- ट्रिगर: push