back

المعرفة

مركز المعرفة

كيفية البدء بالتكامل المستمر (CI) لـ Drupal 7

by editor | 05.03.2015

كيفية البدء بالتكامل المستمر (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.service

PHP وأدوات التطوير

تثبيت 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 في المعايير المتاحة
إعداد مشروع Jenkins

1. الوصول إلى 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 الخاص بك مهمة للأداء الأمثل
  • فكر في تنفيذ التوزيع التلقائي في التكرارات المستقبلية
صورة
  • المعرفة
    مركز المعرفة
    Fine-tuning LLaMA to Recreate Eminescu's Literary Style
    editor
  • المعرفة
    مركز المعرفة
    A New Era Begins: Drupal CMS 1.0 Launches
    editor
  • المعرفة
    مركز المعرفة
    Bringing AI to B2B
    editor