đ CI/CD - āϏāĻšāĻ āĻাāώাā§ āĻŦ্āϰেāĻāύ āĻĢ্āϰেāύ্āĻĄāϞি āĻŦ্āϝাāĻ্āϝা! đ¤đ¯
đ CI/CD - āϏāĻšāĻ āĻাāώাā§ āĻŦ্āϰেāĻāύ āĻĢ্āϰেāύ্āĻĄāϞি āĻŦ্āϝাāĻ্āϝা! đ¤đ¯
āϧāϰো, āϤুāĻŽি āĻāĻāĻা āĻŦিāĻļাāϞ Android āĻ ্āϝাāĻĒ āĻĄেāĻেāϞāĻĒ āĻāϰāĻো, āϝেāĻাāύে āĻĒ্āϰāϤিāĻĻিāύ āύāϤুāύ āύāϤুāύ āĻĢিāĻাāϰ āϝোāĻ āĻšāĻ্āĻে, āĻŦাāĻ āĻĢিāĻ্āϏ āĻšāĻ্āĻে। āĻāĻāύ, āϝāĻĻি āĻĒ্āϰāϤিāĻŦাāϰ āĻোāĻĄ āĻেāĻ āĻāϰাāϰ āĻāύ্āϝ āĻŽ্āϝাāύুā§াāϞি āĻ ্āϝাāĻĒ āĻŦিāϞ্āĻĄ āĻāϰে, āĻেāϏ্āĻ āĻāϰে, āĻāĻŦং āĻĒ্āϞে-āϏ্āĻোāϰে āĻāĻĒāϞোāĻĄ āĻāϰāϤে āĻšā§, āϤাāĻšāϞে āϏāĻŽā§ āĻ āĻļ্āϰāĻŽ āĻĻুāĻ-āĻ āύāώ্āĻ āĻšāĻŦে! đĩđĢ
✅ āĻāĻ āĻĒুāϰো āĻĒ্āϰāĻ্āϰিā§াāĻে āĻ āĻোāĻŽেāĻেāĻĄ āĻāϰāϤে CI/CD āĻŦ্āϝāĻŦāĻšৃāϤ āĻšā§! đ
đ¯ CI/CD āĻŽাāύে āĻি?
CI/CD āĻŽাāύে Continuous Integration (CI) + Continuous Deployment (CD)
| đĨ CI (Continuous Integration) | đ CD (Continuous Deployment/Delivery) |
|---|---|
| āύāϤুāύ āĻোāĻĄ āĻ āĻোāĻŽেāĻিāĻ āĻেāϏ্āĻ āĻšā§ ✅ | āĻ ্āϝাāĻĒ āĻ āĻোāĻŽেāĻিāĻ āĻŦিāϞ্āĻĄ āĻ āĻĄিāĻĒ্āϞ⧠āĻšā§ đ |
| āĻĒ্āϰāϤি āĻāĻŽিāĻেāϰ āĻĒāϰ āĻোāĻĄ āĻŽেāύে āĻāϞে āĻিāύা āĻĻেāĻে | āĻĒ্āϞে āϏ্āĻোāϰ āĻŦা āϏাāϰ্āĻাāϰে āύāϤুāύ āĻাāϰ্āϏāύ āĻāĻĒāϞোāĻĄ āĻšā§ |
| āĻĄেāĻেāϞāĻĒাāϰāĻĻেāϰ āĻোāĻĄ āĻŽাāϰ্āĻেāϰ āϏāĻŽāϏ্āϝা āĻāĻŽাā§ | āĻŽ্āϝাāύুā§াāϞ āĻাāĻ āĻāĻŽিā§ে āĻĻেā§ |
| āĻিāĻ āϰিāĻĒোāĻিāĻāϰিāϤে āĻĒুāĻļ āĻāϰāϞে āĻ āĻোāĻŽেāĻিāĻ āĻেāϏ্āĻ āĻāϞে | āĻŦাāĻāĻĢ্āϰি āĻোāĻĄ āϞাāĻāĻ āĻšā§ |
đĨ CI/CD āĻাāĻ āĻāϰে āĻিāĻাāĻŦে?
āϧāϰো, āϤুāĻŽি GitHub/GitLab āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻো:
✅ Step 1: āϤুāĻŽি āύāϤুāύ āĻāĻāĻা āĻĢিāĻাāϰ āĻĄেāĻেāϞāĻĒ āĻāϰে GitHub/GitLab-āĻ āĻĒুāĻļ āĻāϰāϞে đ¤
✅ Step 2: CI āϏাāϰ্āĻাāϰ (GitHub Actions, Jenkins, CircleCI) āĻ
āĻোāĻŽেāĻিāĻ āĻŦিāϞ্āĻĄ āĻ āĻেāϏ্āĻ āĻāϰে đ
✅ Step 3: āϝāĻĻি āϏāĻŦ āĻেāϏ্āĻ āĻĒাāϏ āĻšā§, āϤাāĻšāϞে CD āϏাāϰ্āĻাāϰ (Firebase App Distribution, Play Console, Kubernetes) āĻ
্āϝাāĻĒ āĻĄিāĻĒ্āϞ⧠āĻŦা āϰিāϞিāĻ āĻāϰে đ
đ¯ āĻĢāϞে, āĻোāύো āĻŽ্āϝাāύুā§াāϞ āĻাāĻ āĻাā§াāĻ āϤোāĻŽাāϰ āĻ ্āϝাāĻĒ āĻĄেāĻেāϞāĻĒāĻŽেāύ্āĻ āĻĒ্āϰāĻ্āϰিā§া āĻ āύেāĻ āĻĢাāϏ্āĻ āĻšāĻŦে! đ
đ CI/CD Pipeline - āϧাāĻĒে āϧাāĻĒে āĻŦুāĻি! đ
đĻ Step 1: Code Commit → āĻĄেāĻেāϞāĻĒাāϰ āύāϤুāύ āĻোāĻĄ āϞিāĻে āϰিāĻĒোāĻিāĻāϰিāϤে āĻĒুāĻļ āĻāϰে।
đ Step 2: Continuous Integration (CI) → āĻ
āĻোāĻŽেāĻিāĻ āĻŦিāϞ্āĻĄ + āϞিāύ্āĻ + āĻেāϏ্āĻ āĻāϞে।
đĻ Step 3: Artifact Creation → āĻ
্āϝাāĻĒেāϰ APK āĻŦা AAB āϤৈāϰি āĻšā§।
đ Step 4: Continuous Deployment (CD) → āĻ
্āϝাāĻĒ Firebase, Play Store āĻŦা āϏাāϰ্āĻাāϰে āĻĄিāĻĒ্āϞ⧠āĻšā§।
đĸ Step 5: Notification → āĻĄেāĻেāϞāĻĒাāϰāĻĻেāϰ āĻাāύিā§ে āĻĻেāĻā§া āĻšā§ āϝে āύāϤুāύ āĻāĻĒāĻĄেāĻ āϰিāϞিāĻ āĻšā§েāĻে।
đ CI/CD āϏেāĻāĻāĻĒ āĻিāĻাāĻŦে āĻāϰāĻŦে? (Android āĻ ্āϝাāĻĒে)
đ ā§§. CI (Continuous Integration) āϏেāĻāĻāĻĒ āĻāϰা (GitHub Actions Example)
đ GitHub Repository-āϤে .github/workflows/ci.yml āĻĢাāĻāϞ āϤৈāϰি āĻāϰো:
name: Android CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v1
with:
java-version: '17'
- name: Build Project
run: ./gradlew assembleDebug
- name: Run Unit Tests
run: ./gradlew test
✅ āĻāĻ āϏ্āĻ্āϰিāĻĒ্āĻ CI āϤে āĻী āĻāϰāĻŦে?
1️⃣ āĻোāĻĄ āϰিāĻĒোāĻিāĻāϰি āĻ্āϞোāύ āĻāϰāĻŦে
2️⃣ JDK āϏেāĻāĻāĻĒ āĻāϰāĻŦে
3️⃣ Gradle āĻĻিā§ে āĻ
্āϝাāĻĒ āĻŦিāϞ্āĻĄ āĻāϰāĻŦে
4️⃣ Unit Test āϰাāύ āĻāϰāĻŦে
đ ⧍. CD (Continuous Deployment) āϏেāĻāĻāĻĒ āĻāϰা (Firebase App Distribution)
đš firebase-app-distribution.yml āĻĢাāĻāϞ āϤৈāϰি āĻāϰো:
name: Firebase CD
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Setup JDK
uses: actions/setup-java@v1
with:
java-version: '17'
- name: Build APK
run: ./gradlew assembleRelease
- name: Upload to Firebase
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
token: ${{ secrets.FIREBASE_AUTH_TOKEN }}
groups: testers
file: app/build/outputs/apk/release/app-release.apk
✅ āĻāĻ āϏ্āĻ্āϰিāĻĒ্āĻ CD āϤে āĻী āĻāϰāĻŦে?
1️⃣ āĻোāĻĄ āĻ্āϞোāύ āĻāϰāĻŦে
2️⃣ Gradle āĻĻিā§ে āϰিāϞিāĻ APK āĻŦাāύাāĻŦে
3️⃣ Firebase-āĻ āĻĄিāĻĒ্āϞ⧠āĻāϰāĻŦে
đĨ CI/CD Best Practices (āĻļ্āϰেāώ্āĻ āĻৌāĻļāϞ)
✅ 1. āĻোāĻ āĻোāĻ āĻোāĻĄ āĻেāĻ্āĻ āĻāϰো → āĻŦā§ āĻেāĻ্āĻ āĻāϰāϞে āĻেāϏ্āĻ āĻāϰা āĻāĻ িāύ āĻšā§।
✅ 2. āϞিāύ্āĻ āĻ āĻোāĻĄ āĻĢāϰāĻŽ্āϝাāĻিং āύিāĻļ্āĻিāϤ āĻāϰো → ktlint āĻŦা detekt āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰো।
✅ 3. Automated UI Testing āĻাāϞাāĻ → Espresso āĻŦা UIAutomator āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰো।
✅ 4. Build Time āĻāĻŽাāĻ → Gradle Caching āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰো।
✅ 5. Secret Keys āĻোāĻĒāύ āϰাāĻো → GitHub Secrets āĻŦা .env āĻĢাāĻāϞ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰো।
đ¯ CI/CD āĻļেāĻাāϰ āĻāύ্āϝ āĻĻāϰāĻাāϰি āĻুāϞāϏ ✅
| đ āĻাāĻ | đ§ āĻুāϞāϏ |
|---|---|
| CI/CD āϏাāϰ্āĻাāϰ | GitHub Actions, GitLab CI/CD, Jenkins, CircleCI |
| Build System | Gradle, Maven |
| Testing | JUnit, Espresso, Mockito |
| Deployment | Firebase App Distribution, Play Store, Docker |
đĨ āĻļেāώ āĻāĻĨা:
đ¯ CI/CD = āĻ
āĻোāĻŽেāĻিāĻ āĻŦিāϞ্āĻĄ + āĻেāϏ্āĻ + āĻĄিāĻĒ্āϞ⧠đ
đ¯ āĻŽ্āϝাāύুā§াāϞ āĻাāĻ āĻāĻŽাā§, āĻŦাāĻ āϧāϰা āϏāĻšāĻ āĻšā§, āĻোāĻĄ āĻোā§াāϞিāĻি āĻŦাā§াā§! ✅
đ¯ āĻŦā§ āĻŦā§ āĻোāĻŽ্āĻĒাāύি āϏāĻŦāϏāĻŽā§ CI/CD āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে! đĄ
āϤাāĻšāϞে, āĻāĻŦে āĻĨেāĻে CI/CD āϏেāĻāĻāĻĒ āĻāϰāĻŦে? đ đ
Comments
Post a Comment