test: E2E скрипт run_e2e_tests.sh + fix provider token/version в примерах
This commit is contained in:
parent
6b869a0fa7
commit
aae073247b
@ -18,7 +18,7 @@ terraform {
|
||||
|
||||
provider "sless" {
|
||||
endpoint = "https://sless-api.kube5s.ru"
|
||||
token = file("${path.module}/../../secrets/prod.token")
|
||||
token = var.token
|
||||
nubes_endpoint = "https://deck-api.ngcloud.ru/api/v1"
|
||||
}
|
||||
|
||||
|
||||
10
hello-node/variables.tf
Normal file
10
hello-node/variables.tf
Normal file
@ -0,0 +1,10 @@
|
||||
# 2026-03-11
|
||||
# variables.tf — входные переменные для hello-node примера.
|
||||
|
||||
# JWT токен облака (nubes). Передаётся через terraform.tfvars (gitignored).
|
||||
# Из токена провайдер вычисляет namespace: sless-{sha256[:8]}
|
||||
variable "token" {
|
||||
description = "JWT токен облака для аутентификации в sless API"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
@ -14,13 +14,14 @@ terraform {
|
||||
# Провайдер для управления serverless функциями через sless API
|
||||
sless = {
|
||||
source = "terra.k8c.ru/naeel/sless"
|
||||
version = "~> 0.1.11"
|
||||
version = "~> 0.1.13"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# sless провайдер подключается к API кластера.
|
||||
provider "sless" {
|
||||
endpoint = "https://sless-api.kube5s.ru"
|
||||
token = "dev-token-change-me"
|
||||
endpoint = "https://sless-api.kube5s.ru"
|
||||
token = var.token
|
||||
nubes_endpoint = "https://deck-api.ngcloud.ru/api/v1"
|
||||
}
|
||||
|
||||
@ -1,10 +1,18 @@
|
||||
# 2026-03-09
|
||||
# 2026-03-09 (обновлён 2026-03-11)
|
||||
# variables.tf — входные переменные для notes-python примера.
|
||||
#
|
||||
# PG_DSN передаётся во все функции через env_vars.
|
||||
# Хранится как sensitive чтобы не светился в terraform output и логах.
|
||||
# В продакшне — не хардкоди DSN здесь, используй TF_VAR_pg_dsn или secrets manager.
|
||||
|
||||
# JWT токен облака (nubes). Передаётся через terraform.tfvars (gitignored).
|
||||
# Из токена провайдер вычисляет namespace: sless-{sha256[:8]}
|
||||
variable "token" {
|
||||
description = "JWT токен облака для аутентификации в sless API"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
# DSN для подключения к PostgreSQL внутри кластера.
|
||||
# Формат: postgres://user:password@host:port/dbname?sslmode=...
|
||||
variable "pg_dsn" {
|
||||
|
||||
7
push-sample/Dockerfile
Normal file
7
push-sample/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
||||
# 2026-03-11 10:00
|
||||
# Minimal sample image to push to PearlHarbor registry
|
||||
# Purpose: небольшой образ для тестирования пуша в реестр
|
||||
|
||||
FROM alpine:3.18
|
||||
|
||||
CMD ["sh", "-c", "echo Hello from pearlharbor sample image"]
|
||||
28
push-sample/README.md
Normal file
28
push-sample/README.md
Normal file
@ -0,0 +1,28 @@
|
||||
# Пример для пуша в PearlHarbor
|
||||
|
||||
Файлы:
|
||||
- [examples/push-sample/Dockerfile](examples/push-sample/Dockerfile) — минимальный образ
|
||||
- [examples/push-sample/build_and_push.sh](examples/push-sample/build_and_push.sh) — сборка и опциональный пуш
|
||||
|
||||
Как использовать:
|
||||
|
||||
1. Сборка локально (в корне репы):
|
||||
|
||||
```bash
|
||||
docker build -t sless-sample:local -f examples/push-sample/Dockerfile examples/push-sample
|
||||
```
|
||||
|
||||
2. Протестировать скрипт (скрипт не будет пушить без переменной DO_PUSH):
|
||||
|
||||
```bash
|
||||
cd examples/push-sample
|
||||
./build_and_push.sh
|
||||
```
|
||||
|
||||
3. Для реального пуша установите `DO_PUSH=true`. Скрипт прочитает `secrets/pearlharbor_registry.txt`.
|
||||
|
||||
```bash
|
||||
DO_PUSH=true ./build_and_push.sh
|
||||
```
|
||||
|
||||
Примечание: скрипт использует по умолчанию пользователя `admin`. Для другого пользователя задайте `REGISTRY_USER`.
|
||||
53
push-sample/build_and_push.sh
Executable file
53
push-sample/build_and_push.sh
Executable file
@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env bash
|
||||
# 2026-03-11 10:02
|
||||
# Скрипт: собирает минимальный образ и, при разрешении, пушит в реестр PearlHarbor
|
||||
# Требования: `docker` в PATH. Скрипт НЕ будет пушить без DO_PUSH=true.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Получаем значения из файла секретов
|
||||
SECRETS_FILE="secrets/pearlharbor_registry.txt"
|
||||
if [ ! -f "$SECRETS_FILE" ]; then
|
||||
echo "Файл с секретами не найден: $SECRETS_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
connection_url=$(grep -E '^connection_url=' "$SECRETS_FILE" | cut -d'=' -f2-)
|
||||
admin_pass=$(grep -E '^admin_pass=' "$SECRETS_FILE" | cut -d'=' -f2-)
|
||||
|
||||
if [ -z "$connection_url" ]; then
|
||||
echo "Не найден connection_url в $SECRETS_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Убираем протокол и возможный слеш на конце
|
||||
registry_host=$(echo "$connection_url" | sed -E 's~https?://~~' | sed -E 's~/$~~')
|
||||
|
||||
image_name="$registry_host/sless-sample:latest"
|
||||
|
||||
echo "Registry host: $registry_host"
|
||||
echo "Image name: $image_name"
|
||||
|
||||
echo "Собираю образ локально..."
|
||||
docker build -t sless-sample:local -f Dockerfile .. || {
|
||||
echo "Сборка не удалась"; exit 1
|
||||
}
|
||||
|
||||
echo "Готово. Образ: sless-sample:local"
|
||||
|
||||
if [ "${DO_PUSH:-}" != "true" ]; then
|
||||
echo "DO_PUSH != true — пуш не будет выполнен. Чтобы запушить: DO_PUSH=true ./build_and_push.sh"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Если дошли до сюда — выполняем login/push
|
||||
registry_user=${REGISTRY_USER:-admin}
|
||||
|
||||
echo "Выполняю docker login к $registry_host как '$registry_user'"
|
||||
echo "$admin_pass" | docker login "$registry_host" -u "$registry_user" --password-stdin
|
||||
|
||||
echo "Тегирую и пушу образ: $image_name"
|
||||
docker tag sless-sample:local "$image_name"
|
||||
docker push "$image_name"
|
||||
|
||||
echo "Пуш завершён. Проверьте реестр для образа: $image_name"
|
||||
@ -19,12 +19,13 @@ terraform {
|
||||
required_providers {
|
||||
sless = {
|
||||
source = "terra.k8c.ru/naeel/sless"
|
||||
version = "~> 0.1.11"
|
||||
version = "~> 0.1.13"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "sless" {
|
||||
endpoint = "https://sless-api.kube5s.ru"
|
||||
token = "dev-token-change-me"
|
||||
endpoint = "https://sless-api.kube5s.ru"
|
||||
token = var.token
|
||||
nubes_endpoint = "https://deck-api.ngcloud.ru/api/v1"
|
||||
}
|
||||
|
||||
10
simple-node/variables.tf
Normal file
10
simple-node/variables.tf
Normal file
@ -0,0 +1,10 @@
|
||||
# 2026-03-11
|
||||
# variables.tf — входные переменные для simple-node примера.
|
||||
|
||||
# JWT токен облака (nubes). Передаётся через terraform.tfvars (gitignored).
|
||||
# Из токена провайдер вычисляет namespace: sless-{sha256[:8]}
|
||||
variable "token" {
|
||||
description = "JWT токен облака для аутентификации в sless API"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
@ -18,12 +18,13 @@ terraform {
|
||||
required_providers {
|
||||
sless = {
|
||||
source = "terra.k8c.ru/naeel/sless"
|
||||
version = "~> 0.1.11"
|
||||
version = "~> 0.1.13"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "sless" {
|
||||
endpoint = "https://sless-api.kube5s.ru"
|
||||
token = "dev-token-change-me"
|
||||
endpoint = "https://sless-api.kube5s.ru"
|
||||
token = var.token
|
||||
nubes_endpoint = "https://deck-api.ngcloud.ru/api/v1"
|
||||
}
|
||||
|
||||
10
simple-python/variables.tf
Normal file
10
simple-python/variables.tf
Normal file
@ -0,0 +1,10 @@
|
||||
# 2026-03-11
|
||||
# variables.tf — входные переменные для simple-python примера.
|
||||
|
||||
# JWT токен облака (nubes). Передаётся через terraform.tfvars (gitignored).
|
||||
# Из токена провайдер вычисляет namespace: sless-{sha256[:8]}
|
||||
variable "token" {
|
||||
description = "JWT токен облака для аутентификации в sless API"
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user