میتوانید TestRail را با استفاده از کانتینرهای Docker نصب کنید؛ این روش راهاندازی TestRail را بسیار سادهتر میکند. در این حالت، همه وابستگیها و فایلهای لازم برای TestRail همراه بسته ارائه میشوند تا زمان نصب به حداقل برسد.
مخزن Docker مربوط به TestRail #
بسته ZIP Docker مربوط به TestRail
#
همچنین میتوانید همه فایلها را از ریپازیتوری GitHub Docker TestRail clone کنید
پیشنیازها #
-
Docker را نصب کنید + Docker Compose (در Linux، استفاده از
pipتوصیه میشود) -
آشنایی اولیه با Docker (مثلاً بدانید container، image، detached mode و موارد مشابه چه هستند) → مستندات رسمی زیر را ببینید: Docker “Get Started” documentation
-
اختیاری: اگر از
quickstart.shاسکریپت استفاده میکنید، این موارد را هم نصب کنید:sudoوip(که معمولاً روی بیشتر سیستمها از قبل نصب هستند)
شروع سریع با اسکریپت #
این مراحل را دنبال کنید:
- دستور زیر را اجرا کنید:
quickstart.sh - دو رمز عبور وارد کنید: یکی برای کاربر معمولی database و یکی برای root
- چند لحظه صبر کنید؛ TestRail دانلود و راهاندازی میشود.
TestRail باید از آدرس زیر در دسترس باشد: 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>
با اجرای 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 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 محلی بسازید (برای اطلاعات بیشتر، مستندات فایلهای env در Docker را ببینید). 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 پوشه کپی کنید. مطمئن شوید مقادیر موجود در 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های موقت پس از خاموش شدن مهم است و استفاده از آن توصیه میشود. اگر نمیخواهید volumeها پاک شوند، از این پارامتر استفاده نکنید. البته توجه داشته باشید که این کار ممکن است همچنان باعث بعضی side effectها شود. |
-f (فایل) |
برای مشخص کردن یک compose file متفاوت میتوانید از آن استفاده کنید (بهصورت پیشفرض از docker-compose.yml استفاده میشود) |
-p (project) |
اگر قرار است چند instance از TestRail اجرا شود، این مورد الزامی است. در غیر این صورت، docker-compose با containerی که از قبل در حال اجراست تعامل میکند. |
نام پوشهای که docker-compose از داخل آن اجرا میشود (در این مثال، «internal-docker») بهعنوان نام project استفاده میشود و به ابتدای نام همه 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 موجود در GitHub repo را ببینید.
TestRail از docker-compose برای اجرای serviceهای لازم و وصل کردن containerها به یکدیگر استفاده میکند.
برای start/stop کردن TestRail، این دو دستور کافی است. آنها را در پوشه root repo اجرا کنید:
docker-compose up
docker-compose down
برای اجرای 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 ارائه میدهد.
مهاجرت از نصب موجود TestRail Server به containerها #
استفاده از database داخل containerها #
اگر یک DB اختصاصی فقط برای TestRail اجرا کردهاید، منطقی است که DB را هم داخل یک container اجرا کنید. برای ارتقا، مراحل زیر را دنبال کنید:
-
قبل از migration، privilegeهای user مربوط به MySQL را بررسی کنید. اگر user با ‘@localhost’ ساخته شده باشد (یعنی دسترسی آن فقط به «از localhost» محدود شده باشد)، باید user جدیدی با دسترسی کافی برای اتصالهای 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'@'%';
(علامت ‘%’ اجازه اتصال remote از هر IP را میدهد. اگر subnet مربوط به Docker خود را میدانید – معمولاً ۱۷۲.۱۶.۲۵۵.۲۵۵ – برای امنیت بیشتر، بهجای ‘%’ از همان subnet داخلی Docker استفاده کنید.)
- با دستور زیر به DB وصل شوید:
- کل محتوای
/var/lib/mysqlرا به مسیر زیر کپی کنید:_mysqlپوشه و فایلconfig.phpرا در_configکپی کنید. - اگر میخواهید پیوستها، گزارشها، logها و audit logها را نگه دارید، پوشههای
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کپی کنید. - اگر میخواهید پیوستها، گزارشها، logها و audit logها را نگه دارید، پوشههای
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 از پورت مشخصی استفاده کنید، یک فایل .env ایجاد کنید (اطلاعات بیشتر را اینجا ببینید) و پورت را بهصورت HTTP_PORT=<portNumber مشخص کنید.>
- دستور زیر را اجرا کنید:
docker-compose up -d
همچنین مسیرهای مربوط به attachments و گزارشها در بخش TestRail>Administration>Site Settings به: /opt/testrail/attachments و /opt/testrail/reports
ارتقای TestRail در صورتی که از قبل از containerها استفاده میکنید #
گزینه ۱: روش سریع و ساده #
فقط از اسکریپت upgrade استفاده کنید: upgradeTestRail.sh
اگر همان تنظیمات پیشفرضی را نگه داشته باشید که اسکریپت quickstart ایجاد کرده است، این کار TestRail را upgrade میکند. سپس باید این مراحل را انجام دهید:
- با اجرای دستور زیر، container مربوط به Apache در Docker را پیدا کنید
docker ps - کپی کنید
CONTAINER IDبرایtestrail/apacheimage - اجرا کنید
docker exec -it <container_id>برای ورود به Docker container، bash را اجرا کنید - به مسیر زیر بروید
/var/www/testrailدایرکتوری - اجرا کنید
php run.php update
اگر برای فایلهای DB و موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در ادامه استفاده کنید.
گزینه ۲: انجام upgrade بهصورت مرحلهبهمرحله #
برای ارتقای TestRail از یک نسخه قدیمیتر به نسخهای جدیدتر، مثلاً از ۶.۰.۰ به ۶.۰.۱، مراحل زیر را انجام دهید:
- containerها را متوقف کنید:
docker-compose down -v - اختیاری: اگر نسخه مشخصی از TestRail را مثلاً در یک
.envفایل تعیین کردهاید، نسخهای را تنظیم کنید که میخواهید به آن upgrade کنید. - imageها را pull کنید:
docker-compose pull - توصیه میشود: backup تهیه کنید (بخش زیر را ببینید)
- TestRail را راهاندازی کنید
docker-compose up -d - با اجرای دستور زیر، container مربوط به Apache در Docker را پیدا کنید
docker ps - کپی کنید
CONTAINER IDبرایtestrail/apacheimage - اجرا کنید
docker exec -it <container_id>برای ورود به Docker container، bash را اجرا کنید - به مسیر زیر بروید
/var/www/testrailدایرکتوری - اجرا کنید
php run.php update
مهم #
از پوشههای حاوی دیتابیس و همچنین از پوشهای که 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
ساخت Docker imageها توسط خودتان #
امکان ساخت Docker imageها توسط خودتان هم وجود دارد. همه Dockerfileها در این پوشه قرار دارند. دستورالعملهای build در subfolderهای مربوطه آمده است.

