Skip to content
gretmn102 edited this page Dec 30, 2023 · 3 revisions

Deploy

Эта инструкция предполагает, что:

  • запуск происходит на системе Ubuntu (на других просто-напросто не проверялось)
  • проект компилируется GitHub'ом через Actions и оставляет за собой единственный артефакт, неважно с каким именем

Структура проекта:

$proj_path
├── deploy
│   ├── файлы проекта
│   ├── .env # скопированный .env
│   └── ...
└── .env

Лог программы пишется в $proj_path/deploy/nohup.out.

Начальная установка и запуск

  • Удаленно подключиться к хостингу через ssh

  • Установить пакеты jq и libarchive:

    sudo apt install jq
    sudo apt install libarchive-tools
  • заполнить и установить переменные окружения для текущей сессии:

    proj_path=agent-discord-bot # путь к папке проекта
    proj_app=agent-discord-bot # имя исполняемого файла проекта
    github_proj_name=agent-discord-bot # название проекта на GitHub'е `https://api.github.com/repos/gretmn102/$github_proj_name/actions/artifacts`
    github_workflow_token=$TODO # токен GitHub'а с правами чтения артефактов
  • создать папку проекта

    mkdir $proj_path
    cd $proj_path
  • Создать папку deploy:

    mkdir deploy
    cd deploy
  • скачать артефакт и распаковать:

    curl \
      -H "Accept: application/vnd.github+json" \
      -H "X-GitHub-Api-Version: 2022-11-28" \
      https://api.github.com/repos/gretmn102/$github_proj_name/actions/artifacts | \
    jq -r '.artifacts[0].archive_download_url' | \
    curl \
      -H "Accept: application/vnd.github+json" \
      -H "Authorization: token $github_workflow_token" \
      -H "X-GitHub-Api-Version: 2022-11-28" \
      -L \
      --url "$(</dev/stdin)" |\
    bsdtar -xf-
  • разрешить запуска исполняемого файла для текущего пользователя:

    chmod u+x $proj_app
  • cd ..

  • создать и заполнить .env:

    AHTUNG: заполни BotToken и DbConnection!

    cat > .env << EOF
    BotToken=todo
    
    AblyToken=todo
    
    DataBaseName=todo
    
    DbConnection=todo
    EOF
  • скопировать .env в папку deploy:

    cp .env deploy/.env
  • перейти в deploy и запустить программу:

    cd deploy
    nohup ./$proj_app &

Обновление

# прибить процесс программы:
ps ax | grep $proj_app | grep -v grep | awk '{ print $1 }' | xargs -n1 kill

cd ~/$proj_path/deploy

rm -r -f * .*

# скачать артефакт
curl \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  https://api.github.com/repos/gretmn102/$github_proj_name/actions/artifacts | \
jq -r '.artifacts[0].archive_download_url' | \
curl \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: token $github_workflow_token" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  -L \
  --url "$(</dev/stdin)" |\
bsdtar -xf-

chmod u+x $proj_app

cp ../.env .env

nohup ./$proj_app &
Clone this wiki locally