TestRail را میتوانید با Docker containers نصب کنید؛ این روش راهاندازی و شروع کار با TestRail را بسیار سادهتر میکند. در این روش همه dependencyها و فایلهای موردنیاز TestRail آماده هستند تا زمان نصب به حداقل برسد.
مخزن Docker مربوط به TestRail #
بسته ZIP داکر TestRail
#
همچنین میتوانید همه فایلها را از این منبع clone کنید: GitHub repo داکر TestRail
پیشنیازها #
-
Docker را نصب کنید + Docker Compose (در Linux، استفاده از
pipتوصیه میشود) -
آشنایی اولیه با Docker (برای مثال، بدانید container، image، detached mode و موارد مشابه چه هستند) → مستندات رسمی زیر را ببینید: مستندات Docker با عنوان Get Started
-
اختیاری: اگر از
quickstart.shscript استفاده میکنید، این مورد را هم نصب کنید:sudoوip(معمولاً روی بیشتر سیستمها از قبل نصب شده است)
شروع سریع با script #
این مراحل را دنبال کنید:
- اجرا کنید:
quickstart.sh - دو password وارد کنید؛ یکی برای کاربر معمولی 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 بسازید که دستکم 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 محلی بسازید تا متغیرهای مخصوص کاربر یا دستگاه را در آن مشخص کنید. برای اطلاعات بیشتر، به مستندات 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 کپی کنید. مطمئن شوید مقادیر موجود در config.php با تنظیمات database برای user و password که در compose file مربوط به db مشخص شدهاند، مطابقت داشته باشد.
استفاده از Compose fileها #
استفاده عمومی #
docker-compose up
docker-compose down
آرگومان up container را اجرا میکند؛ در حالی که down همه چیز را متوقف میکند. مرجع docker-compose CLI را میتوانید اینجا پیدا کنید.
گزینههای مفید دیگر: #
| گزینه | توضیحات |
|---|---|
-v (حذف named volumeها) |
این گزینه برای حذف volumeهای موقت پس از خاموش کردن مهم است و استفاده از آن توصیه میشود. اگر نمیخواهید volumeها پاک شوند، از این پارامتر استفاده نکنید. البته توجه داشته باشید که این کار همچنان ممکن است عوارض جانبی داشته باشد. |
-f (فایل) |
برای مشخص کردن یک compose file متفاوت استفاده میشود. بهصورت پیشفرض از docker-compose.yml استفاده میشود. |
-p (project) |
اگر قرار است چند instance از TestRail اجرا شود، لازم است. در غیر این صورت، docker-compose با containerی که از قبل در حال اجراست تعامل خواهد داشت. |
نام فولدری که docker-compose از داخل آن اجرا میشود (در اینجا «internal-docker»)، بهعنوان project name استفاده میشود و به ابتدای نام همه containerهای ایجادشده اضافه میشود.
توصیه: از docker-compose down -v استفاده کنید، چون volumeهای نامدار و anonymous را حذف میکند!
نکات کلی درباره فایلهای compose #
- همه فایلهای compose به volumeهای اضافی وابسته هستند:
-
testrail_rootشامل فایلهای نصب است و روی این مسیر mount میشود:/var/www/testrail -
testrail_optشامل فایلهای upload شده و موارد مشابه است و روی این مسیر mount میشود:/opt/testrail -
testrail_dbشامل database است و روی این مسیر mount میشود:/var/lib/mysql. -
testrail_configشامل فایل config.php است که TestRail را پیکربندی میکند و روی این مسیر mount میشود:/var/www/testrail/config
containerها از طریق یک testrail bridged network به هم متصل میشوند. ترتیب start شدن مهم است: php باید اول start شود و بعد از آن webserver و DB.
Migration & Upgrade کردن TestRail #
اجرای TestRail داخل containerهای Docker #
لطفا Readme موجود در repo گیتهاب را ببینید.
TestRail از docker-compose برای اجرای سرویسهای لازم و اتصال 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 بسازید (همانطور که در مستندات docker env files توضیح داده شده است؛ این فایل یک فایل متنی ساده با ساختار 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 جدید با دسترسی کافی برای اجازه دادن به 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 خود را میدانید، که معمولا ۱۷۲.۱۶.۲۵۵.۲۵۵ است، برای سختتر کردن تنظیمات امنیتی بهجای «%» از همان subnet داخلی docker استفاده کنید.)
- با این دستور به DB دسترسی پیدا کنید:
- کل محتوای
/var/lib/mysqlرا در_mysqlپوشه وconfig.phpفایل را به_config. - اگر میخواهید پیوستها، گزارشها، لاگها و 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
همچنین مسیرهای مربوط به پیوستها و گزارشها را در مسیر TestRail > Administration > Site Settings به این مقادیر تغییر دهید: /opt/testrail/attachments و /opt/testrail/reports
استفاده از پایگاه داده خارجی #
اگر از یک سرور پایگاه داده خارجی استفاده میکنید، DB server را همانطور که هست نگه دارید و این مراحل را دنبال کنید:
- فایل
config.phpرا به_config. - اگر میخواهید پیوستها، گزارشها، لاگها و 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 از پورت مشخصی استفاده کنید، یک فایل .env بسازید (اطلاعات بیشتر در اینجا) و پورت را با این قالب مشخص کنید: HTTP_PORT=<portNumber>
- دستور زیر را اجرا کنید:
docker-compose up -d
همچنین مسیرهای مربوط به پیوستها و گزارشها در بخش TestRail>Administration>Site Settings به: /opt/testrail/attachments و /opt/testrail/reports
ارتقای TestRail در صورتی که از قبل از container استفاده میکنید #
گزینه ۱: روش سریع و ساده #
فقط از upgrade script استفاده کنید: upgradeTestRail.sh
اگر همان configuration پیشفرضی را نگه داشتهاید که quickstart script ساخته است، این کار TestRail را upgrade میکند. سپس باید این مراحل را انجام دهید:
- 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 و موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در پایین استفاده کنید.
گزینه ۲: انجام upgrade بهصورت مرحلهبهمرحله #
برای upgrade کردن TestRail از یک نسخه قدیمیتر به نسخهای جدیدتر، مثلا از ۶.۰.۰ به ۶.۰.۱، مراحل زیر را انجام دهید:
- containerها را متوقف کنید:
docker-compose down -v - اختیاری: اگر نسخه مشخصی از TestRail را مثلا در یک
.envفایل تعیین کردهاید، نسخهای را تنظیم کنید که میخواهید به آن upgrade کنید. - 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/testrailدایرکتوری - اجرا کنید
php run.php update
مهم #
از پوشههای حاوی database و پوشهای که logs، reports، attachments و audits در آن قرار دارند، نسخه پشتیبان بگیرید. بهطور پیشفرض، این پوشهها _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. کافی است از این پوشهها نسخه پشتیبان بگیرید.
متغیرهای محیطی #
- 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ها را خودتان build کنید. همه Dockerfileها در این پوشه. دستورالعملهای build در زیرپوشههای مربوطه قرار دارد.

