@@ -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
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user