Найти в Дзене
Анастасия Софт

🚀 Интеграция K6 с GitHub Actions и Grafana Cloud: Автоматизация и красивые отчёты

Писать нагрузочные тесты — это здорово.
Но запускать их автоматически при каждом пуше в main, с графиками, алертами и без рутины — вот это кайф! Сегодня покажу, как: У тебя должен быть базовый проект с тестами, например tests/load-test.js: import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
vus: 10,
duration: '30s',
};
export default function () {
const res = http.get('https://your-api.com/');
check(res, { 'status is 200': (r) => r.status === 200 });
sleep(1);
} 💡 Можно подключить CSV, JSON, Faker и всё, о чём мы писали раньше — это не мешает CI. Создай файл .github/workflows/load-test.yml: name: Run k6 Load Test
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
k6-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install k6
run: |
sudo apt update
sudo apt install -y gnupg software-properties-common
sudo apt-key
Оглавление

Писать нагрузочные тесты — это здорово.

Но запускать их автоматически при каждом пуше в main, с графиками, алертами и без рутины —
вот это кайф!

Сегодня покажу, как:

  • Подключить k6 к GitHub Actions для CI/CD-тестирования
  • Интегрировать результаты с Grafana Cloud
  • Получать ✨ красивые графики и отчёты автоматически

🛠 Что нам нужно

  • ✅ Репозиторий на GitHub
  • ✅ Установленный k6 (внутри Actions или локально)
  • ✅ Аккаунт в Grafana Cloud
  • ✅ 10 минут свободного времени и чуть-чуть терпения

📦 Шаг 1. Готовим проект k6

У тебя должен быть базовый проект с тестами, например tests/load-test.js:

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
vus: 10,
duration: '30s',
};

export default function () {
const res = http.get('https://your-api.com/');
check(res, { 'status is 200': (r) => r.status === 200 });
sleep(1);
}

💡 Можно подключить CSV, JSON, Faker и всё, о чём мы писали раньше — это не мешает CI.

🤖 Шаг 2. Настраиваем GitHub Actions

Создай файл .github/workflows/load-test.yml:

name: Run k6 Load Test

on:
push:
branches: [ main ]
workflow_dispatch:

jobs:
k6-test:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Install k6
run: |
sudo apt update
sudo apt install -y gnupg software-properties-common
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 33F40D876234D9C3
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt update
sudo apt install -y k6

- name: Run k6 test
run: k6 run tests/load-test.js

🎯 Теперь при каждом пуше в main, GitHub Actions будет запускать твой тест.

📊 Шаг 3. Подключаемся к Grafana Cloud

3.1. Получи токен и адрес

  1. Зарегистрируйся в Grafana Cloud.
  2. Создай K6 Cloud Project.
  3. Найди:
    K6_CLOUD_TOKEN
    https://insights.k6.io или похожий адрес

3.2. Установи токен как GitHub Secret

В GitHub:

  • Зайди в Settings → Secrets and variables → Actions
  • Добавь секрет K6_CLOUD_TOKEN

🛰 Шаг 4. Обновим workflow для Grafana Cloud

Обнови шаг Run k6 test:

- name: Run k6 test in cloud
run: k6 cloud tests/load-test.js
env:
K6_CLOUD_TOKEN: ${{ secrets.K6_CLOUD_TOKEN }}

Теперь твой тест будет запускаться в облаке, а результаты появятся в дашборде Grafana Cloud с красивыми графиками.

📺 Как это выглядит

После запуска:

  • Перейди в Grafana Cloud → "K6 Projects"
  • Выбери нужный прогон
  • Наслаждайся метриками: VU load, RPS, ошибки, latency, thresholds

Можно добавить алерты, добавить графики на свой общий dashboard, подключить Slack или Telegram.

🧪 Бонус: K6 summary в GitHub Actions

Если хочешь, чтобы summary отображался прямо в GitHub Actions UI:

- name: Run k6 with summary
run: |
k6 run --summary-export=summary.json tests/load-test.js
cat summary.json

🎯 Заключение

Сделав 3 простых шага, ты получил:

✅ Автоматические нагрузочные тесты при каждом пуше

✅ Публикацию результатов в Grafana Cloud

✅ Визуализацию, которая нравится даже менеджерам 😄