/
Predator
/
starter-workflows
Обзор
Документация
Войти
/
Predator
/
starter-workflows
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
deployment/vm-ssh.yaml
79 строк
3 KB
Alexey Ponikarov
Добавлены шаблоны для создания workflow GitVerse CI/CD из UI
03 дек 2025, 21:51
03 дек 2025, 21:51
2ee3986
Код
Авторство
О чём код?
name: Deploy to a VM over SSH # ВАЖНО: # Этот workflow выполняет ТОЛЬКО деплой. # Ожидается, что: # # 1. Docker-образ уже собран и опубликован в реестре: # - Регистр: gitverse.ru # - Образ: gitverse.ru/actions/gitverse_hello:kaniko_cli # - Можно собрать через: .gitverse/workflows/docker/cloud-hosted-runner/push-registries.yaml # # 2. Виртуальная машина (VM) поднята и доступна: # - Платформа: например, cloud.ru (или любой другой провайдер) # - На VM должен быть установлен Docker # - Открыт SSH-порт (обычно 22) и HTTP-порт (80) # - Указаны корректные secrets: VM_PUBLIC_IP, VM_USERNAME, VM_PASSWORD, VM_PORT # # Если одно из условий не выполнено — деплой завершится ошибкой. on: workflow_dispatch: env: GITVERSE_RU_REGISTRY: gitverse.ru jobs: # Деплой Docker-образа на удалённый сервер через SSH deploy-cloud-ru: name: Деплой на cloud.ru runs-on: ubuntu-latest steps: - name: Клонировать репозиторий uses: actions/checkout@v4 - name: Выполнить деплой на удалённом сервере uses: appleboy/ssh-action@v1 with: host: ${{ secrets.VM_PUBLIC_IP }} username: ${{ secrets.VM_USERNAME }} password: ${{ secrets.VM_PASSWORD }} port: ${{ secrets.VM_PORT }} script: | echo "📥 Загрузка образа..." docker pull ${{ env.GITVERSE_RU_REGISTRY }}/actions/gitverse_hello:kaniko_cli echo "🚀 Запуск контейнера..." docker run --rm -d -p 80:80 ${{ env.GITVERSE_RU_REGISTRY }}/actions/gitverse_hello:kaniko_cli - name: Проверить доступность веб-сервера run: | echo "🔍 Проверка работы сервиса..." curl -f http://${{ secrets.VM_PUBLIC_IP }} || exit 1 - name: Остановить и очистить контейнер uses: appleboy/ssh-action@v1 with: host: ${{ secrets.VM_PUBLIC_IP }} username: ${{ secrets.VM_USERNAME }} password: ${{ secrets.VM_PASSWORD }} port: ${{ secrets.VM_PORT }} script: | echo "🛑 Остановка запущенного контейнера..." container_id=$(docker ps -q --filter "ancestor=${{ env.GITVERSE_RU_REGISTRY }}/actions/gitverse_hello:kaniko_cli" 2>/dev/null) || true if [ -n "$container_id" ]; then echo "🗑️ Останавливаем контейнер: $container_id" docker kill $container_id else echo "✅ Контейнер не найден или уже остановлен." fi echo "🧹 Удаление Docker-образа..." image_id=$(docker images -q ${{ env.GITVERSE_RU_REGISTRY }}/actions/gitverse_hello:kaniko_cli 2>/dev/null) || true if [ -n "$image_id" ]; then echo "🗑️ Удаляем образ: $image_id" docker rmi -f $image_id else echo "✅ Образ не найден или уже удалён." fi