הגדרת CI/CD לאתרים באמצעות Bitbucket Pipelines
לעתים קרובות אנו נתקלים בפרויקטים שבהם הפריסה מתבצעת ידנית באמצעות FTP — מה שמוביל לשגיאות ובזבוז זמן. בפרויקט Symfony אחד, הפריסה הידנית ארכה 40 דקות, וכל שחרור חמישי נאלץ להתגלגל לאחור עקב מיגרציה שנשכחה. לאחר הטמעת Bitbucket Pipelines, התהליך קוצר ל-8 דקות, והכשלים ירדו לאפס. יתר על כן, הצוות הפסיק לבזבז זמן על תיאום שחרורים — ה-pipeline מבצע את כל הבדיקות באופן אוטומטי.
אנו מגדירים CI/CD ב-Bitbucket Pipelines כך שכל build מריץ ניתוח סטטי, בדיקות יחידה ובדיקות אינטגרציה, ולאחר מכן פורס באופן אוטונומי לשרת. זה לא רק מאיץ שחרורים אלא גם מבטל שגיאות אנוש: מיגרציות שנשכחו, קונפיגורציות שגויות, תלויות חסרות.
בעיות שאנו פותרים
- סביבות שונות: staging ו-production לעתים קרובות בעלי קונפיגורציות שונות. Pipelines מאפשר להגדיר משתנים נפרדים לכל סביבת פריסה.
- פריסות ידניות ארוכות: לחיצה אחת וה-build עם הבדיקות מתחיל אוטומטית. אין צורך להמתין למפתח.
-
שגיאות קונפיגורציה: לעתים קרובות מערבבים מפתחות SSH או שוכחים תלויות. אנו מגדירים הכל ב-YAML, וה-
after-scriptמודיע על בעיות. - חוסר בבדיקות: פרויקטים רבים חסרים בדיקות אוטומטיות. אנו משלבים ניתוח סטטי, בדיקות יחידה ו-linters ישירות ב-pipeline. לדוגמה, עבור פרויקט frontend של React 18 TypeScript הוספנו ESLint, Jest ו-Playwright — ה-pipeline תופס מיד רגרסיות.
איך CI/CD עובד ב-Bitbucket Pipelines
Bitbucket Pipelines מובנה בתוך ה-repository — אין צורך בשרת CI נפרד. אתה מתאר שלבים בקובץ bitbucket-pipelines.yml, ו-Bitbucket מריץ אותם בתוך קונטיינר Docker. בהשוואה ל-GitLab CI, ההתקנה אורכת בערך חצי מהזמן: אין צורך לנהל runners. אתה מקבל 50 דקות build חינמיות בחודש; תוכניות בתשלום מסירות מגבלות (החל מ-$10 לחודש).
תהליך ההתקנה
- ביקורת repository: קביעת מחסן הטכנולוגיות, הבדיקות והסביבות.
-
יצירת
bitbucket-pipelines.yml: כתיבת שלבים ל-build, בדיקות ופריסה. - הגדרת משתנים: הגדרת סודות (מפתחות SSH, tokens) ב-Repository Settings.
- הגדרת סביבות: יצירת staging ו-production עם אישור ידני.
- בדיקות: הרצת ה-pipeline על ענף בדיקה.
- תיעוד: תיאור תהליך ההשקה והגלגול לאחור.
דוגמה: קונפיגורציה בסיסית ל-Node.js ופריסה באמצעות rsync
---
image: node:20-alpine
pipelines:
branches:
main:
- step:
name: Test
caches:
- node
script:
- npm ci
- npm test
- step:
name: Build
caches:
- node
script:
- npm ci
- npm run build
artifacts:
- dist/**
- step:
name: Deploy
deployment: production
script:
- apt-get update && apt-get install -y openssh-client rsync
- mkdir -p ~/.ssh
- echo "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
- rsync -avz --delete dist/ deploy@$DEPLOY_HOST:/var/www/mysite/
pull-requests:
'**':
- step:
name: Test PR
script:
- npm ci
- npm test
- npm run lint
---
תכונות מתקדמות
משתני סביבה וארטיפקטים
משתנים מאוחסנים ב-Repository Settings → Repository variables. הדגל image: node:20-alpine pipelines: branches: main: - step: name: Test caches: - node script: - npm ci - npm test - step: name: Build caches: - node script: - npm ci - npm run build artifacts: - dist/** - step: name: Deploy deployment: production script: - apt-get update && apt-get install -y openssh-client rsync - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/id_rsa - chmod 600 ~/.ssh/id_rsa - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts - rsync -avz --delete dist/ deploy@$DEPLOY_HOST:/var/www/mysite/ pull-requests: '**': - step: name: Test PR script: - npm ci - npm test - npm run lint מסתיר את הערך מהלוגים. ארטיפקטים מעבירים קבצים בין שלבים, למשל secured ו-dist/. הם נשמרים למשך 14 ימים, מספיק לניפוי באגים. השוואת הגדרות לסביבות:
| פרמטר | Staging | Production |
|---|---|---|
| משתנה DB_HOST | staging.db.example.com | prod.db.example.com |
| Build פיתוח | מופעל | מושבת |
שלבים מקבילים והפעלה ידנית
שלבים מקבילים מאיצים את ה-pipeline — בדיקות, linter ו-E2E רצים בו-זמנית. עבור production, אנו משתמשים ב-.env.production כך שהפריסה מתרחשת רק לאחר אישור.
Pipeline מותאם לגלגול לאחור
דוגמה ל-pipeline לגלגול לאחור
---
pipelines:
custom:
rollback:
- variables:
- name: RELEASE_TAG
default: 'v1.0.0'
- step:
name: Rollback to tag
script:
- git fetch --tags
- git checkout $RELEASE_TAG
- npm ci && npm run build
- ./deploy.sh production
הרצה דרך ממשק Bitbucket: Pipeline → Run pipeline → בחר trigger: manual → ציין את התגית.
Docker build ו-PHP
---
# Docker-сборка image: atlassian/default-image:4
pipelines:
branches:
main:
- step:
services:
- docker
script:
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
- docker build -t myrepo/mysite:$BITBUCKET_COMMIT .
- docker push myrepo/mysite:$BITBUCKET_COMMIT
- docker tag ... && docker push ...
# PHP (Laravel/Symfony)
image: php:8.3-cli
definitions:
caches:
composer:
vendor
pipelines:
branches:
main:
- step:
caches:
- composer
script:
- apt-get update && apt-get install -y unzip libpq-dev
- docker-php-ext-install pdo_pgsql
- curl -sS https://getcomposer.org/installer | php
- php composer.phar install --no-dev --optimize-autoloader
- php artisan config:cache
- php artisan migrate --force
הודעות
---
- step:
script:
- npm run build
after-script:
- |
if [ $BITBUCKET_EXIT_CODE -ne 0 ]; then
curl -s -X POST $SLACK_WEBHOOK \
-H 'Content-type: application/json' \
-d '{"text":"Build failed: '"'"'$BITBUCKET_REPO_FULL_NAME'"'"'"}'
fi
ציר זמן טיפוסי ומה כלול
| שלב | משך |
|---|---|
| ביקורת repository ויצירת YAML | 1–4 שעות |
| הגדרת משתנים ומפתחות SSH | 1–2 שעות |
| הגדרת בדיקות ו-build | 2–6 שעות |
| הגדרת פריסה (staging/production) | 2–4 שעות |
| בדיקת pipeline | 1–2 שעות |
| תיעוד והדרכה | 1–2 שעות |
סה"כ: בין יום ל-3 ימים תלוי במורכבות.
מה כלול: pipelines: custom: rollback: - variables: - name: RELEASE_TAG default: 'v1.0.0' - step: name: Rollback to tag script: - git fetch --tags - git checkout $RELEASE_TAG - npm ci && npm run build - ./deploy.sh production מוכן עם הערות, הגדרת משתני סביבה (כולל סודות), אינטגרציה אופציונלית עם Jira, הוראות להשקה וגלגול לאחור, ושבוע של ייעוץ ותמיכה לאחר ההשקה.
למה להפוך את הפריסה לאוטומטית?
Bitbucket Pipelines מובנה במערכת האקוסיסטם של Atlassian ומשתלב עם Jira — commits ו-builds מופיעים ישירות ב-issues. ההתקנה פשוטה יותר מ-GitLab CI (אין צורך ב-runners), ותוכניות בתשלום מתחילות ב-$10 לחודש. חיסכון במהנדס DevOps ייעודי: עד $500 לחודש.
מוכן להפוך את הפריסה שלך לאוטומטית?
קבל ייעוץ על הגדרת CI/CD לפרויקט שלך. אנו נעריך את ה-repository שלך ונכין pipeline תוך 1–3 ימים. עם ניסיון של 5+ שנים בהגדרת CI/CD לעשרות אתרים, אנו מבטיחים builds יציבים. הזמן אוטומציה של פריסה היום.







