TestRail را میتوانید از طریق کانتینرهای Docker نصب کنید؛ این روش راهاندازی و اجرای TestRail را بسیار سادهتر میکند. همه وابستگیها و فایلهای لازم برای TestRail در آن گنجانده شدهاند تا زمان نصب به حداقل برسد.
مخزن Docker مربوط به TestRail #
بسته ZIP Docker مربوط به TestRail
#
همچنین میتوانید همه فایلها را از این مخزن clone کنید: مخزن GitHub برای Docker مربوط به TestRail
پیشنیازها #
-
Docker را نصب کنید + Docker Compose در Linux، استفاده از
pipتوصیه میشود -
آشنایی اولیه با Docker مثلاً بدانید container، image و detached mode چیستند → مستندات رسمی را ببینید: مستندات «Get Started» در Docker
-
اختیاری: اگر از
quickstart.shscript استفاده میکنید، این موارد را هم نصب کنید:sudoوipمعمولاً روی بیشتر سیستمها از قبل نصب شدهاند
شروع سریع با script #
مراحل زیر را دنبال کنید:
- اجرا کنید:
quickstart.sh - دو password وارد کنید: یکی برای کاربر معمولی database و یکی برای root
- چند لحظه صبر کنید؛ TestRail دانلود و راهاندازی میشود
TestRail باید از این URL در دسترس باشد: http://localhost:۸۰۰۰
نصب را از طریق web UI کامل کنید؛ از مقادیری استفاده کنید که installer در پایان نمایش میدهد.
#
در بخشی از فرایند نصب باید یک Cassandra Keyspace بسازید. یک shell در container مربوط به Cassandra باز کنید و از commandهای زیر استفاده کنید:
cqlsh <host> -u <user> -p <password>
باید خروجی زیر را ببینید:
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.9 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>
با اجرای CQL query زیر، keyspace را بسازید:
CREATE KEYSPACE IF NOT EXISTS tr_keyspace WITH REPLICATION={'class': 'SimpleStrategy', 'replication_factor': 1};
اجرای TestRail با docker-compose #
فایل compose از طریق environment variableها پیکربندی میشود؛ پیشنهاد میکنیم از فایل .env استفاده کنید. اطلاعات بیشتر درباره فایل .env در این مستندات آمده است: مستندات Docker درباره فایلهای env.
- ابتدا یک فایل .env بسازید و حداقل variableهای اجباری زیر را در آن قرار دهید:
- DB_USER
- DB_NAME
- DB_PWD
- DB_ROOT_PWD
- سپس اجرا کنید:
docker-compose upبار اول چند دقیقه طول میکشد. - TestRail باید اجرا شده باشد! میتوانید از این آدرس به آن دسترسی داشته باشید: http://localhost:۸۰۰۰
- وقتی نصبکننده TestRail تنظیمات database را درخواست کرد، همان مقادیری را که در فایل .env مشخص کردهاید دوباره وارد کنید.
- برای حذف این instance، کلیدهای زیر را فشار دهید Ctrl+C و سپس این دستور را اجرا کنید
docker-compose down.
متغیرهای محیطی #
پیشنهاد میشود یک فایل .env محلی بسازید تا متغیرهای مخصوص کاربر یا ماشین را در آن مشخص کنید (برای اطلاعات بیشتر، به مستندات Docker درباره env fileها مراجعه کنید). ساختار آن ساده است؛ برای مثال: «HTTP_PORT=۸۰۰۰»
متغیرهای محیطی را میتوانید مستقیماً در shell هم با همین ساختار تنظیم کنید و سپس از docker-compose استفاده کنید.
- DB_PORT
- HTTP_PORT
- HTTPS_PORT
- DB_URL (برای مثال http://internal.yourcompany.com/۵.۷.sql)
Databaseهای از پیش آماده و فایل config.php در TestRail #
از طریق DB_URL variable ، میتوانید یک SQL dump هم ارائه کنید تا container آن را دانلود کند و TestRail از قبل پیکربندی شده باشد. برای درست کار کردن این setup، config.php فایل باید ارائه شود. کافی است آن را در _config پوشه کپی کنید. مطمئن شوید مقادیر داخل config.php فایل با تنظیمات database برای user و password که در compose file مربوط به db مشخص شدهاند، مطابقت داشته باشد.
استفاده از Compose fileها #
روش استفاده عمومی #
docker-compose up
docker-compose down
آرگومان up container را اجرا میکند؛ در حالی که down همهچیز را متوقف میکند. مرجع docker-compose CLI را میتوانید اینجا پیدا کنید.
گزینههای مفید دیگر: #
| گزینه | توضیحات |
|---|---|
-v (حذف volumeهای نامگذاریشده) |
این گزینه برای حذف volumeهای موقت پس از shutdown مهم است و استفاده از آن توصیه میشود. اگر نمیخواهید volumeها پاک شوند، از این پارامتر استفاده نکنید. با این حال، توجه داشته باشید که این کار همچنان ممکن است چند اثر جانبی ایجاد کند. |
-f (file) |
برای مشخص کردن یک compose file متفاوت استفاده میشود (بهطور پیشفرض از docker-compose.yml استفاده میشود) |
-p (project) |
اگر قرار است چند instance از TestRail اجرا شود، این مورد ضروری است. در غیر این صورت، docker-compose با containerی که از قبل در حال اجراست تعامل میکند. |
نام فولدری که docker-compose از داخل آن اجرا میشود (در اینجا «internal-docker») بهعنوان نام project استفاده میشود و به ابتدای نام همه containerهای ایجادشده اضافه میشود.
توصیه: از docker-compose down -v استفاده کنید؛ چون named volumeها و anonymous volumeها را حذف میکند!
نکات کلی درباره فایلهای Compose #
- همه فایلهای Compose به volumeهای اضافی زیر متکی هستند:
-
testrail_rootشامل فایلهای نصب است و روی مسیر زیر mount میشود/var/www/testrail -
testrail_optحاوی فایلهای آپلودشده و موارد مشابه است و روی مسیر زیر mount میشود/opt/testrail -
testrail_dbحاوی database است و روی مسیر زیر mount میشود/var/lib/mysql. -
testrail_configحاوی فایل config.php است که تنظیمات TestRail را مشخص میکند و روی مسیر زیر mount میشود/var/www/testrail/config
Containerها از طریق یک testrail شبکه bridge به هم وصل میشوند. ترتیب شروع مهم است: ابتدا باید php اجرا شود و بعد webserver و DB.
انتقال & ارتقای TestRail #
اجرای TestRail داخل containerهای Docker #
لطفاً Readme موجود در repoی GitHub را ببینید.
TestRail از docker-compose برای اجرای سرویسهای لازم و وصل کردن containerها به هم استفاده میکند.
برای شروع یا توقف TestRail، این دو دستور کافی است. آنها را در پوشه اصلی repo اجرا کنید:
docker-compose up
docker-compose down
برای اجرای containerها در detached mode، کافی است پارامتر -d را اضافه کنید: docker-compose up -d
فایلهای docker-compose شامل تعدادی متغیر با مقدارهای پیشفرض هستند. برای تعیین مقدارهای دلخواه برای این متغیرها، یا یک فایل .env بسازید (همانطور که در مستندات Docker درباره env fileها توضیح داده شده است؛ این فایل یک فایل متنی ساده با syntax بهصورت VAR=VALUE است).
در غیر این صورت، میتوانید env variableها را از طریق command line هم تنظیم کنید؛ برای مثال با export HTTP_PORT=8008 && docker-compose up -d.
سایت linuxhint.com مرور خوبی از نحوه استفاده از env variableها در bash ارائه میکند.
انتقال از یک نصب موجود TestRail Server به containerها #
استفاده از database داخل containerها #
اگر یک DB اختصاصی را فقط برای TestRail اجرا کردهاید، منطقی است که DB را هم داخل container اجرا کنید. برای upgrade، مراحل زیر را دنبال کنید:
-
قبل از migration، سطح دسترسی کاربر mysql را بررسی کنید. اگر کاربری با «@localhost» ساخته شده باشد (یعنی دسترسی او به «فقط از localhost» محدود باشد)، باید یک کاربر جدید با دسترسی کافی بسازید تا remote connectionها مجاز شوند:
- با این دستور به DB وصل شوید
mysql -pو همه userها و host آنها را لیست کنید:SELECT user, host FROM mysql.user; - اگر user مربوط به TestRail در ستون «host» مقدار «localhost» یا یک IP مشخص داشته باشد (و مقدار «%» نباشد)، باید یک user جدید بسازید: CREATE USER ‘testraildocker’@’%’ IDENTIFIED BY ‘newpassword’; >
GRANT ALL ON testrail.* TO 'testraildocker'@'%';
(علامت «%» remote connection از هر IP را مجاز میکند. اگر Docker subnet خود را میدانید، که معمولاً ۱۷۲.۱۶.۲۵۵.۲۵۵ است، برای افزایش امنیت بهجای «%» از همان subnet داخلی Docker استفاده کنید.)
- با این دستور به DB وصل شوید
- کل محتوای
/var/lib/mysqlرا به مسیر زیر کپی کنید:_mysqlپوشه وconfig.phpفایل را در_config. - اگر میخواهید attachments، reports، logs و audit logs را نگه دارید، پوشههای
logs, audit, reports, attachmentsرا در_optپوشه ایجاد کنید و محتوا را از مسیر قبلی به پوشههای تازهساختهشده کپی کنید. -
فایل
config.phpرا ویرایش کنید و مقدار «DB_HOSTNAME» را بهdb:3306تغییر دهید. همچنین LOG_PATH و AUDIT_PATH را به این مسیرها تغییر دهید:define('LOG_PATH', '/opt/testrail/logs/'); define('AUDIT_PATH', '/opt/testrail/audit/'); - اگر میخواهید برای دسترسی به TestRail از پورت مشخصی استفاده کنید، یک فایل .env بسازید (توضیحات بیشتر در اینجا) و پورت را از طریق
HTTP_PORT=<portNumber> - اجرا کنید
docker-compose up -d
همچنین مسیرهای attachments و reports را در بخش TestRail > Administration > Site Settings به این موارد تغییر دهید: /opt/testrail/attachments و /opt/testrail/reports
استفاده از database خارجی #
اگر از یک external database server استفاده میکنید، DB server را بدون تغییر نگه دارید و این مراحل را دنبال کنید:
- فایل
config.phpرا در_config. - اگر میخواهید attachments، reports، logs و audit logs را نگه دارید، پوشههای
logs،audit،reports، وattachmentsرا در_opt folderایجاد کنید و محتوا را از مسیر قبلی به پوشههای تازهساختهشده کپی کنید. -
LOG_PATH و AUDIT_PATH را در فایل config.php به این مسیرها تغییر دهید:
define('LOG_PATH', '/opt/testrail/logs/'); define('AUDIT_PATH', '/opt/testrail/audit/'); - اگر میخواهید برای دسترسی به TestRail از پورت مشخصی استفاده کنید، یک فایل .env بسازید (توضیحات بیشتر در اینجا) و پورت را از طریق HTTP_PORT= مشخص کنید.<portNumber>
- اجرا کنید
docker-compose up -d
همچنین مسیرهای attachments و گزارشها در بخش TestRail>Administration>Site Settings به: /opt/testrail/attachments و /opt/testrail/reports
ارتقای TestRail در صورتی که از قبل از کانتینرها استفاده میکنید #
گزینه ۱: روش سریع و دمدستی #
کافی است از اسکریپت ارتقا استفاده کنید: upgradeTestRail.sh
اگر پیکربندی پیشفرض ایجادشده توسط اسکریپت quickstart را تغییر نداده باشید، این کار TestRail را ارتقا میدهد. سپس باید این مراحل را انجام دهید:
- کانتینر Docker مربوط به Apache را با اجرای دستور زیر پیدا کنید
docker ps - کپی کنید
CONTAINER IDبرایtestrail/apacheimage - دستور زیر را اجرا کنید
docker exec -it <container_id>تا با bash وارد کانتینر Docker شوید - به مسیر
/var/www/testrailبروید - دستور زیر را اجرا کنید
php run.php update
اگر برای فایلهای DB و موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در ادامه استفاده کنید.
گزینه ۲: انجام ارتقا بهصورت مرحلهبهمرحله #
برای ارتقای TestRail از نسخهای قدیمیتر به نسخهای جدیدتر (مثلاً از ۶.۰.۰ به ۶.۰.۱)، مراحل زیر را انجام دهید:
- کانتینرها را متوقف کنید:
docker-compose down -v - (اختیاری) اگر مثلاً در فایل
.envنسخه مشخصی از TestRail تعیین کردهاید، آن را به نسخهای که میخواهید ارتقا دهید تغییر دهید. - imageها را pull کنید:
docker-compose pull - توصیه میشود: backup تهیه کنید (در ادامه ببینید)
- TestRail را راهاندازی کنید
docker-compose up -d - کانتینر Docker مربوط به Apache را با اجرای دستور زیر پیدا کنید
docker ps - کپی کنید
CONTAINER IDبرایtestrail/apacheimage - دستور زیر را اجرا کنید
docker exec -it <container_id>تا با bash وارد کانتینر Docker شوید - به مسیر
/var/www/testrailبروید - دستور زیر را اجرا کنید
php run.php update
مهم #
از پوشهای که database در آن قرار دارد و همچنین از پوشهای که logs، reports، attachments و audits را شامل میشود، نسخه پشتیبان تهیه کنید. بهصورت پیشفرض، این پوشهها عبارتاند از _mysql و _opt در دایرکتوری local. همچنین یک کپی از config.php فایلهای موجود در _config تهیه کنید.
برای انجام یک upgrade «ایمن» هم میتوانید این سه پوشه را در یک مسیر جدید کپی کنید و سپس docker-compose را اجرا کنید.
موضوعات پیشرفته #
Apache در مقایسه با nginx و MySQL در مقایسه با MariaDB #
TestRail در حال حاضر بهصورت رسمی از Apache + MySQL پشتیبانی میکند. میتوانید nginx و MariaDB را هم امتحان کنید، اما توجه داشته باشید که این ترکیب بهصورت رسمی پشتیبانی نمیشود. اگر هنگام استفاده از این دو سیستم با مشکلی روبهرو شدید، لطفاً به ما اطلاع دهید تا بتوانیم در آینده به پشتیبانی احتمالی از nginx/MariaDB نزدیکتر شویم.
تهیه نسخه پشتیبان #
همه containerها stateless هستند، بنابراین میتوان آنها را بدون مشکل حذف کرد. دادههای مهم در volumeهای local ذخیره میشوند؛ بهصورت پیشفرض در _config ، _mysql ، و _opt قرار دارند. کافی است از این پوشهها نسخه پشتیبان تهیه کنید.
متغیرهای محیطی #
- TESTRAIL_VERSION
- OPT_PATH
- CONFIG_PATH
- MYSQL_PATH
- HTTP_PORT
- DB_PORT
- DB_URL
- DB_USER
- DB_PWD
- DB_NAME
- DB_ROOT_PWD
- TR_DEFAULT_TASK_EXECUTION
ساختن imageها توسط خودتان #
امکان ساختن imageهای Docker توسط خودتان هم وجود دارد. همه Dockerfileها در این پوشه قرار دارند. دستورالعملهای build در subfolderهای مربوطه آمده است.

