TestRail را میتوانید از طریق containerهای Docker نصب کنید؛ این روش راهاندازی و اجرای TestRail را بسیار سادهتر میکند. همه dependencyها و فایلهای مورد نیاز 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 - دو رمز عبور وارد کنید: یکی برای کاربر معمولی database و یکی برای root
- چند لحظه صبر کنید؛ TestRail دانلود و راهاندازی میشود
TestRail باید از طریق این URL در دسترس باشد: http://localhost:۸۰۰۰
نصب را از طریق web UI کامل کنید (از مقادیری استفاده کنید که installer در پایان نمایش میدهد).
#
در بخشی از فرایند نصب باید یک 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>
با اجرای 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 fileها.
- ابتدا یک فایل .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 fileها مراجعه کنید). syntax ساده است؛ مثلا: HTTP_PORT=۸۰۰۰
متغیرهای محیطی را میتوانید با همین syntax مستقیما در shell هم تنظیم کنید و سپس از docker-compose استفاده کنید.
- DB_PORT
- HTTP_PORT
- HTTPS_PORT
- DB_URL (مثلا http://internal.yourcompany.com/۵.۷.sql)
پایگاهدادههای از پیش پرشده و فایل config.php در TestRail #
از طریق DB_URL variable هم میتوانید یک SQL dump ارائه کنید تا container آن را دانلود کند و TestRail از قبل پیکربندی شده باشد. برای اینکه درست کار کند، config.php باید ارائه شود. کافی است آن را در _config کپی کنید. مطمئن شوید که مقادیر موجود در config.php با تنظیمات database مربوط به user و password که در compose file برای db مشخص شدهاند، مطابقت داشته باشند.
استفاده از فایلهای Compose #
استفاده عمومی #
docker-compose up
docker-compose down
آرگومان up container را راهاندازی میکند؛ در حالی که down همه چیز را متوقف میکند. مرجع docker-compose CLI را میتوانید اینجا ببینید.
گزینههای مفید دیگر: #
| گزینه | توضیح |
|---|---|
-v (حذف named volumeها) |
این گزینه برای حذف volumeهای موقت پس از shutdown مهم است و استفاده از آن توصیه میشود. اگر نمیخواهید volumeها پاک شوند، از این parameter استفاده نکنید. با این حال، توجه داشته باشید که ممکن است همچنان پیامدهای ناخواستهای ایجاد کند. |
-f (فایل) |
برای مشخص کردن یک compose file متفاوت استفاده میشود (بهصورت پیشفرض docker-compose.yml استفاده میشود) |
-p (project) |
اگر قرار است چند instance از TestRail اجرا شود، این مورد لازم است. در غیر این صورت، docker-compose با containerای که از قبل در حال اجراست تعامل میکند. |
نام پوشهای که docker-compose از داخل آن اجرا میشود (در اینجا «internal-docker») بهعنوان نام project استفاده میشود و به ابتدای نام همه containerهای ایجادشده اضافه میشود.
توصیه: از docker-compose down -v استفاده کنید، چون 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 شبکه bridged به هم متصل میشوند. ترتیب start شدن مهم است: ابتدا php، سپس webserver و DB.
Migration & Upgrade کردن TestRail #
اجرای TestRail داخل containerهای Docker #
لطفاً Readme موجود در repo گیتهاب را ببینید.
TestRail از docker-compose برای اجرای serviceهای لازم و اتصال containerها به یکدیگر استفاده میکند.
برای start و stop کردن TestRail، این دو command کافی است. آنها را در پوشه root repo اجرا کنید:
docker-compose up
docker-compose down
برای start کردن containerها در detached mode، فقط پارامتر -d را اضافه کنید: docker-compose up -d
فایلهای docker-compose چند متغیر دارند که مقدار پیشفرض از قبل برایشان تعیین شده است. برای تنظیم مقدارهای دلخواه برای این متغیرها، یا یک فایل .env بسازید (همانطور که در مستندات فایلهای env در Docker توضیح داده شده است؛ این فایل یک فایل متنی ساده با 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های user در mysql را بررسی کنید. اگر user با ’@localhost’ ساخته شده باشد (یعنی دسترسی فقط به «from localhost only» محدود شده باشد)، باید یک 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 از راه دور را از هر IP میدهد. اگر subnet مربوط به docker خود را میدانید، که معمولاً ۱۷۲.۱۶.۲۵۵.۲۵۵ است، برای سختتر کردن امنیت بهجای «%» از همان 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 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 در صورتی که از قبل از container استفاده میکنید #
گزینه ۱: روش سریع و ساده #
کافی است از upgrade script استفاده کنید: upgradeTestRail.sh
اگر همان configuration پیشفرضی را نگه داشته باشید که quickstart script ایجاد کرده است، این script نسخه TestRail را ارتقا میدهد. سپس باید مراحل زیر را دنبال کنید:
- Apache Docker container را با اجرای دستور زیر پیدا کنید
docker ps - کپی کنید
CONTAINER IDبرایtestrail/apacheimage - اجرا کنید
docker exec -it <container_id>برای ورود به Docker container، bash را اجرا کنید - به مسیر زیر بروید
/var/www/testrailدایرکتوری - اجرا کنید
php run.php update
اگر برای DB files و موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در ادامه استفاده کنید.
گزینه ۲: انجام ارتقا بهصورت مرحلهبهمرحله #
برای ارتقای TestRail از یک نسخه قدیمیتر به نسخه جدیدتر، مثلاً از ۶.۰.۰ به ۶.۰.۱، مراحل زیر را انجام دهید:
- containerها را متوقف کنید:
docker-compose down -v - اختیاری: اگر نسخه مشخصی از TestRail را مثلاً در یک
.envفایل تعیین کردهاید، نسخهای را که میخواهید به آن ارتقا دهید تنظیم کنید. - imageها را دریافت کنید:
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/testrailدایرکتوری - اجرا کنید
php run.php update
مهم #
از پوشههای حاوی database و پوشهای که logs، reports، attachments و audits را نگه میدارد backup بگیرید. بهصورت پیشفرض، این پوشهها _mysql و _opt در دایرکتوری local هستند. همچنین یک کپی از config.php فایلهای موجود در _config تهیه کنید.
برای انجام یک upgrade «ایمن» هم میتوانید این سه پوشه را در یک مسیر جدید کپی کنید و سپس دستور docker-compose را اجرا کنید.
موضوعات پیشرفته #
Apache در مقایسه با nginx و MySQL در مقایسه با MariaDB #
TestRail در حال حاضر بهصورت رسمی از Apache + MySQL پشتیبانی میکند. میتوانید nginx و MariaDB را هم امتحان کنید، اما توجه داشته باشید که این ترکیب بهصورت رسمی پشتیبانی نمیشود. اگر هنگام استفاده از این دو سیستم با مشکلی روبهرو شدید، به ما اطلاع دهید تا بتوانیم امکان پشتیبانی از nginx/MariaDB را در آینده بررسی کنیم.
ایجاد backup #
همه containerها stateless هستند، بنابراین میتوانید آنها را با خیال راحت حذف کنید. دادههای مهم در volumeهای local ذخیره میشوند؛ بهصورت پیشفرض در _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ها را خودتان بسازید. همه Dockerfileها در این پوشه قرار دارند. دستورالعملهای build در subfolderهای مربوطه آمده است.

