TestRail را میتوان با استفاده از کانتینرهای Docker نصب کرد؛ این کار راهاندازی و اجرای TestRail را بسیار سادهتر میکند. این روش همه dependencyها و فایلهای موردنیاز TestRail را همراه دارد و زمان نصب را به حداقل میرساند.
مخزن Docker مربوط به TestRail #
پکیج zip داکر TestRail
#
همچنین میتوانید همه فایلها را از اینجا clone کنید: مخزن GitHub مربوط به TestRail Docker
پیشنیازها #
-
Docker را نصب کنید + Docker Compose (در Linux، استفاده از
pipتوصیه میشود) -
آشنایی مقدماتی با Docker (مثلاً بدانید container، image، detached mode و موارد مشابه چه هستند) → مستندات رسمی زیر را ببینید: مستندات «Get Started» در Docker
-
اختیاری: اگر از
quickstart.shscript استفاده میکنید، این موارد را هم نصب کنید:sudoوip(معمولاً روی بیشتر سیستمها از قبل نصب شدهاند)
شروع سریع با script #
این مراحل را دنبال کنید:
- اجرا کنید
quickstart.sh - دو password وارد کنید: یکی برای کاربر «معمولی» پایگاه داده و یکی برای root
- چند لحظه صبر کنید؛ TestRail دانلود و راهاندازی میشود
TestRail باید از طریق URL زیر در دسترس باشد: http://localhost:۸۰۰۰
نصب را از طریق web UI کامل کنید؛ در پایان، از مقادیری استفاده کنید که installer نمایش میدهد.
پس از ورود به installation wizard، باید مسیر زیر را برای Chrome Headless Shell وارد کنید:
/usr/bin/chrome-headless-shell-linux64/chrome-headless-shell
#
در بخشی از فرایند نصب باید یک Cassandra Keyspace بسازید. یک shell در container مربوط به Cassandra باز کنید و از دستورهای زیر استفاده کنید:
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>
با اجرای query زیر در CQL، 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 fileها.
- ابتدا یک فایل .env بسازید که دستکم variableهای الزامی زیر را داشته باشد:
- 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 بسازید (برای اطلاعات بیشتر، به مستندات فایلهای env در Docker مراجعه کنید). ساختار آن ساده است؛ برای مثال: 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 از قبل پیکربندی شود. برای عملکرد درست، باید فایل config.php را هم ارائه کنید. کافی است آن را در پوشه _config کپی کنید. مطمئن شوید مقدارهای موجود در فایل config.php با تنظیمات database برای user و password که در فایل Compose مربوط به db مشخص شدهاند، مطابقت داشته باشد.
استفاده از فایلهای Compose #
استفاده عمومی #
docker-compose up docker-compose down
آرگومان up container را راهاندازی میکند؛ در حالی که down همه چیز را متوقف میکند. مرجع docker-compose CLI را میتوانید اینجا ببینید.
گزینههای کاربردی دیگر: #
| گزینه | توضیح |
|---|---|
-v (حذف volumeهای نامگذاریشده) |
برای حذف volumeهای موقت بعد از خاموش کردن سرویسها، استفاده از این گزینه مهم و توصیهشده است. اگر نمیخواهید volumeها پاک شوند، از این پارامتر استفاده نکنید. با این حال، توجه داشته باشید که باقی ماندن آنها ممکن است همچنان پیامدهای جانبی داشته باشد. |
-f (فایل) |
برای مشخص کردن یک فایل Compose متفاوت استفاده میشود (بهطور پیشفرض docker-compose.yml استفاده میشود) |
-p (project) |
اگر قرار است چند instance از TestRail اجرا شود، این مورد ضروری است. در غیر این صورت، docker-compose با container در حال اجرای فعلی کار میکند. |
نام پوشهای که docker-compose در آن اجرا میشود (در اینجا، «internal-docker») بهعنوان project name استفاده میشود و به ابتدای نام همه containerهای ایجادشده اضافه میشود.
توصیه: از docker-compose down -v استفاده کنید، چون volumeهای نامگذاریشده و anonymous را حذف میکند!
نکات کلی درباره compose fileها #
- همه compose fileها به 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 bridged network به هم متصل میشوند. ترتیب شروع مهم است: ابتدا باید php اجرا شود و بعد از آن webserver و DB.
Migration & ارتقای TestRail #
اجرای TestRail داخل Docker containerها #
لطفاً Readme موجود در repo گیتهاب را ببینید.
TestRail از docker-compose برای اجرای سرویسهای لازم و اتصال containerها به یکدیگر استفاده میکند.
برای start یا stop کردن TestRail، این دو command کافی است. آنها را در root folder همین repo اجرا کنید:
docker-compose up docker-compose down
برای اجرای containerها در detached mode، کافی است parameter -d را اضافه کنید: docker-compose up -d
فایلهای docker-compose شامل چند variable با مقدارهای default از پیش تعیینشده هستند. برای تنظیم مقدارهای دلخواه برای این variableها، یک فایل .env بسازید (طبق توضیحی که در مستندات Docker env files آمده است؛ این فایل یک فایل متنی ساده با syntax بهشکل VAR=VALUE است).
همچنین میتوانید env variableها را از طریق command line، مثلاً با export، تعریف کنید. HTTP_PORT=8008 && docker-compose up -d.
سایت linuxhint.com نمای کلی خوبی از روش استفاده از env variableها در bash ارائه میدهد.
Migration از نصب فعلی TestRail Server به containerها #
استفاده از database داخل containerها #
اگر یک DB اختصاصی فقط برای TestRail اجرا کردهاید، منطقی است که DB را هم داخل container اجرا کنید. برای upgrade مراحل زیر را دنبال کنید:
- قبل از migration، privilegeهای کاربر 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 را میدهد. اگر subnet مربوط به Docker خود را میدانید، که معمولاً ۱۷۲.۱۶.۲۵۵.۲۵۵ است، برای افزایش امنیت بهجای «%» از همان internal Docker subnet استفاده کنید.)
- با دستور زیر به 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 از port مشخصی استفاده کنید، یک فایل .env بسازید (توضیحات بیشتر اینجاست) و port را با این متغیر مشخص کنید:
HTTP_PORT=<portNumber> - دستور زیر را اجرا کنید:
docker-compose up -d
همچنین مسیرهای attachments و reports را در بخش TestRail > Administration > Site Settings به این موارد تغییر دهید: /opt/testrail/attachments و /opt/testrail/reports
استفاده از دیتابیس خارجی #
اگر از یک سرور database خارجی استفاده میکنید، DB server را بدون تغییر نگه دارید و این مراحل را دنبال کنید:
- فایل
config.phpرا به_configکپی کنید. - اگر میخواهید attachments، reports، logs و audit logs را نگه دارید، پوشههای
logs،audit،reports، وattachmentsرا در_opt folderبسازید و محتوا را از محل قبلی به پوشههای تازه ایجادشده کپی کنید. -
در فایل config.php مقدارهای LOG_PATH و AUDIT_PATH را به این مسیرها تغییر دهید:
define('LOG_PATH', '/opt/testrail/logs/'); define('AUDIT_PATH', '/opt/testrail/audit/'); - اگر میخواهید برای دسترسی به TestRail از port مشخصی استفاده کنید، یک فایل .env بسازید (توضیحات بیشتر اینجاست) و port را با HTTP_PORT= مشخص کنید.<portNumber>
- دستور زیر را اجرا کنید:
docker-compose up -d
مسیرهای مربوط به attachments و reports را نیز در بخش TestRail>Administration>Site Settings به این موارد تغییر دهید: /opt/testrail/attachments و /opt/testrail/reports
ارتقای TestRail در صورتی که از قبل از containerها استفاده میکنید #
گزینه ۱: سریع و ساده #
کافی است از upgrade script استفاده کنید: upgradeTestRail.sh
اگر تنظیمات پیشفرضی را که quickstart script ایجاد کرده است تغییر نداده باشید، این اسکریپت TestRail را ارتقا میدهد. سپس باید این مراحل را انجام دهید:
-
با اجرای دستور زیر، Apache Docker container را پیدا کنید
docker ps -
کپی کنید
CONTAINER IDبرای
testrail/apacheimage -
اجرا کنید
docker exec -it <container_id>bash
برای ورود به Docker container -
به
/var/www/testraildirectory بروید -
اجرا کنید
php run.php update
اگر برای DB files یا موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در ادامه استفاده کنید.
گزینه ۲: ارتقا بهصورت مرحلهبهمرحله #
برای ارتقای TestRail از نسخهای قدیمیتر به نسخهای جدیدتر، مثلاً از ۶.۰.۰ به ۶.۰.۱، مراحل زیر را انجام دهید:
- containerها را متوقف کنید:
docker-compose down -v - اختیاری: اگر نسخه مشخصی از TestRail را مثلاً در یک
.envفایل تعیین کردهاید، نسخهای را که میخواهید به آن ارتقا دهید تنظیم کنید. - imageها را pull کنید:
docker-compose pull - توصیه میشود: backup تهیه کنید (در ادامه توضیح داده شده است)
- TestRail را راهاندازی کنید
docker-compose up -d - با اجرای دستور زیر، Apache Docker container را پیدا کنید
docker ps - کپی کنید
CONTAINER IDبرایtestrail/apacheimage - اجرا کنید
docker exec -it <container_id>برای ورود به Docker container، bash را اجرا کنید - به
/var/www/testraildirectory بروید - اجرا کنید
php run.php update
مهم #
از پوشهای که database را نگه میدارد و پوشهای که logها، reportها، attachmentها و auditها در آن قرار دارند backup بگیرید. بهطور پیشفرض، این پوشهها _mysql و _opt در دایرکتوری local قرار دارند. همچنین یک کپی از فایلهای config.php موجود در _config تهیه کنید.
برای انجام یک ارتقای امن هم میتوانید این سه پوشه را به یک مسیر جدید کپی کنید و سپس docker-compose را اجرا کنید.
موضوعات پیشرفته #
Apache در برابر nginx و MySQL در برابر MariaDB #
TestRail در حال حاضر بهصورت رسمی از Apache + MySQL پشتیبانی میکند. میتوانید nginx و MariaDB را هم امتحان کنید، اما توجه داشته باشید که این ترکیب بهصورت رسمی پشتیبانی نمیشود. اگر در استفاده از این دو سیستم به مشکلی برخوردید، لطفاً به ما اطلاع دهید تا بتوانیم در آینده به پشتیبانی احتمالی از nginx/MariaDB نزدیکتر شویم.
ایجاد backup #
همه containerها stateless هستند، بنابراین میتوانید آنها را با خیال راحت حذف کنید. دادههای مهم در local 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
ساخت Docker imageها توسط خودتان #
امکان ساخت Docker imageها توسط خودتان هم وجود دارد. همه Dockerfileها در این پوشه قرار دارند. دستورالعملهای build در زیرپوشههای مربوط به هر image آمده است.

