كيفية البدء بالتكامل المستمر (CI) لـ Drupal 7
كيفية البدء بالتكامل المستمر (CI) لـ Drupal 7
التكامل المستمر (CI) يساعد في تشغيل عملية الاختبار تلقائيًا في تطوير الويب باستخدام Drupal 7. بينما تقدم مجتمع Drupal العديد من الموارد حول فوائد CI، يركز هذا الدليل على إنشاء إعداد CI كامل على CentOS 7. سنقوم بالمرور عبر إعداد Jenkins وتنفيذ اختبارات أساسية لموقع Drupal.
متطلبات النظام
يستخدم هذا الدليل CentOS 7 كنظام تشغيل أساسي. دعنا نبدأ بتثبيت المكونات الضرورية.
تثبيت Java
أولاً، نحتاج إلى تثبيت Java، والذي يتطلبه Jenkins:
yum install java -yتثبيت Jenkins
# إضافة مستودع Jenkins
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# استيراد مفتاح مستودع Jenkins
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
# تثبيت وتكوين Jenkins
yum install jenkins -y
chkconfig jenkins on
service jenkins startتكوين جدار الحماية
بالنسبة لـ CentOS 7، سنقوم بتكوين firewalld للسماح بالوصول إلى Jenkins. يوصى بتقييد الوصول إلى عناوين IP موثوقة:
# إضافة IP موثوق إلى منطقة جدار الحماية
firewall-cmd --permanent --zone=trusted --add-source=TRUSTED_IP_ADDRESS
# تكوين وصول المنفذ
firewall-cmd --zone=trusted --add-port=8080/tcp --permanent
firewall-cmd --reload
# التحقق من التكوين
firewall-cmd --get-active-zonesإعداد قاعدة البيانات
تثبيت وتكوين MariaDB:
# تثبيت MariaDB
yum install mariadb-server
service mariadb start
chkconfig mariadb on
# تأمين التثبيت
/usr/bin/mysql_secure_installationتثبيت phpMyAdmin
# تثبيت مستودع EPEL و phpMyAdmin
yum install epel-release
yum install phpmyadmin
# تكوين التحكم في الوصول
nano /etc/httpd/conf.d/phpMyAdmin.confقم بتحديث تكوين phpMyAdmin لتقييد الوصول إلى عنوان IP الخاص بك:
# استبدل YOUR_IP_ADDRESS بعنوان IP الفعلي الخاص بك
Require ip YOUR_IP_ADDRESS
Allow from YOUR_IP_ADDRESSأعد تشغيل Apache لتطبيق التغييرات:
systemctl restart httpd.servicePHP وأدوات التطوير
تثبيت PHP والتبعيات المطلوبة:
yum install epel-release
yum install php php-devel php-gd php-ldap php-mysql php-pear php-mcrypt \
php-tidy php-xml php-xmlrpc php-mbstring php-snmp php-soap php-xml \
php-common curl curl-devel perl-libwww-perl ImageMagick libxml2 \
libxml2-devel mod_fcgid php-cli httpd-devel gitتثبيت التبعيات الخاصة بالتطوير
إعداد PEAR، Composer، وأدوات أخرى:
# تثبيت PEAR و Phing
pear channel-discover pear.phing.info
pear install --alldeps phing/phing
pear install HTTP_Request2
# تثبيت Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# تثبيت Drush
pear channel-discover pear.drush.org
pear install drush/drushتثبيت أدوات جودة الكود
إعداد Coder و PHP_CodeSniffer لـ Drupal 7:
# تثبيت Coder و PHP_CodeSniffer
composer global require drupal/coder:\<8
composer global require squizlabs/PHP_CodeSniffer:\<2
# تكوين PHP_CodeSniffer
ln -s ~/.composer/vendor/bin/phpcs /usr/local/bin
ln -s ~/.composer/vendor/bin/phpcbf /usr/local/bin
phpcs --config-set installed_paths ~/.composer/vendor/drupal/coder/coder_sniffer
# تثبيت Drupal Coder
cd /root
wget http://ftp.drupal.org/files/projects/coder-7.x-2.4.tar.gz
tar xvf coder-7.x-2.4.tar.gzتحقق من التثبيت:
phpcs --version
phpcs -i # يجب أن يدرج Drupal في المعايير المتاحة
إعداد مشروع Jenkins1. الوصول إلى Jenkins على `http://hostname:8080`
2. تكوين إعدادات الأمان:
- تمكين الأمان
- إعداد تفويض مصفوفة مستند إلى المشروع
- إنشاء حساب مسؤول
3. تثبيت الإضافات المطلوبة:
- Phing Plugin
- PHP Plugin
- Git Plugin (GitHub أو GitLab)
إنشاء مشروعك الأول
1. إنشاء مشروع freestyle جديد باسم "drupaltest"
2. إعداد بنية مساحة العمل:
```bash
cd /var/lib/jenkins/workspace/drupaltest
mkdir docroot scripts make reports
chown -R jenkins:jenkins *
chmod 0755 -R *إنشاء سكريبتات البناء
إنشاء سكريبت فحص صيغة PHP (`scripts/build-syntaxcheck.xml`):
<?xml version="1.0"?>
<project name="phpsyntaxcheck" default="syntaxcheck_php">
<target name="syntaxcheck_php" description="Run PHP syntax checking on the project docroot.">
<fileset dir="../docroot" id="phpfiles">
<include name="*.php" />
<include name="**/*.php" />
<include name="**/*.inc" />
<include name="**/*.module" />
<include name="**/*.install" />
<include name="**/*.profile" />
<include name="**/*.test" />
</fileset>
<phplint haltonfailure="true">
<fileset refid="phpfiles" />
</phplint>
</target>
</project>إنشاء سكريبت فحص معايير الترميز في Drupal (`scripts/build-drupalstandards.xml`):
<?xml version="1.0"?>
<project name="phpcodesniffer" default="phpcs">
<target name="phpcs">
<fileset dir="../docroot" id="drupalfiles">
<include name="sites/all/modules/**/*.php" />
<include name="sites/all/modules/**/*.inc" />
<include name="sites/all/modules/**/*.module" />
<include name="sites/all/modules/**/*.install" />
<include name="sites/all/themes/**/*.php" />
<include name="sites/all/themes/**/*.inc" />
</fileset>
<phpcodesniffer standard="Drupal" format="checkstyle">
<fileset refid="drupalfiles" />
<formatter type="checkstyle" outfile="../reports/checkstyle.xml"/>
</phpcodesniffer>
</target>
</project>تكوين بناء Jenkins
1. إضافة خطوات بناء Phing:
- الهدف الأول: `syntaxcheck_php` مع ملف البناء `$WORKSPACE/scripts/build-syntaxcheck.xml`
- الهدف الثاني: `phpcs` مع ملف البناء `$WORKSPACE/scripts/build-drupalstandards.xml`
2. إضافة إجراء بعد البناء:
- تكوين مسار تقرير Checkstyle: `reports/checkstyle.xml`
واضغط على بناء! يجب أن يبدأ اختبار CI الأول الآن! يمكنك التحقق من نتائج البناء في صفحة الحالة للمشروع وتفاصيل كل بناء في صفحة البناء في Console Output.
ملاحظات مهمة
- قد تحتاج إلى زيادة حد الذاكرة PHP ووقت التنفيذ في php.ini للمشاريع الأكبر حجمًا
- اختبر دائمًا تكوين CI الخاص بك في بيئة التطوير أولاً
- الصيانة الدورية لخادم CI الخاص بك مهمة للأداء الأمثل
- فكر في تنفيذ التوزيع التلقائي في التكرارات المستقبلية