-
Notifications
You must be signed in to change notification settings - Fork 0
deploy
gretmn102 edited this page Dec 30, 2023
·
3 revisions
Эта инструкция предполагает, что:
- запуск происходит на системе 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 &