GitHub Actions
یکپارچهسازی با GitHub Actions
میتوانید Xray Checker را با استفاده از GitHub Actions اجرا کنید. این روش زمانی مفید است که نیاز دارید بررسیها را از مکانهای مختلف اجرا کنید یا سرور اختصاصی ندارید.
راهاندازی سریع
- مخزن xray-checker-in-actions را fork کنید
- secrets زیر را در مخزن fork شده خود پیکربندی کنید:
SUBSCRIPTION_URL: آدرس اشتراک شماPUSH_URL: آدرس Prometheus pushgateway برای جمعآوری متریکهاINSTANCE: (اختیاری) نام نمونه برای شناسایی متریکها
این Action:
- هر ۵ دقیقه اجرا میشود
- از آخرین نسخه Xray Checker استفاده میکند
- متریکها را به Prometheus pushgateway شما ارسال میکند
- با فلگ
--run-onceاجرا میشود تا اجرای تمیز تضمین شود
این روش به یک Prometheus pushgateway نیاز دارد زیرا نمیتواند متریکها را مستقیماً ارائه دهد. متریکها به PUSH_URL مشخص شده با برچسب instance از پیکربندی شما ارسال میشوند.
پیکربندیهای پیشرفته
اگر به کنترل بیشتر بر راهاندازی GitHub Actions نیاز دارید، در اینجا چند پیکربندی پیشرفته آورده شده است.
راهاندازی چند منطقهای
اجرای بررسیها از مناطق مختلف به طور همزمان:
name: Xray Checkeron: schedule: - cron: "*/5 * * * *" workflow_dispatch:
jobs: check: strategy: matrix: include: - location: us runs-on: us-east-1 - location: eu runs-on: eu-west-1 - location: asia runs-on: ap-east-1
runs-on: ${{ matrix.runs-on }}
steps: - name: Run Xray Checker uses: docker://kutovoys/xray-checker env: SUBSCRIPTION_URL: ${{ secrets.SUBSCRIPTION_URL }} METRICS_PUSH_URL: ${{ secrets.PUSH_URL }} METRICS_INSTANCE: ${{ matrix.location }} RUN_ONCE: trueاعلانهای خطا
اضافه کردن اعلانهای Slack یا Email برای بررسیهای ناموفق:
steps: - name: Run Xray Checker id: checker uses: docker://kutovoys/xray-checker env: SUBSCRIPTION_URL: ${{ secrets.SUBSCRIPTION_URL }} METRICS_PUSH_URL: ${{ secrets.PUSH_URL }} continue-on-error: true
- name: Notify on Failure if: steps.checker.outcome == 'failure' uses: actions/github-script@v6 with: script: | github.rest.issues.create({ owner: context.repo.owner, repo: context.repo.repo, title: 'Xray Checker Failed', body: 'Check failed in workflow run: ' + context.runId })فواصل بررسی سفارشی
الگوهای زمانبندی مختلف بر اساس نیازهای شما:
on: schedule: - cron: "*/5 * * * *" # هر ۵ دقیقه (پیشفرض) - cron: "0 * * * *" # هر ساعت - cron: "0 */2 * * *" # هر ۲ ساعتبهینهسازی منابع
بهینهسازی استفاده از GitHub Actions با کنترل همزمانی:
jobs: check: runs-on: ubuntu-latest timeout-minutes: 5
concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true
steps: - name: Run Xray Checker uses: docker://kutovoys/xray-checker env: SUBSCRIPTION_URL: ${{ secrets.SUBSCRIPTION_URL }} METRICS_PUSH_URL: ${{ secrets.PUSH_URL }} RUN_ONCE: trueراهاندازی نظارت
پیکربندی مورد نیاز Prometheus
برای جمعآوری متریکها از pushgateway، این را به پیکربندی Prometheus خود اضافه کنید:
scrape_configs: - job_name: "pushgateway" honor_labels: true static_configs: - targets: ["pushgateway:9091"]متریکها با برچسب instance که در پیکربندی GitHub Actions مشخص کردهاید ظاهر میشوند، که به شما امکان میدهد بررسیها را از مکانهای مختلف پیگیری کنید.