Files
photo-editor/.gitea/workflows/deploy.yml

65 lines
2.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: deploy-portainer
# Ручной запуск: вкладка Actions → Run workflow.
# Создаёт или обновляет стек photo-editor на Portainer
# (https://ptr.byte-mate.ru) из deploy/docker-compose.yml.
on:
workflow_dispatch:
concurrency:
group: deploy
cancel-in-progress: true
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Deploy stack to Portainer
env:
PORTAINER_URL: https://ptr.byte-mate.ru
PORTAINER_API_KEY: ${{ secrets.PORTAINER_API_KEY }}
STACK_NAME: photo-editor
# Если не задано — берётся первый endpoint из /api/endpoints
ENDPOINT_ID: ${{ vars.PORTAINER_ENDPOINT_ID }}
run: |
set -euo pipefail
if [ -z "${PORTAINER_API_KEY:-}" ]; then
echo "::error::Секрет PORTAINER_API_KEY не задан"
echo "::error::Создайте API-ключ в Portainer (Account → API keys) и добавьте его в секреты репозитория."
exit 1
fi
AUTH="X-API-Key: ${PORTAINER_API_KEY}"
# Определяем endpoint (окружение Docker), если не задан вручную
if [ -z "${ENDPOINT_ID:-}" ]; then
ENDPOINT_ID=$(curl -fsSk -H "$AUTH" "$PORTAINER_URL/api/endpoints" | jq -r '.[0].Id')
echo "Endpoint id автоопределён: ${ENDPOINT_ID}"
fi
echo "Endpoint id: ${ENDPOINT_ID}"
# Ищем существующий стек
STACK_ID=$(curl -fsSk -H "$AUTH" \
"$PORTAINER_URL/api/stacks?filters=%7B%22EndpointId%22%3A${ENDPOINT_ID}%7D" \
| jq -r ".[] | select(.Name==\"${STACK_NAME}\") | .Id" | head -1 || true)
if [ -n "${STACK_ID}" ]; then
echo "Обновляю стек ${STACK_NAME} (id=${STACK_ID})"
curl -fsSk -X PUT -H "$AUTH" \
-F "StackFileContent=@deploy/docker-compose.yml" \
"$PORTAINER_URL/api/stacks/${STACK_ID}?endpointId=${ENDPOINT_ID}" >/dev/null
else
echo "Создаю стек ${STACK_NAME}"
curl -fsSk -X POST -H "$AUTH" \
-F "Name=${STACK_NAME}" \
-F "EndpointId=${ENDPOINT_ID}" \
-F "StackFileContent=@deploy/docker-compose.yml" \
"$PORTAINER_URL/api/stacks/create/standalone" >/dev/null
fi
echo "✅ Стек ${STACK_NAME} развёрнут на ${PORTAINER_URL}"