@@ -4,6 +4,7 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stage
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
@@ -13,6 +14,33 @@ jobs:
|
||||
- name: Checkout
|
||||
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
|
||||
run: |
|
||||
docker login gitea.p4r4dls.ru \
|
||||
@@ -22,7 +50,7 @@ jobs:
|
||||
docker buildx build \
|
||||
--platform linux/amd64 \
|
||||
--push \
|
||||
-t gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:0.1.0 \
|
||||
-t gitea.p4r4dls.ru/yusupal1ev/g2s-aggregator:${IMAGE_TAG} \
|
||||
.
|
||||
|
||||
- name: Setup SSH
|
||||
@@ -46,12 +74,24 @@ jobs:
|
||||
value="${entry#*=}"
|
||||
export "$key=$value"
|
||||
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() {
|
||||
local src=$1 dst=$2
|
||||
vars=$(grep -oP '\$\{\K[^}]+' "$src")
|
||||
for var in $vars; do
|
||||
if [[ -z "${!var:-}" ]]; then
|
||||
if [[ -z "${!var+x}" ]]; then
|
||||
echo "Error: $var не задан в Gitea Secrets" >&2
|
||||
exit 1
|
||||
fi
|
||||
@@ -63,17 +103,17 @@ jobs:
|
||||
render docker-compose.template.yml docker-compose.rendered.yml
|
||||
|
||||
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 \
|
||||
deploy@194.58.121.203:/home/deploy/g2s-aggregator/docker-compose.yml
|
||||
deploy@194.58.121.203:$DEPLOY_DIR/docker-compose.yml
|
||||
|
||||
- name: Deploy
|
||||
run: |
|
||||
ssh -i ~/.ssh/deploy_key deploy@194.58.121.203 "
|
||||
cd /home/deploy/g2s-aggregator &&
|
||||
cd $DEPLOY_DIR &&
|
||||
docker login gitea.p4r4dls.ru \
|
||||
-u ${{ secrets.REGISTRY_USER }} \
|
||||
-p ${{ secrets.REGISTRY_TOKEN }} &&
|
||||
docker compose pull &&
|
||||
docker compose up -d
|
||||
docker compose -p $COMPOSE_PROJECT pull &&
|
||||
docker compose -p $COMPOSE_PROJECT up -d
|
||||
"
|
||||
|
||||
Reference in New Issue
Block a user