Compare commits

...

10 Commits

Author SHA1 Message Date
Florian Herrengt 96a7606ee2 use 24 hours format instead of 12
continuous-integration/drone/push Build is passing Details
continuous-integration/drone Build is passing Details
2024-07-31 13:20:25 +01:00
Florian Herrengt 6bce9e5838 remove .only 2024-07-30 16:25:58 +01:00
Florian Herrengt 55a7f98f49 add "clickhouse is healthy" check 2024-07-30 16:24:45 +01:00
Florian Herrengt 0b99b46256 check for the last 2 hours instead of 1 to limit false positives 2024-05-06 16:02:40 +01:00
Florian Herrengt b1a4251be9 Revert "test build fail"
This reverts commit 90ad9d6b69.
2024-05-01 18:38:25 +01:00
Florian Herrengt 90ad9d6b69 test build fail 2024-05-01 18:36:57 +01:00
Florian Herrengt 40ab72a195 send email only when build failed 2024-05-01 18:35:53 +01:00
Florian Herrengt 16c82b4c17 send email 2024-05-01 18:33:10 +01:00
Florian Herrengt aef4a712ec network_mode: host 2024-05-01 17:21:08 +01:00
Florian Herrengt 0954c00e14 revert debug 2024-05-01 17:19:46 +01:00
2 changed files with 114 additions and 11 deletions

View File

@ -1,3 +1,33 @@
kind: secret
name: POSTGRES_PASSWORD
get:
path: secrets
name: POSTGRES_PASSWORD
---
kind: secret
name: CLICKHOUSE_PASSWORD
get:
path: secrets
name: CLICKHOUSE_PASSWORD
---
kind: secret
name: SMTP_HOST
get:
path: secrets
name: SMTP_HOST
---
kind: secret
name: SMTP_USERNAME
get:
path: secrets
name: SMTP_USERNAME
---
kind: secret
name: SMTP_PASSWORD
get:
path: secrets
name: SMTP_PASSWORD
---
kind: pipeline
type: docker
name: healthcheck
@ -6,8 +36,60 @@ trigger:
branch:
- master
services:
- name: kubectl-proxy-postgres
image: bitnami/kubectl
network_mode: host
environment:
KUBE_CONFIG:
from_secret: KUBE_CONFIG
commands:
- echo "$$KUBE_CONFIG" | base64 -d > /.kube/config
- kubectl -n databases port-forward pod/postgres-0 5432:5432
- name: kubectl-proxy-clickhouse
image: bitnami/kubectl
network_mode: host
environment:
KUBE_CONFIG:
from_secret: KUBE_CONFIG
commands:
- echo "$$KUBE_CONFIG" | base64 -d > /.kube/config
- kubectl -n databases port-forward pod/clickhouse-0 8123:8123
steps:
- name: test
- name: install
image: node:20.10.0
commands:
- echo test
- npm install
- name: build
image: node:20.10.0
commands:
- npm run build
- name: test
network_mode: host
image: node:20.10.0
commands:
- npm run test
environment:
POSTGRES_HOST: localhost
POSTGRES_DATABASE: nocodelytics_production
POSTGRES_PASSWORD:
from_secret: POSTGRES_PASSWORD
CLICKHOUSE_HOST: http://localhost:8123
CLICKHOUSE_DATABASE: nocodelytics_production
CLICKHOUSE_PASSWORD:
from_secret: CLICKHOUSE_PASSWORD
- name: notify
image: drillster/drone-email
settings:
host:
from_secret: SMTP_HOST
port: 587
username:
from_secret: SMTP_USERNAME
password:
from_secret: SMTP_PASSWORD
from: no-reply@nocodelytics.com
recipients: [florian@nocodelytics.com]
when:
status: [failure]

View File

@ -4,19 +4,40 @@ import { sum } from "lodash";
import * as dateFns from "date-fns";
import { clickhouseClient, knex } from "./databases";
const oneHourAgo = dateFns.format(
dateFns.subHours(new Date(), 1),
"yyyy-MM-dd hh:mm:ss"
const twoHourAgo = dateFns.format(
dateFns.subHours(new Date(), 2),
"yyyy-MM-dd HH:mm:ss"
);
const now = dateFns.format(new Date(), "yyyy-MM-dd HH:mm:ss");
describe("Events", () => {
test.skip("has inserted events", async () => {
test("clickhouse is healthy", async () => {
const { data } = await (
await clickhouseClient.query({
query: `
SELECT
hostName() AS host,
uptime() AS uptime_seconds,
version() AS clickhouse_version,
'OK' AS status
FROM system.tables
LIMIT 1;
`,
})
).json();
const [{ status }] = data as any;
assert.equal(status, "OK");
});
test("has inserted events", async () => {
const query = knex("events")
.count("")
.whereBetween("created_at", [twoHourAgo, now])
.toString();
console.log(query);
const { data } = (await (
await clickhouseClient.query({
query: knex("events")
.count("")
.where("created_at", ">", oneHourAgo)
.toString(),
query,
})
).json()) as any;
assert.notEqual(Number.parseInt(data[0]["count()"], 10), 0);
@ -26,7 +47,7 @@ describe("Events", () => {
await clickhouseClient.query({
query: knex("events")
.count()
.where("created_at", ">", oneHourAgo)
.where("created_at", ">", twoHourAgo)
.groupBy("geo_ip_country")
.toString(),
format: "JSON",