TestRail را میتوانید با کانتینرهای Docker نصب کنید؛ این روش راهاندازی و اجرای TestRail را بسیار سادهتر میکند. همه dependencyها و فایلهای موردنیاز TestRail در این روش آماده است تا زمان نصب به حداقل برسد.
مخزن Docker برای TestRail #
پکیج zip داکر TestRail
#
همچنین میتوانید همه فایلها را از مخزن GitHub داکر 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>
با اجرای 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 بسازید و دستکم متغیرهای اجباری زیر را در آن قرار دهید:
- 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 محلی بسازید تا متغیرهای مخصوص user یا machine را در آن مشخص کنید. برای اطلاعات بیشتر، به مستندات 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 #
استفاده عمومی #
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های نامدار و 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 به هم وصل میشوند. ترتیب اجرا مهم است: ابتدا php، سپس webserver و DB باید اجرا شوند.
مهاجرت & ارتقای TestRail #
اجرای TestRail داخل containerهای Docker #
لطفاً Readme موجود در repo گیتهاب را ببینید.
TestRail از docker-compose برای اجرای سرویسهای موردنیاز و اتصال containerها به یکدیگر استفاده میکند.
برای شروع یا توقف TestRail، این دو دستور کافی است. آنها را در پوشه root repo اجرا کنید:
docker-compose up
docker-compose down
برای اجرای containerها در حالت detached، فقط پارامتر -d را اضافه کنید: docker-compose up -d
فایلهای docker-compose چند متغیر با مقدار پیشفرض دارند. برای تعیین مقدارهای سفارشی برای این متغیرها، یک فایل .env بسازید (همانطور که در مستندات فایلهای env در Docker توضیح داده شده است؛ این فایل، یک فایل متنی ساده با ساختار 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 اجرا کنید. برای upgrade این مراحل را دنبال کنید:
-
قبل از مهاجرت، مجوزهای کاربر mysql را بررسی کنید. اگر کاربری با ‘@localhost’ ساخته شده باشد (یعنی فقط از localhost اجازه دسترسی داشته باشد)، باید یک کاربر جدید با دسترسی کافی بسازید تا اتصالهای remote مجاز شوند:
- با دستور زیر به 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 از هر IP را مجاز میکند. اگر Docker subnet خود را میشناسید، که معمولاً ۱۷۲.۱۶.۲۵۵.۲۵۵ است، برای افزایش امنیت بهجای ‘%’ از همان 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 از port مشخصی استفاده کنید، یک فایل .env ایجاد کنید (اطلاعات بیشتر در اینجا) و port را از طریق این گزینه مشخص کنید
HTTP_PORT=<portNumber> - اجرا کنید
docker-compose up -d
همچنین مسیرهای مربوط به attachments و reports را در بخش TestRail > Administration > Site Settings به این مقدارها تغییر دهید: /opt/testrail/attachments و /opt/testrail/reports
استفاده از database خارجی #
اگر از یک external 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 از port مشخصی استفاده کنید، یک فایل .env ایجاد کنید (اطلاعات بیشتر در اینجا) و port را از طریق HTTP_PORT= مشخص کنید<portNumber>
- اجرا کنید
docker-compose up -d
همچنین مسیرهای مربوط به attachments و گزارشها در بخش TestRail>Administration>Site Settings به: /opt/testrail/attachments و /opt/testrail/reports
ارتقای TestRail در صورتی که از قبل از container استفاده میکنید #
گزینه ۱: سریع و دمدستی #
کافی است از اسکریپت ارتقا استفاده کنید: upgradeTestRail.sh
اگر همان پیکربندی پیشفرضی را حفظ کرده باشید که اسکریپت quickstart ایجاد کرده است، این کار TestRail را ارتقا میدهد. سپس باید مراحل زیر را انجام دهید:
- با اجرای دستور زیر، Docker container مربوط به Apache را پیدا کنید
docker ps - کپی
CONTAINER IDبرایtestrail/apacheimage - دستور زیر را اجرا کنید
docker exec -it <container_id>تا با bash وارد Docker container شوید - به دایرکتوری
/var/www/testrailبروید - دستور زیر را اجرا کنید
php run.php update
اگر برای فایلهای DB و موارد مشابه از مسیرهای سفارشی استفاده میکنید، از گزینه ۲ در ادامه استفاده کنید.
گزینه ۲: انجام ارتقا بهصورت مرحلهبهمرحله #
برای ارتقای TestRail از نسخهای قدیمیتر به نسخهای جدیدتر (مثلاً از ۶.۰.۰ به ۶.۰.۱)، مراحل زیر را انجام دهید:
- containerها را متوقف کنید:
docker-compose down -v - (اختیاری) اگر نسخه مشخصی از TestRail را، مثلاً در یک
.envفایل، تعیین کردهاید، نسخهای را تنظیم کنید که میخواهید به آن ارتقا دهید. - imageها را pull کنید:
docker-compose pull - توصیه میشود: نسخه پشتیبان تهیه کنید (در ادامه ببینید)
- TestRail را راهاندازی کنید
docker-compose up -d - با اجرای دستور زیر، Docker container مربوط به Apache را پیدا کنید
docker ps - کپی
CONTAINER IDبرایtestrail/apacheimage - دستور زیر را اجرا کنید
docker exec -it <container_id>تا با bash وارد Docker container شوید - به دایرکتوری
/var/www/testrailبروید - دستور زیر را اجرا کنید
php run.php update
مهم #
از پوشههایی که database را در خود دارند و همینطور از پوشهای که logs، reports، attachments و audits را نگه میدارد، backup بگیرید. بهصورت پیشفرض، این پوشهها _mysql و _opt در دایرکتوری محلی قرار دارند. همچنین یک کپی از فایلهای config.php موجود در _config تهیه کنید.
برای انجام یک upgrade «ایمن» هم میتوانید این سه پوشه را در مسیر جدیدی کپی کنید و سپس docker-compose را اجرا کنید.
موضوعات پیشرفته #
Apache در مقابل nginx و MySQL در مقابل MariaDB #
TestRail در حال حاضر بهصورت رسمی از ترکیب Apache + MySQL پشتیبانی میکند. میتوانید nginx و MariaDB را هم امتحان کنید، اما توجه داشته باشید که این ترکیب فعلاً بهصورت رسمی پشتیبانی نمیشود. اگر با این دو سیستم به مشکلی برخوردید، لطفاً به ما اطلاع دهید تا بتوانیم در آینده به پشتیبانی احتمالی از nginx/MariaDB نزدیکتر شویم.
تهیه backup #
همه containerها stateless هستند، بنابراین میتوان آنها را بدون مشکل حذف کرد. دادههای مهم در 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ها را خودتان build کنید. همه Dockerfileها در این پوشه قرار دارند. دستورالعملهای build در subfolderهای مربوطه آمده است.

