Skip to content

Commit

Permalink
Dev (#8)
Browse files Browse the repository at this point in the history
* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* Write README

* Write README

* fix mkdir

* fix path

* fix deploy.yml

* fix deploy.yml

* fix deploy.yml

* fix deploy.yml

* fix Make

* fix Make

* fix Make

* fix Make

* fix Make

* fix Make

* fix Make

* Избавился от sudo для make

* Коммит для теста

* Добавил установку докера

* Дописал make

* Дописал readme

* Fix docker

* Fix docker

* Finally all
  • Loading branch information
SergTyapkin authored Jan 30, 2024
1 parent 40846e0 commit 0eb8572
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 19 deletions.
5 changes: 4 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ on:
pull_request:
branches: [ "*" ]

env:
API_PORT: 0
DOMAIN_URL: example.com

jobs:
build:
runs-on: ubuntu-latest
environment: build
steps:
- uses: actions/checkout@v3

Expand Down
56 changes: 41 additions & 15 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
#TAG ?= $(shell git symbolic-ref -q --short HEAD || git describe --tags --exact-match)
-include ./docker-deploy/.env

build:
cd docker-deploy && \
docker compose build --no-cache --progress=plain nginx
run:
cd docker-deploy && \
docker compose down && \
docker compose up -d nginx
down:
cd docker-deploy && \
docker compose down

generate-certs:
cd docker-deploy && \
docker compose down && \
Expand All @@ -21,19 +32,6 @@ set-auto-renewing-certs:
read ENTER
crontab -e

run:
cd docker-deploy && \
docker compose down && \
docker compose up -d nginx

down:
cd docker-deploy && \
docker compose down

build:
cd docker-deploy && \
docker compose build --no-cache --progress=plain nginx

update:
git fetch --all
git reset --hard origin/master
Expand Down Expand Up @@ -67,28 +65,56 @@ setup-ci:
sudo mkdir -p ~/.ssh
sudo cat /tmp/tmp_key.pub >> ~/.ssh/authorized_keys
echo '' && \
echo 'Add this private rsa key secret deploy variables to SSH_DEPLOY_KEY on your github repo: ' && \
echo 'Add this private rsa key secret deploy environment variables to SSH_DEPLOY_KEY on your github repo: ' && \
echo '[To see key press Enter...]' && \
read ENTER
sudo less /tmp/tmp_key

install-docker-if-not-exists: # fully copied from https://docs.docker.com/engine/install/ubuntu/
if ! command -v docker; then \
sudo apt-get update; \
sudo apt-get install -y --no-install-recommended ca-certificates curl; \
sudo install -m 0755 -d /etc/apt/keyrings; \
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc; \
sudo chmod a+r /etc/apt/keyrings/docker.asc; \
# Add the repository to Apt sources: \
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$${VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null; \
sudo apt-get update; \
sudo apt-get install -y --no-install-recommended docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; \
make set-docker-not-sudo; \
else \
echo "Docker already installed!"; \
fi

set-docker-not-sudo:
# add user to docker group
getent group docker || sudo groupadd docker # Add group if not exists
sudo usermod -aG docker ${USER}
newgrp docker
sudo systemctl restart docker

all:
setup-env-file:
cp --no-clobber ./docker-deploy/.env.example ./docker-deploy/.env
echo '' && \
echo 'Edit .env file. Write right DOMAIN_URL!' && \
echo '[press Enter...]' && \
read ENTER
nano ./docker-deploy/.env

all:
make install-docker-if-not-exists
make setup-env-file
make generate-certs
make set-auto-renewing-certs
make down
make setup-ci
sudo chmod ug+rwx -R /home/legend/vue-frontend-template/docker-deploy/certbot/
make update
echo 'Now read README.md and setup another deploy environments variables.' && \
echo 'It seems like values must be:' && \
echo 'SERVER_USERNAME=$$(whoami) \# ! MUST BE SECRET VARIABLE !' && \
echo 'DEPLOY_HOST=$$(cat ./docker-deploy/.env | grep DOMAIN_URL | sed "s/.*=//") \# NOT SECURE' && \
echo 'PROJECT_PATH=$$(pwd) \# NOT SECURE'
21 changes: 18 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
![GithubCI](https://github.com/sergtyapkin/vue-frontend-template/actions/workflows/deploy.yml/badge.svg)

# Фронентд с авто-деплоем на _Nginx_ и получением сертификатов _Letsencript_
# Веб-вервис в докере с авто-деплоем на _Nginx_ и получением сертификатов _Letsencript_

Всё делается через команды `make`

### 1. Клонируем:
### 1. Клонируем репозиторий:
```SHELL
git clone [email protected]:SergTyapkin/vue-frontend-template.git
```
Expand All @@ -16,5 +16,20 @@ cd vue-frontend-template
make all
````

Всё. Наслаждаемся тем, что за нас всё сделали, сайт раздаётся, сертификаты обновляются.
Всё. Наслаждаемся тем, что за нас всё сделали, установили докер, сайт раздаётся, сертификаты обновляются.
Теперь `Github CI` сам будет проверять, собирается ли контейнер при **Pull Request**'ах, а при **Push**'ах в ветку `master` будет автоматически выполняться `make update` на сервере и обновлять деплой!

## Полный список действий скриптов
1. Устанавливает `docker`, если его ещё нет
2. Добавляет текущего пользователя в группу `Docker`, чтобы запускать его без `sudo`
3. Предлагает настроить `.env` файл
4. Получает сертификаты Letsencrypt
5. Устанавливает и настраивает `cron` на ежемесячное обновление сертификатов
6. Создаёт пару SSH ключей, публичный добавляет в `~/.ssh/authorized_keys`, приватный выводит в консоль, его нужно добавить как секретную переменную среды `SSH_DEPLOY_KEY` в настройках Github.
7. Собирает приложение из последнего коммита в ветку `master`, запускает финальный docker-контейнер с ним

### 3. Установка переменных
1. Заходим в `Settings` -> `Environments`, создаём новое окружение под названием `deploy` (важно).
![](/README_res/1.png)
2. Создаём внутри окружения все необходимые переменные. Их выведет `make all` после завершения выполнения, или можно прописать самому.
![](/README_res/2.png)

0 comments on commit 0eb8572

Please sign in to comment.