TestRail را میتوانید از طریق Docker containerها نصب کنید؛ این روش راهاندازی و اجرای TestRail را بسیار سادهتر میکند. همه dependencyها و فایلهای موردنیاز TestRail در این روش آماده است تا زمان نصب به حداقل برسد.
مخزن Docker مربوط به TestRail #
بسته ZIP مربوط به Docker TestRail
#
همچنین میتوانید همه فایلها را از GitHub repo مربوط به TestRail Docker clone کنید
نیازمندیها #
-
Docker را نصب کنید + Docker Compose (در Linux، استفاده از
pipتوصیه میشود) -
آشنایی اولیه با Docker (مثلاً بدانید container، image، detached mode و … چه هستند) → به مستندات رسمی Docker «Get Started» مراجعه کنید
-
اختیاری: اگر از
quickstart.shscript استفاده میکنید، این موارد را هم نصب کنید:sudoوip(معمولاً روی بیشتر سیستمها از قبل نصب است)
شروع سریع با script #
این مراحل را دنبال کنید:
- اجرا کنید
quickstart.sh - دو رمز عبور وارد کنید: یکی برای کاربر معمولی database و یکی برای root
- چند لحظه صبر کنید؛ TestRail دانلود و راهاندازی میشود
TestRail باید از آدرس زیر در دسترس باشد: http://localhost:۸۰۰۰
نصب را از طریق web UI کامل کنید (از مقادیری استفاده کنید که installer در پایان نمایش میدهد).
#
در بخشی از فرایند نصب باید یک Cassandra keyspace بسازید. داخل container مربوط به Cassandra یک shell باز کنید و دستورهای زیر را اجرا کنید:
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>
برای ساخت keyspace، CQL query زیر را اجرا کنید:
CREATE KEYSPACE IF NOT EXISTS tr_keyspace WITH REPLICATION={'class': 'SimpleStrategy', 'replication_factor': 1};
اجرای TestRail با docker-compose #
فایل Compose از طریق environment variableها پیکربندی میشود؛ پیشنهاد میشود از فایل .env استفاده کنید. اطلاعات بیشتر درباره فایل .env در مستندات Docker درباره env files در دسترس است.
- ابتدا یک فایل .env بسازید و حداقل متغیرهای اجباری زیر را در آن قرار دهید:
- DB_USER
- DB_NAME
- DB_PWD
- DB_ROOT_PWD
- سپس اجرا کنید
docker-compose up(اولین بار چند دقیقه طول میکشد). - TestRail باید اجرا شده باشد. از این آدرس به آن دسترسی پیدا کنید: http://localhost:۸۰۰۰
- وقتی installer TestRail تنظیمات database را میخواهد، همان مقادیری را که در فایل .env مشخص کردهاید دوباره وارد کنید.
- برای حذف این instance، کلیدهای Ctrl+C را بزنید و سپس این دستور را اجرا کنید
docker-compose down.
متغیرهای محیطی #
پیشنهاد میشود یک فایل .env محلی بسازید تا متغیرهای مخصوص کاربر یا سیستم خودتان را در آن مشخص کنید. برای اطلاعات بیشتر، به مستندات Docker درباره env files مراجعه کنید. syntax ساده است؛ برای مثال: «HTTP_PORT=۸۰۰۰»
همچنین میتوانید متغیرهای محیطی را با همین syntax مستقیماً در 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 از قبل پیکربندی شده باشد. برای اینکه همهچیز درست کار کند، config.php باید این فایل را هم ارائه کنید. کافی است آن را در _config folder کپی کنید. مطمئن شوید مقادیر داخل config.php file با تنظیمات database برای user و password که در compose file مربوط به db مشخص شدهاند، یکسان باشد.
استفاده از Compose files #
روش استفاده عمومی #
docker-compose up
docker-compose down
آرگومان up container را اجرا میکند؛ در حالی که down همهچیز را متوقف میکند. مرجع docker-compose CLI را میتوانید اینجا ببینید.
گزینههای مفید دیگر: #
| گزینه | توضیح |
|---|---|
-v (حذف named volumes) |
این گزینه برای حذف volumeهای موقت پس از shutdown مهم است و استفاده از آن توصیه میشود. اگر نمیخواهید volumeها پاک شوند، از این parameter استفاده نکنید. البته توجه داشته باشید که این کار همچنان ممکن است چند اثر جانبی داشته باشد. |
-f (file) |
برای مشخص کردن یک compose file متفاوت استفاده میشود. بهصورت پیشفرض، docker-compose.yml استفاده میشود. |
-p (project) |
اگر لازم است چند instance از TestRail اجرا شود، این مورد ضروری است. در غیر این صورت، docker-compose با containerی که از قبل در حال اجراست تعامل میکند. |
نام پوشهای که docker-compose از داخل آن اجرا میشود (در اینجا، «internal-docker») بهعنوان project name استفاده میشود و به ابتدای نام همه containerهای ایجادشده اضافه میشود.
توصیه: از docker-compose down -v استفاده کنید؛ چون volumeهای named و anonymous را حذف میکند!
نکات کلی درباره فایلهای 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 به هم وصل میشوند. ترتیب start شدن مهم است: php باید اول اجرا شود و سپس webserver و DB.
مهاجرت & ارتقای TestRail #
اجرای TestRail داخل containerهای Docker #
لطفاً Readme موجود در repoی GitHub را ببینید.
TestRail از docker-compose برای اجرای سرویسهای لازم و اتصال containerها به یکدیگر استفاده میکند.
برای شروع یا توقف TestRail، این دو command کافی است. آنها را در root folder repo اجرا کنید:
docker-compose up
docker-compose down
برای start کردن containerها در detached mode، کافی است پارامتر -d را اضافه کنید: docker-compose up -d
فایلهای docker-compose تعدادی variable با مقدارهای پیشفرض از پیش تعیینشده دارند. برای تعیین مقدارهای سفارشی برای این variableها، یا یک فایل .env بسازید (همانطور که در مستندات فایلهای env در Docker توضیح داده شده است؛ این یک فایل متنی ساده با ساختار 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، این مراحل را دنبال کنید:
-
پیش از مهاجرت، privilegeهای کاربر mysql را بررسی کنید. اگر user با ‘@localhost’ ساخته شده باشد (یعنی دسترسی را به «فقط از localhost» محدود کند)، باید user جدیدی با دسترسی کافی برای connectionهای remote بسازید:
- با دستور زیر به 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'@'%';
(علامت % اجازه میدهد connectionهای remote از هر 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
استفاده از پایگاه داده خارجی #
اگر از یک سرور پایگاه داده خارجی استفاده میکنید، 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 وقتی از قبل از containerها استفاده میکنید #
گزینه ۱: سریع و دمدستی #
کافی است از اسکریپت ارتقا استفاده کنید: upgradeTestRail.sh
اگر همان پیکربندی پیشفرضی را نگه داشته باشید که quickstart script ایجاد کرده است، این اسکریپت TestRail را ارتقا میدهد. سپس باید این مراحل را دنبال کنید:
- با اجرای دستور زیر، Apache Docker container را پیدا کنید
docker ps - کپی کنید
CONTAINER IDمربوط بهtestrail/apacheimage - دستور
docker exec -it <container_id>را اجرا کنید تا وارد Docker container شوید - به مسیر
/var/www/testrailبروید - دستور زیر را اجرا کنید
php run.php update
اگر برای فایلهای دیتابیس و موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در ادامه استفاده کنید.
گزینه ۲: انجام ارتقا بهصورت مرحلهبهمرحله #
برای ارتقای TestRail از یک نسخه قدیمیتر به نسخه جدیدتر (مثلا از ۶.۰.۰ به ۶.۰.۱)، مراحل زیر را انجام دهید:
- containerها را متوقف کنید:
docker-compose down -v - (اختیاری) اگر نسخه مشخصی از TestRail را مثلا در فایل
.envتنظیم کردهاید، نسخهای را که میخواهید به آن ارتقا دهید وارد کنید. - imageها را pull کنید:
docker-compose pull - توصیه میشود: نسخه پشتیبان تهیه کنید (بخش پایین را ببینید)
- TestRail را راهاندازی کنید
docker-compose up -d - با اجرای دستور زیر، Apache Docker container را پیدا کنید
docker ps - کپی کنید
CONTAINER IDمربوط بهtestrail/apacheimage - دستور
docker exec -it <container_id>را اجرا کنید تا وارد Docker container شوید - به مسیر
/var/www/testrailبروید - دستور زیر را اجرا کنید
php run.php update
مهم #
از پوشههای حاوی database و پوشهای که شامل لاگها، گزارشها، پیوستها و auditها است، backup بگیرید. بهصورت پیشفرض، این پوشهها _mysql و _opt در دایرکتوری محلی هستند. همچنین یک کپی از config.php فایلهای موجود در _config تهیه کنید.
برای انجام یک upgrade «ایمن» هم میتوانید این سه پوشه را در یک مسیر جدید کپی کنید و سپس docker-compose را اجرا کنید.
موضوعات پیشرفته #
Apache در مقابل nginx و MySQL در مقابل MariaDB #
TestRail در حال حاضر بهصورت رسمی از Apache + MySQL پشتیبانی میکند. میتوانید nginx و MariaDB را هم امتحان کنید، اما توجه داشته باشید که این ترکیب بهصورت رسمی پشتیبانی نمیشود. اگر هنگام استفاده از این دو سیستم با مشکلی روبهرو شدید، به ما اطلاع دهید تا بتوانیم در آینده به پشتیبانی احتمالی از nginx/MariaDB نزدیکتر شویم.
تهیه نسخه پشتیبان #
همه containerها stateless هستند؛ بنابراین میتوانید آنها را با خیال راحت حذف کنید. دادههای مرتبط در volumeهای محلی ذخیره میشوند؛ بهصورت پیشفرض در _config ، _mysql ، و _opt قرار دارند. کافی است از این پوشهها backup بگیرید.
متغیرهای محیطی #
- 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ها بهصورت دستی #
شما میتوانید Docker imageها را خودتان هم build کنید. همه Dockerfileها در این پوشه قرار دارند. دستورالعملهای build در subfolderهای مربوطه آمده است.

