Stage #1

Merged
yusupal1ev merged 4 commits from stage into master 2026-06-19 08:32:00 +03:00
3 changed files with 70 additions and 28 deletions
Showing only changes of commit 5f85006e1d - Show all commits
+47 -7
View File
@@ -4,6 +4,7 @@ on:
push: push:
branches: branches:
- master - master
- stage
jobs: jobs:
deploy: deploy:
@@ -13,6 +14,33 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Resolve environment
run: |
set -euo pipefail
if [[ "${{ gitea.ref_name }}" == "stage" ]]; then
{
echo "ENV_NAME=stage"
echo "IMAGE_TAG=stage"
echo "CONTAINER_SUFFIX=-stage"
echo "APP_PORT=8004"
echo "POSTGRES_PORT=5433"
echo "REDIS_PORT=6380"
echo "COMPOSE_PROJECT=g2s-aggregator-stage"
echo "DEPLOY_DIR=/home/deploy/g2s-aggregator-stage"
} >> "$GITHUB_ENV"
else
{
echo "ENV_NAME=prod"
echo "IMAGE_TAG=0.1.0"
echo "CONTAINER_SUFFIX="
echo "APP_PORT=8003"
echo "POSTGRES_PORT=5432"
echo "REDIS_PORT=6379"
echo "COMPOSE_PROJECT=g2s-aggregator"
echo "DEPLOY_DIR=/home/deploy/g2s-aggregator"
} >> "$GITHUB_ENV"
fi
- name: Build and push image - name: Build and push image
run: | run: |
docker login gitea.p4r4dls.ru \ docker login gitea.p4r4dls.ru \
@@ -22,7 +50,7 @@ jobs:
docker buildx build \ docker buildx build \
--platform linux/amd64 \ --platform linux/amd64 \
--push \ --push \
-t gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:0.1.0 \ -t gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:${IMAGE_TAG} \
. .
- name: Setup SSH - name: Setup SSH
@@ -47,11 +75,23 @@ jobs:
export "$key=$value" export "$key=$value"
done < <(echo "$ALL_SECRETS" | jq -j 'to_entries[] | "\(.key)=\(.value)\u0000"') done < <(echo "$ALL_SECRETS" | jq -j 'to_entries[] | "\(.key)=\(.value)\u0000"')
# Для stage подменяем базовые имена секретов на STAGE_-версии:
# STAGE_FOO -> FOO
if [[ "$ENV_NAME" == "stage" ]]; then
while IFS= read -r -d '' entry; do
key="${entry%%=*}"
value="${entry#*=}"
if [[ "$key" == STAGE_* ]]; then
export "${key#STAGE_}=$value"
fi
done < <(echo "$ALL_SECRETS" | jq -j 'to_entries[] | "\(.key)=\(.value)\u0000"')
fi
render() { render() {
local src=$1 dst=$2 local src=$1 dst=$2
vars=$(grep -oP '\$\{\K[^}]+' "$src") vars=$(grep -oP '\$\{\K[^}]+' "$src")
for var in $vars; do for var in $vars; do
if [[ -z "${!var:-}" ]]; then if [[ -z "${!var+x}" ]]; then
echo "Error: $var не задан в Gitea Secrets" >&2 echo "Error: $var не задан в Gitea Secrets" >&2
exit 1 exit 1
fi fi
@@ -63,17 +103,17 @@ jobs:
render docker-compose.template.yml docker-compose.rendered.yml render docker-compose.template.yml docker-compose.rendered.yml
scp -i ~/.ssh/deploy_key config.rendered.yaml \ scp -i ~/.ssh/deploy_key config.rendered.yaml \
deploy@194.58.121.203:/home/deploy/g2s-aggregator/config.yaml deploy@194.58.121.203:$DEPLOY_DIR/config.yaml
scp -i ~/.ssh/deploy_key docker-compose.rendered.yml \ scp -i ~/.ssh/deploy_key docker-compose.rendered.yml \
deploy@194.58.121.203:/home/deploy/g2s-aggregator/docker-compose.yml deploy@194.58.121.203:$DEPLOY_DIR/docker-compose.yml
- name: Deploy - name: Deploy
run: | run: |
ssh -i ~/.ssh/deploy_key deploy@194.58.121.203 " ssh -i ~/.ssh/deploy_key deploy@194.58.121.203 "
cd /home/deploy/g2s-aggregator && cd $DEPLOY_DIR &&
docker login gitea.p4r4dls.ru \ docker login gitea.p4r4dls.ru \
-u ${{ secrets.REGISTRY_USER }} \ -u ${{ secrets.REGISTRY_USER }} \
-p ${{ secrets.REGISTRY_TOKEN }} && -p ${{ secrets.REGISTRY_TOKEN }} &&
docker compose pull && docker compose -p $COMPOSE_PROJECT pull &&
docker compose up -d docker compose -p $COMPOSE_PROJECT up -d
" "
+2 -2
View File
@@ -35,8 +35,8 @@ adapter:
tbank_payment: tbank_payment:
init_url: "https://securepay.tinkoff.ru/v2/Init" init_url: "https://securepay.tinkoff.ru/v2/Init"
notification_url: "https://aggregator.get2send.com/api/v1/delivery/tbank/notifications" notification_url: "${TBANK_NOTIFICATION_URL}"
success_url: "https://aggregator.get2send.com/checkout/success" success_url: "${TBANK_SUCCESS_URL}"
auth: auth:
terminal_key: "${TBANK_TERMINAL_KEY}" terminal_key: "${TBANK_TERMINAL_KEY}"
password: "${TBANK_PASSWORD}" password: "${TBANK_PASSWORD}"
+20 -18
View File
@@ -1,9 +1,9 @@
services: services:
app: app:
image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:0.1.0 image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:${IMAGE_TAG}
container_name: g2s-aggregator container_name: g2s-aggregator${CONTAINER_SUFFIX}
ports: ports:
- "8003:8000" - "${APP_PORT}:8000"
depends_on: depends_on:
redis: redis:
condition: service_started condition: service_started
@@ -17,23 +17,23 @@ services:
logging: logging:
driver: "json-file" driver: "json-file"
options: options:
tag: "g2s-aggregator" tag: "g2s-aggregator${CONTAINER_SUFFIX}"
redis: redis:
image: redis:7-alpine image: redis:7-alpine
container_name: redis container_name: redis${CONTAINER_SUFFIX}
command: ["redis-server", "--save", "", "--appendonly", "no"] command: ["redis-server", "--save", "", "--appendonly", "no"]
ports: ports:
- "6379:6379" - "${REDIS_PORT}:6379"
restart: unless-stopped restart: unless-stopped
postgres: postgres:
image: postgres:16-alpine image: postgres:16-alpine
container_name: postgres container_name: postgres${CONTAINER_SUFFIX}
environment: environment:
POSTGRES_DB: g2s_aggregator POSTGRES_DB: g2s_aggregator
POSTGRES_USER: ${POSTGRES_USER} POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
ports: ports:
- "5432:5432" - "${POSTGRES_PORT}:5432"
volumes: volumes:
- postgres:/var/lib/postgresql/data - postgres:/var/lib/postgresql/data
healthcheck: healthcheck:
@@ -42,8 +42,8 @@ services:
timeout: 3s timeout: 3s
retries: 10 retries: 10
migrations: migrations:
image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:0.1.0 image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:${IMAGE_TAG}
container_name: g2s-aggregator-migrations container_name: g2s-aggregator-migrations${CONTAINER_SUFFIX}
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy
@@ -54,10 +54,10 @@ services:
logging: logging:
driver: "json-file" driver: "json-file"
options: options:
tag: "g2s-aggregator-migrations" tag: "g2s-aggregator-migrations${CONTAINER_SUFFIX}"
waybill-poller: waybill-poller:
image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:0.1.0 image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:${IMAGE_TAG}
container_name: g2s-aggregator-waybill-poller container_name: g2s-aggregator-waybill-poller${CONTAINER_SUFFIX}
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy
@@ -70,10 +70,10 @@ services:
logging: logging:
driver: "json-file" driver: "json-file"
options: options:
tag: "g2s-aggregator-waybill-poller" tag: "g2s-aggregator-waybill-poller${CONTAINER_SUFFIX}"
waybill-email-sender: waybill-email-sender:
image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:0.1.0 image: gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:${IMAGE_TAG}
container_name: g2s-aggregator-waybill-email-sender container_name: g2s-aggregator-waybill-email-sender${CONTAINER_SUFFIX}
depends_on: depends_on:
postgres: postgres:
condition: service_healthy condition: service_healthy
@@ -87,11 +87,13 @@ services:
logging: logging:
driver: "json-file" driver: "json-file"
options: options:
tag: "g2s-aggregator-waybill-email-sender" tag: "g2s-aggregator-waybill-email-sender${CONTAINER_SUFFIX}"
otel-collector: otel-collector:
image: otel/opentelemetry-collector-contrib:latest image: otel/opentelemetry-collector-contrib:latest
container_name: otel-collector container_name: otel-collector${CONTAINER_SUFFIX}
user: "0" user: "0"
environment:
ENV_NAME: ${ENV_NAME}
volumes: volumes:
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
- /var/lib/docker/containers:/var/lib/docker/containers:ro - /var/lib/docker/containers:/var/lib/docker/containers:ro