המשתמשים בתוכנתך צריכים לראות באיזו גרסה הם משתמשים. Coroid מקצה לכל גרסה מספר גרסה ומספר בנייה, מעביר את שניהם לתהליך הבנייה, ובודק לאחר מכן שהסביבה רצה את הגרסה שהפצת.
1. Coroid מכנה זאת בשם
שחרור
1.4.1
בנייה 12
מתוך Coroid, קובץ במאגר הקוד שלך, או מתוך תהליך הבנייה.
2. צינור התהליכים שלכם בונה זאת
ה-CI/CD שלכם
COROID_VERSION=1.4.1
COROID_BUILD_NUMBER=12
COROID_COMMIT_SHA=3da015d…
הערכים מגיעים כמשתנים או כקלטים לתהליך עבודה.
3. המשתמשים רואים זאת
אודות
גרסה 1.4.1 (12)
הנתונים מוצגים באפליקציה ונרשמים ל־release.json.
4. Coroid מאשר זאת
GET /version.json
אושר
הפייפליין דיווח על 1.4.1, בנייה 12
לאחר הפצה, Coroid קורא את כתובת ה־URL של הגרסה.
כל הפרטים בעמוד זה מוגדרים לפי פרויקט ב־ גרסאות → הגדרות גרסאות → קביעת גרסה.
מאין מגיע מספר הגרסה
בחר מקור אחד לכל פרויקט:
- Coroid מקצה אותו (הברירת מחדל): Coroid מציע את הגרסה הבאה כשאתה מכין גרסה. הוא מעלה את המספר האחרון של הגרסה הגבוהה ביותר שהופצה בפרויקט, כך ש
1.4.0נקבע אחרי1.4.1. הגרסה הראשונה היא0.1.0. הקלד גרסה שונה בכל פעם שתזדקק לאחת. - קרא את הנתונים מהמאגר: Coroid קורא את מספר הגרסה שהקוד שלך מגדיר בזמן הקומיט של הגרסה. הוא מחפש ב־
VERSION,package.json,app.json(Expo),pubspec.yaml, קובץ Gradle של Android,Cargo.toml,pyproject.tomlופרויקט Xcode, או רק בקובץ שתציין. אם הקובץ עדיין מכיל גרסה ששימשה בגרסה קודמת, Coroid יבקש ממך להעלות אותה תחילה. - תהליך הבנייה שלי מקצה אותו: CI/CD שלך בוחר את מספר הגרסה, למשל באמצעות semantic-release או מתג, ומדווח עליו עם ההפצה.
לכל גרסה מקבלת גם מספר בנייה. מספרי הבנייה עולים תמיד ואינם נעשים בשימוש חוזר בתוך פרויקט, כפי שחנויות האפליקציות דורשות מ־iOS
CFBundleVersion ו־Android versionCode.
מה שמתקבל בתהליך הבנייה
כש־Coroid מתחיל תהליך עבודה של GitHub Actions או תהליך GitLab CI/CD עבור גרסה, הוא מעביר את הערכים הבאים:
| משתנה של GitLab | קלט של GitHub | ערך |
|---|---|---|
COROID_VERSION | coroid_version | גרסת ההפצה |
COROID_BUILD_NUMBER | coroid_build_number | מספר הבנייה |
COROID_RELEASE_NAME | coroid_release_name | שם הגרסה |
COROID_COMMIT_SHA | coroid_commit_sha | ערך ה־SHA המלא של הקומיט |
COROID_ENVIRONMENT | coroid_environment | מפתח הסביבה |
COROID_RELEASE_ID | coroid_release_id | מזהה הגרסה של Coroid |
COROID_ATTEMPT_ID | coroid_attempt_id | ניסיון ההפצה |
GitHub דוחה קלטים שתהליך העבודה אינו מכריז עליהם. לכן Coroid שולח
coroid_version, coroid_build_number ו־ coroid_release_name רק לתהליך עבודה שמפרט אותם. הגדר אותם כאופציונליים:
on:
workflow_dispatch:
inputs:
coroid_release_id: { required: true }
coroid_attempt_id: { required: true }
coroid_commit_sha: { required: true }
coroid_environment: { required: true }
coroid_version: { required: false }
coroid_build_number: { required: false }
coroid_release_name: { required: false }
jobs:
deploy:
runs-on: ubuntu-latest
env:
APP_VERSION: ${{ inputs.coroid_version || '0.0.0-dev' }}
APP_BUILD_NUMBER: ${{ inputs.coroid_build_number || '0' }}
APP_COMMIT: ${{ inputs.coroid_commit_sha || github.sha }}GitLab מעביר את הערכים כמשתנים, כך שאין צורך בהכרזה:
deploy:
script:
- export APP_VERSION="${COROID_VERSION:-0.0.0-dev}"
- export APP_BUILD_NUMBER="${COROID_BUILD_NUMBER:-0}"
- export APP_COMMIT="${COROID_COMMIT_SHA:-$CI_COMMIT_SHA}"תהליך עבודה שפועל באופן עצמאי יכול להשתמש בערכים שלו. דווח על הגרסה שהפצת, כפי שמתואר להלן, כדי שהגרסה תוצג.
כתוב קובץ מניפסט של גרסה
הגישה הפשוטה ביותר שפועלת על כל הפלטפורמות היא לכתוב קובץ קטן במהלך הבנייה ולקרוא אותו בכל מקום שבו מוצג מספר הגרסה:
cat > release.json <<EOF
{
"version": "$APP_VERSION",
"buildNumber": "$APP_BUILD_NUMBER",
"commitSha": "$APP_COMMIT",
"releaseName": "${COROID_RELEASE_NAME:-}",
"environment": "${COROID_ENVIRONMENT:-local}"
}
EOFעבור אפליקציית רשת או שירות, שרת את הקובץ ב־ /version.json. זה גם נותן ל־Coroid כתובת URL לבדיקה (ראה להלן).
הוראות שימוש
אפליקציות רשת (Next.js, Vite)
הערכים שהדפדפן צריך נקבעים כשהחבילה נבנית:
NEXT_PUBLIC_APP_VERSION="$APP_VERSION" NEXT_PUBLIC_APP_COMMIT="$APP_COMMIT" npm run build
VITE_APP_VERSION="$APP_VERSION" npm run buildהצג process.env.NEXT_PUBLIC_APP_VERSION או import.meta.env.VITE_APP_VERSION
בתחתית או במסך אודות, והעתק release.json לתיקיית הציבור לפני הבנייה.
שרתים ו־API
קרא את הערכים בזמן ההפעלה וענה על נקודת קצה של גרסה:
app.get('/version.json', (_request, response) => {
response.json({
version: process.env.APP_VERSION,
buildNumber: process.env.APP_BUILD_NUMBER,
commitSha: process.env.APP_COMMIT,
});
});תמונות Docker
העביר את הערכים כארגומנטים לבנייה וסמן את התמונה, כך שהמכולה הפועלת והרשם ידעו את מספר הגרסה:
ARG APP_VERSION=0.0.0-dev
ARG APP_COMMIT=unknown
ENV APP_VERSION=$APP_VERSION APP_COMMIT=$APP_COMMIT
LABEL org.opencontainers.image.version=$APP_VERSION \
org.opencontainers.image.revision=$APP_COMMITdocker build --build-arg APP_VERSION="$APP_VERSION" --build-arg APP_COMMIT="$APP_COMMIT" .iOS
Xcode קורא את מספר הגרסה שמוצג בחנות האפליקציות מ־ MARKETING_VERSION ואת מספר הבנייה מ־ CURRENT_PROJECT_VERSION:
xcodebuild -scheme App -configuration Release archive \
MARKETING_VERSION="$APP_VERSION" \
CURRENT_PROJECT_VERSION="$APP_BUILD_NUMBER"עם fastlane, השתמש ב־ increment_version_number(version_number: ENV["APP_VERSION"])
ו־ increment_build_number(build_number: ENV["APP_BUILD_NUMBER"]).
אנדרואיד
קרא את הערכים ב app/build.gradle.kts:
android {
defaultConfig {
versionName = System.getenv("APP_VERSION") ?: "0.0.0-dev"
versionCode = (System.getenv("APP_BUILD_NUMBER") ?: "1").toInt()
}
}BuildConfig.VERSION_NAME לאחר מכן הוא מציג את הגרסה באפליקציה.
Flutter
flutter build appbundle --build-name="$APP_VERSION" --build-number="$APP_BUILD_NUMBER"
flutter build ipa --build-name="$APP_VERSION" --build-number="$APP_BUILD_NUMBER"Expo ו-React Native
קרא את הערכים ב app.config.js:
export default {
expo: {
version: process.env.APP_VERSION ?? '0.0.0-dev',
ios: { buildNumber: process.env.APP_BUILD_NUMBER ?? '1' },
android: { versionCode: Number(process.env.APP_BUILD_NUMBER ?? 1) },
},
};דווח על הגרסה שהופצה
אירוע הפצה יכול לציין איזו גרסה ובנייה הופצו. הוסף version
וגם buildNumber לאירוע שהפייפליין שלך שולח כבר:
{
"schemaVersion": 1,
"eventId": "ci:run-812:production:succeeded",
"providerRunId": "run-812",
"projectId": "<project-uuid>",
"environmentKey": "production",
"repository": "owner/repository",
"commitSha": "0123456789abcdef0123456789abcdef01234567",
"status": "succeeded",
"occurredAt": "2026-09-28T12:00:00Z",
"version": "1.4.0",
"buildNumber": "42"
}אם הפייפליין של הפרויקט מקצה גרסאות, ההפצה תקבל את הגרסה שדווחה.
במקרה אחר, דף ההפצה יציג את הגרסה שדווחה ויציין כאשר היא שונה מההפצה. עבור פרויקט המאוחסן ב-Coroid, הגדר
repository לזיהוי הפרויקט. אירועי הפצה והגדרת CI מתאר את שאר האירוע.
בדוק מה רץ
הקצה לכל סביבת עבודה כתובת URL של גרסה, כגון
https://app.example.com/version.json. לאחר הצלחת ההפצה, Coroid פותח את הכתובת ומחפש את ה-SHA של הקומיט או את הגרסה. קומיט שדווח חייב להתאים לקומיט של ההפצה; אחרת, הגרסה חייבת להתאים. Coroid ממשיך לבדוק במשך עשר דקות בזמן שהתהליך מסתיים, ולאחר מכן מציג אומת,
גרסה שונה או לא ניתן לגשת תחת מה רץ בדף ההפצה.
הכתובת חייבת להשתמש ב-HTTPS ובכתובת ציבורית. Coroid אינו עוקב אחר הפניות וקורא לכל היותר 64 KB.
הפעל את Coroid להגדרה
הגדר חותמת גרסה במסך הגדרות הגרסאות פותח עבודה חדשה עם בקשה שנכתבה עבור הסטק שזוהה בפרויקט. סוכן קורא את הערכים שצוינו לעיל בזמן הבנייה, מציג את הגרסה באפליקציה, כותב release.json,
מגדיר את קלטי תהליך העבודה ומתעד אותם ב-README. בצע סקירה של הבקשה, ולאחר מכן המשך כמו בכל עבודה אחרת.