TestRail را میتوانید از طریق کانتینرهای Docker نصب کنید. این روش راهاندازی و اجرای TestRail را بسیار سادهتر میکند، چون همه وابستگیها و فایلهای لازم را همراه دارد و زمان نصب را به حداقل میرساند.
برای دریافت بسته Docker، از اینجا درخواست دهید: فرم درخواست نصب TestRail ۸.۰.۱.۱۰۲۹ با Docker
پیشنیازها #
-
Docker را نصب کنید + Docker Compose در Linux، استفاده از
pipتوصیه میشود -
آشنایی مقدماتی با Docker برای مثال، بدانید container، image، detached mode و موارد مشابه چه هستند → مستندات رسمی زیر را ببینید: مستندات Docker با عنوان «Get Started»
-
اختیاری: اگر از
quickstart.shscript استفاده میکنید، این موارد را هم نصب کنید:sudoوipمعمولاً روی بیشتر سیستمها از قبل نصب شده است
شروع سریع با script #
این مراحل را دنبال کنید:
- اجرا کنید
quickstart.sh - دو password وارد کنید: یکی برای database user معمولی و یکی برای 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>
با اجرای 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 بسازید تا متغیرهای مخصوص کاربر یا ماشین را در آن مشخص کنید. برای اطلاعات بیشتر، به مستندات 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ها پاک شوند، از این parameter استفاده نکنید. با این حال، توجه داشته باشید که این کار ممکن است همچنان عوارض جانبی داشته باشد. |
-f (file) |
برای مشخص کردن یک compose file متفاوت استفاده میشود. بهصورت پیشفرض، docker-compose.yml استفاده میشود. |
-p (project) |
اگر میخواهید چندین instance از TestRail را اجرا کنید، این مورد ضروری است. در غیر این صورت، docker-compose با containerی که از قبل در حال اجراست تعامل خواهد داشت. |
نام پوشهای که docker-compose از داخل آن اجرا میشود، در این مثال «internal-docker»، بهعنوان نام project استفاده میشود و به ابتدای نام همه containerهای ایجادشده اضافه میشود.
توصیه: استفاده کنید docker-compose down -v ، چون volumeهای نامدار و 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 bridged network به هم متصل میشوند. ترتیب start مهم است: php باید اول اجرا شود و بعد از آن webserver و DB اجرا شوند.
Migration & Upgrade کردن TestRail #
اجرای TestRail داخل containerهای Docker #
لطفاً Readme موجود در repository گیتهاب را ببینید.
TestRail از docker-compose برای اجرای سرویسهای موردنیاز و متصل کردن containerها به یکدیگر استفاده میکند.
برای start یا stop کردن TestRail، این دو command کافی است. آنها را در پوشه root repository اجرا کنید:
docker-compose up
docker-compose down
برای start کردن containerها در detached mode، کافی است پارامتر -d را اضافه کنید: docker-compose up -d
فایلهای docker-compose چند متغیر با مقدارهای پیشفرض از پیش تعیینشده دارند. برای تعیین مقدارهای دلخواه برای این متغیرها، یک فایل .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ها ایجاد کنید:
- با این command به DB وصل شوید
mysql -pو همه userها و hostهای آنها را فهرست کنید:SELECT user, host FROM mysql.user; - اگر کاربر TestRail در ستون host مقدار «localhost» یا یک IP مشخص دارد، و مقدار آن «%» نیست، باید یک کاربر جدید ایجاد شود: CREATE USER ‘testraildocker’@’%’ IDENTIFIED BY ‘newpassword’; >
GRANT ALL ON testrail.* TO 'testraildocker'@'%';
علامت «%» اجازه remote connection از هر IP را میدهد. اگر docker subnet خود را میدانید، که معمولاً ۱۷۲.۱۶.۲۵۵.۲۵۵ است، برای سختتر کردن امنیت بهجای «%» از همان internal docker subnet استفاده کنید.
- با این command به 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 خارجی #
اگر از یک سرور database خارجی استفاده میکنید، 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 از 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
اگر همان configuration پیشفرضی را نگه داشتهاید که quickstart script ایجاد کرده است، این کار TestRail را ارتقا میدهد. اگر برای فایلهای database و موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در ادامه استفاده کنید.
گزینه ۲: انجام ارتقا بهصورت مرحلهبهمرحله #
برای ارتقای TestRail از یک نسخه قدیمیتر به نسخهای جدیدتر، مثلا از ۶.۰.۰ به ۶.۰.۱، مراحل زیر را انجام دهید:
- containerها را متوقف کنید:
docker-compose down -v - اختیاری: اگر نسخه مشخصی از TestRail را مثلا در یک
.envfile تعیین کردهاید، نسخهای را تنظیم کنید که میخواهید به آن ارتقا دهید. - imageها را pull کنید:
docker-compose pull - توصیه میشود: backup تهیه کنید؛ بخش زیر را ببینید
- TestRail را راهاندازی کنید
docker-compose up -d
مهم #
از folderهایی که database را در خود دارند و همچنین از folderی که logs، reports، attachments و audits در آن قرار دارند backup بگیرید. بهطور پیشفرض، این folderها عبارتاند از _mysql و _opt در directory محلی. همچنین یک کپی از config.php fileهای موجود در _config.
میتوانید با کپی کردن این سه folder در یک مسیر جدید و سپس اجرای docker-compose ، یک ارتقای «safe» هم انجام دهید.
موضوعات پیشرفته #
Apache در مقایسه با nginx و MySQL در مقایسه با MariaDB #
TestRail در حال حاضر بهصورت رسمی از Apache + MySQL پشتیبانی میکند. میتوانید nginx و MariaDB را هم امتحان کنید، اما توجه داشته باشید که این ترکیبها بهصورت رسمی پشتیبانی نمیشوند. اگر در کار با این دو سیستم با مشکلی روبهرو شدید، لطفا به ما اطلاع دهید تا بتوانیم در آینده به پشتیبانی احتمالی از nginx/MariaDB نزدیکتر شویم.
ایجاد backup #
همه containerها stateless هستند، بنابراین میتوانید آنها را با خیال راحت حذف کنید. دادههای مرتبط در volumeهای local ذخیره میشوند؛ بهطور پیشفرض در _config ، _mysql ، و _opt. کافی است از این folderها backup بگیرید.
Environment variableها #
- 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 مربوط به هرکدام آمده است.
اگر از نسخه ۷.۰ upgrade میکنید، باید migration script را طبق مستندات این بخش اجرا کنید: ارتقای TestRail ترتیب پیشنهادی برای upgrade به این شکل است:
-
Cassandra را نصب و configure کنید
-
TestRail را نصب یا upgrade کنید
-
migration script را اجرا کنید

