ืืืืืจ ืื ืืฉืชืฃ ืืช ืืืืืื ืฉืื ืืืืืจืช CI/CD ืืืืฆืขืืช ืืื ืืืงืจื ืฉื Plesk ืืคืขืืืืช Github. ืืืื ื ืืื ืืื ืืคืจืืก ืคืจืืืงื ืคืฉืื ืขื ืืฉื ืืื ืืกืืื "Helloworld". ืืื ืืชืื ืืืกืืจืช Flask Python, ืขื ืขืืืื ืกืืจื ืืืืืช Angular 8.
ืงืืฉืืจืื ืืืืืจืื:
ืืืืง ืืจืืฉืื ืฉื ืืืืืจ, ื ืืื ืืช ืืคืจืืืงื ืฉืื ื ืืืืงืื. ืืฉื ืืื, ื ืืื ืืืฆื ืืืืืืจ ืืช Plesk ืืืืชืงืื ืืช ืืืจืืืืช ืืืจืืืืื ืืืจืืฉืื (DB, RabbitMQ, Redis, Docker ืืื').
ืืืืง ืืฉืืืฉื, ืกืืฃ ืกืืฃ ื ืืื ืืืฆื ืืืืืืจ ืฆืื ืืจ ืืคืจืืกืช ืืคืจืืืงื ืฉืื ื ืืฉืจืช ืืกืืืืช ืคืืชืื ืืคืจืื. ืืื ื ืฉืืง ืืช ืืืชืจ ืืฉืจืช.
ืืื, ืฉืืืชื ืืืฆืื ืืช ืขืฆืื. ืฉืื ืืืื ืืืจืืื, ืื ื ืืคืชื fullstack ืืฆืืืช CRM ืืื ืืื ืืฉืื ืชืืืช ื-Domclick.
ืกืงืืจืช ืคืจืืืืงื
ืจืืฉืืช, ืืืื ื ืกืชืื ืขื ืฉื ื ืืืืจื ืคืจืืืงืืื - ืืืืจื ืืงืืื - ืื ืขืืืจ ืขื ืืงืื.
ืืืืจื: ืืงืืืง+ืกืืจื
ืืืืง ืืืืืจื, ืืงืืชื ืืืืจื ืฉืืื ืื ืคืืคืืืจืืช ืืงืจื ืืคืชืื Python: ืืืกืืจืช ืฉื Flask (ืขืืืจ ื-API) ืืกืืจื (ืขืืืจ ืชืืจ ืืืฉืืืืช). SQLAchemy ืืฉืืฉ ื-ORM. Alembic ืืฉืืฉ ืืืืืจืืช. ืืืืืืช JSON ืืืืืืช - ืืจืฉืืื.
ะ
/ping
- ืืืืืงืช ืืืื ืืช;- ืืืคืืื ืืจืืฉืื, ืืจืฉืื, ืืืืื ืืจืฉืื ืืงืืืช ืืฉืชืืฉ ืืืจืฉื;
- ืืืืช ืืืืจ ืืืงืืจืื ื ืฉืืื ืืกื ืืฉืืื ืืชืืจ ืกืืจื.
send_mail_task
.
ืืชืืงืืื
docker
ืขื ืฉื ื Dockerfiles (base.dockerfile
ืืื ืืช ืชืืื ืช ืืกืืก ืฉืืฉืชื ื ืืขืชืื ืจืืืงืืช ืDockerfile
ืขืืืจ ืืืืืืื ืขืืงืจืืื);.env_files
- ืขื ืงืืฆืื ืขื ืืฉืชื ื ืกืืืื ืขืืืจ ืกืืืืืช ืฉืื ืืช.
ืืฉื ื ืืจืืขื ืงืืฆื docker-compose ืืืกืืก ืืคืจืืืงื:
docker-compose.local.db.yml
ืืืขืืืช ืืืืจ ืืืืข ืืงืืื ืืคืืชืื;docker-compose.local.workers.yml
ืืืขืืื ืืงืืืืช ืฉื ืืขืืื, ืืกื ืื ืชืื ืื, Redis ื-RabbitMQ;docker-compose.test.yml
ืืืคืขืื ืืืืงืืช ืืืืื ืืคืจืืกื;docker-compose.yml
ืืคืจืืกื.
ืืืชืืงืื ืืืืจืื ื ืฉืื ืื ื ืืขืื ืืื ืื ืื -
deploy.sh
- ืืฉืงืช ืืืืจื ืืคืจืืกื. ืคืืขื ืขื ืืฉืจืช ืืืืจ ืื ืืื ืืืจืฆืช ืืืืงืืช ื-Github Actions;rollback.sh
- ืืืจื ืฉื ืืืืืืช ืืืจืกื ืืงืืืืช ืฉื ืืืจืืื;curl_tg.sh
- ืฉืืืืช ืืืืขืืช ืคืจืืกื ืืืืืจื.
ืืืืช ื-Angular
- ืขืืื ืจืืฉื ืขื ืืืคืก ืฉืืืืช ืืืื ืืืคืชืืจ ืืฆืืื.
- ืขืืื ืืชืืืจืืช.
- ืืฃ ืืจืฉืื.
ืืขืืื ืืจืืฉื ื ืจืื ืกืืคื ื:
ืืฉ ืฉื ื ืงืืฆืื ืืฉืืจืฉ Dockerfile
ะธ docker-compose.yml
, ืืื ืื ืืชืืงืื ืืืืืจืช .ci-cd
ืขื ืืขื ืคืืืช ืกืงืจืืคืืื ืืืฉืจ ืืืืืจ ืืืืืจื (ืกืงืจืืคืืื ืฉืืืกืจื ืืืคืขืืช ืืืืงืืช).
ืืชืืืช ืคืจืืืงื ืืคืืกืง
ื ืชืืื ืืืืืจืช Plesk ืืืฆืืจืช ืื ืื ืืืชืจ ืฉืื ื.
ืืชืงื ืช ืืจืืืืช
ื-Plesk, ืื ืื ื ืฆืจืืืื ืืจืืข ืืจืืืืช:
Docker
ืื ืื ืืืืฆืื ืืืืคื ืืืืชื ืืช ืืฆื ืืืืืืืช ืืคืื ื ืื ืืืื ืฉื Plesk;Git
ืืื ืืืืืืจ ืืช ืฉืื ืืคืจืืกื ืืฉืจืช;Let's Encrypt
ืืืฆืืจ (ืืืืืืฉ ืืืืืืื) ืฉื ืชืขืืืืช TLS ืืืื ื;Firewall
ืืื ืืืืืืจ ืกืื ืื ืฉื ืชืขืืืจื ื ืื ืกืช.
ืืชื ืืืื ืืืชืงืื ืืืชื ืืจื ืคืื ื ืื ืืืื ืฉื Plesk ืืกืขืืฃ ืืจืืืืช:
ืื ื ืฉืงืื ืืช ืืืืืจืืช ืืืคืืจืืืช ืขืืืจ ืืจืืืืช, ืืืืจืืช ืืจืืจืช ืืืืื ืืขืฉื ืืืืจืืช ืืืืืื ืฉืื ื.
ืฆืืจ ืื ืื ืืืชืจ
ืืืืจ ืืื, ืขืืื ื ืืืฆืืจ ืื ืื ืืืชืจ helloworld.ru ืฉืื ื ืืืืืกืืฃ ืฉื ืืช ืชืช-ืืืืืืื dev.helloworld.ru.
- ืฆืืจ ืื ืื ืืืืืืื helloworld.ru ืืฆืืื ืืช ืกืืกืืช ืืื ืืกื ืืืฉืชืืฉ ืืืขืจืืช:
ืกืื ืืช ืืชืืื ืืชืืชืืช ืืขืืื ืืืื ืืช ืืืืืืื ืืืืฆืขืืช Let's Encryptืื ืืจืฆืื ื ื ืืืืืืจ HTTPS ืขืืืจ ืืืชืจ: - ืืืืจ ืืื, ืืื ืื ืื, ืฆืืจ ืชืช-ืืืืืื dev.helloworld.ru (ืฉืขืืืจื ืชืืื ืื ืืื ืคืืง ืชืขืืืช TLS ืืืื ื):
ืืชืงื ืช ืจืืืื ืฉืจืช
ืืฉ ืื ื ืฉืจืช ืขื ืืขืจืืช ืืืคืขืื Debian Stretch 9.12 ืืืชืงื ืช ืืื ืืงืจื ืคืืกืง ืืืืกืืืืื 18.0.27.
ืขืืื ื ืืืชืงืื ืืืืืืืจ ืขืืืจ ืืคืจืืืงื ืฉืื ื:
- PostgreSQL (ืืืงืจื ืฉืื ื, ืืืื ืฉืจืช ืืื ืขื ืฉื ื ืืกืื ื ืชืื ืื ืขืืืจ ืกืืืืืช dev ื-prod).
- RabbitMQ (ืืืชื ืืืคืข ืขื vhosts ืฉืื ืื ืขืืืจ ืกืืืืืช).
- ืฉื ื ืืืคืขื Redis (ืืกืืืืืช ืืคืชืืื ืืคืจืืืื).
- Docker Registry (ืืืืกืื ืืงืืื ืฉื ืชืืื ืืช Docker ืื ืืืืช).
- ืืืฉืง ืืฉืชืืฉ ืขืืืจ ืจืืฉืื Docker.
PostgreSQL
Plesk ืืืจ ืืืืข ืขื PostgreSQL DBMS, ืืื ืื ืืืจืกื ืืืืจืื ื (ืืืื ืืชืืืช Plesk Obsidian
ืืฉ ืืจืื ืืืจืืืช ืืคืืจืืืช ืืืชืงื ืช Postgres ืืืืืื ืืจืฉืช (
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
ืืืชืืฉื ืืื ืฉื-PostgreSQL ืืฉ ืืืืจืืช ืืจืืจืช ืืืื ืืื ืื ืืืช ืืืื, ืืฉ ืฆืืจื ืืชืงื ืืช ืืชืฆืืจื. ืื ืืขืืืจ ืื ื /etc/postgresql/12/main/postgresql.conf
ืืืื ืืืืฆืขืื. ืืฉ ืืฆืืื ืืื ืฉืืืฉืืื ืื ืืืื ืืื ื ืืืืจ ืงืกื, ืืืฉ ืืืืื ืืช ืืืกืืก ืืฆืืจื ืืืืืงืช ืืืชืจ, ืืืชืืกืก ืขื ืืืืืจื, ืืืคืืืงืฆืื ืืืืจืืืืช ืืฉืืืืชืืช ืฉืื. ืืื ืื ืืกืคืืง ืืื ืืืชืืื.
ืื ืืกืฃ ืืืืืจืืช ืืืืฆืขืืช ืขื ืืื ืืืืฉืืื, ืื ื ืื ืืฉื ืื postgresql.conf
ืืฆืืืช ืืจืืจืช ืืืืื 5432 ืืืืจืช (ืืืืืื ืฉืื ื - 53983).
ืืืืจ ืฉืื ืื ืงืืืฅ ืืชืฆืืจื, ืืคืขื ืืืืฉ ืืช postgresql-server ืขื ืืคืงืืื:
service postgresql restart
ืืชืงื ื ืืืืืจื ื ืืช PostgreSQL. ืืขืช ืืืื ื ืืฆืืจ ืืกื ื ืชืื ืื, ืืฉืชืืฉืื ืขืืืจ ืกืืืืืช ืืคืชืืื ืืคืจืืืื, ืื ืืชื ืืืฉืชืืฉืื ืืืืืืช ืื ืื ืืช ืืกื ืื ืชืื ืื:
$ su - postgres
postgres:~$ create database hw_dev_db_name;
CREATE DATABASE
postgres:~$ create user hw_dev_db_user with password 'hw_dev_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_dev_db_name to hw_dev_db_user;
GRANT
postgres:~$ create database hw_prod_db_name;
CREATE DATABASE
postgres:~$ create user hw_prod_db_user with password 'hw_prod_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_prod_db_name to hw_prod_db_user;
GRANT
RabbitMQ
ืืืื ื ืขืืืจ ืืืชืงื ืช RabbitMQ, ืืชืืื ืืืืขืืช ืขืืืจ ืกืืจื. ืืชืงื ืชื ืืืืืื ืืื ืื ืคืฉืืื:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install erlang erlang-nox
sudo add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install rabbitmq-server
ืืืืจ ืืืชืงื ื, ืื ืื ื ืฆืจืืืื ืืืฆืืจ vhosts, ืืฉืชืืฉืื ืืืืขื ืืง ืืช ืืืืืืืช ืืืจืืฉืืช:
sudo rabbitmqctl add_user hw_dev_amqp_user hw_dev_amqp_password
sudo rabbitmqctl set_user_tags hw_dev_amqp_user administrator
sudo rabbitmqctl add_vhost hw_dev_vhost
sudo rabbitmqctl set_permissions -p hw_dev_vhost hw_dev_amqp_user ".*" ".*" ".*"
sudo rabbitmqctl add_user hw_prod_amqp_user hw_prod_amqp_password
sudo rabbitmqctl set_user_tags hw_prod_amqp_user administrator
sudo rabbitmqctl add_vhost hw_prod_vhost
sudo rabbitmqctl set_permissions -p hw_prod_vhost hw_prod_amqp_user ".*" ".*" ".*"
Redis
ืืขืช ืืืื ื ืชืงืื ืื ืงืืข ืืช ืืจืืื ืืืืจืื ืขืืืจ ืืืคืืืงืฆืื ืฉืื ื - Redis. ืื ืืฉืืฉ ืืงืฆื ืืืืจื ืืืืกืื ืืชืืฆืืืช ืฉื ืืฉืืืืช ืกืืจื.
ืื ื ื ืขืื ืฉื ื ืืืืืืช Docker ืขื Redis ืขืืืจ ืกืืืืืช ืคืืชืื ืืคืจืื ืืืืฆืขืืช ืืืจืืื Docker
ืขืืืจ ืคืืกืง.
- ืื ืื ื ืืืืืื ื- Plesk, ืขืืืจืื ืืงืืข ืืจืืืืช, ืืืคืฉืื ืืช ืืจืืืช Docker ืืืชืงืื ืืืชื (ืื ืื ื ืฆืจืืืื ืืจืกื ืืื ืืืช):
- ืขืืืจ ืื ืืชืืกืฃ ืืืืชืงื, ืืฆื ืืช ืืชืืื ื ืืืืฆืขืืช ืืืืคืืฉ
redis bitnami
ืืืชืงื ืืช ืืืจืกื ืืืืจืื ื: - ืื ื ื ืื ืกืื ืืงืื ืืืื ืจ ืฉืืืจืืช ืืืชืืื ืืช ืืชืฆืืจื: ืฆืืื ืืช ืืืฆืืื, ืืช ืืืื ื-RAM ืืืงืกืืืื ืฉืืืงืฆื, ืืช ืืกืืกืื ืืืฉืชื ื ืืกืืืื, ืืชืขืื ืืช ืขืืฆืืช ืืงืื:
- ืื ื ืืืฆืขืื ืืช ืฉืืืื 2-3 ืขืืืจ ืืืื ื-prod, ืืืืืจืืช ืื ื ืืฉื ืื ืจืง ืืช ืืคืจืืืจืื: ืืฆืืื, ืกืืกืื, ืืืื RAM ืื ืชืื ืืชืืงืืืช ืื ืคื ืืฉืจืช:
ืืืงืจ ืจืืฉืื
ืื ืืกืฃ ืืฉืืจืืชืื ืืืกืืกืืื, ืื ืืืื ื ืืื ืืฉืื ืืืืจ ืชืืื ืืช Docker ืืฉืื ืืฉืจืช. ืืืจืื ืืืื, ืฉืื ืืฉืจืช ืืื ืืขืช ืืื ืืืื (ืืืืืื ืืื ืืืชืจ ืืื ืื DockerHub), ืืืชืืืื ืฉื ืืงืืช ืืืืจ ืคืจืื ืืื ืคืฉืื ืืืื.
ืื ืื ื ืจืืฆืื ืฉืืืื ืื ื:
- ืืืืจ Docker ืืืื ืืกืืกืื ื ืืืฉ ืืชืช-ืืืืืื
https://docker.helloworld.ru ; - ืืืฉืง ืืฉืชืืฉ ืืฆืคืืื ืืชืืื ืืช ืืืืืจ, ืืืื ื
https://docker-ui.helloworld.ru .
ืืื ืืขืฉืืช ืืืช:
- ืืืื ื ืืฆืืจ ืฉื ื ืชืช-ืืืืืื ืื ื-Plesk ืืื ืื ืฉืื ื: docker.helloworld.ru ื-docker-ui.helloworld.ru, ืื ืงืืข ืขืืืจื ืืืฉืืจื Let's Encrypt.
- ืืืกืฃ ืืช ืืงืืืฅ ืืชืืงืืืช ืชืช ืืืืืืื docker.helloworld.ru
docker-compose.yml
ืขื ืชืืื ืืื:version: "3" services: docker-registry: image: "registry:2" restart: always ports: - "53985:5000" environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_REALM: basic-realm REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data volumes: - ./.docker-registry.htpasswd:/auth/.htpasswd - ./data:/data docker-registry-ui: image: konradkleine/docker-registry-frontend:v2 restart: always ports: - "53986:80" environment: VIRTUAL_HOST: '*, https://*' ENV_DOCKER_REGISTRY_HOST: 'docker-registry' ENV_DOCKER_REGISTRY_PORT: 5000 links: - 'docker-registry'
- ืชืืช SSH, ื ืืฆืืจ ืืช ืงืืืฅ ื-.htpasswd ืขืืืจ ืืจืฉืื ืืกืืกืืช ืืืืืจ Docker:
htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
- ืืืกืืฃ ืืืจื ืืืืืืช:
docker-compose up -d
- ืืื ืื ื ืฆืจืืืื ืืืคื ืืช ืืช Nginx ืืงืื ืืืื ืจืื ืฉืื ื. ื ืืชื ืืขืฉืืช ืืืช ืืจื Plesk.
ืืฉ ืืืฆืข ืืช ืืฉืืืื ืืืืื ืขืืืจ ืชืช-ืืืืืืื ืื docker.helloworld.ru ื-docker-ui.helloworld.ru:
ืืกืขืืฃ ืืืื Dev ืืืชืจ ืฉืื ื ืขืืืจ ืื ืืืื ืคืจืืงืกื ืฉื Docker:
ืืืืกืฃ ืืื ืืชืขืืืจื ื ืื ืกืช ืฉื ืคืจืืงืกื ืืืืืื ืฉืื ื:
- ืื ืื ื ืืืืงืื ืฉืื ืื ื ืืืืืื ืืืืื ืก ืืืืื ืฉืื ื ืืืืืื ื ืืืงืืืืช:
$ docker login docker.helloworld.ru -u hw_docker_admin -p hw_docker_password WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded
- ืืืื ื ืืืืง ืื ืืช ืคืขืืืช ืชืช-ืืืืืืื docker-ui.helloworld.ru:
ืืืฉืจ ืชืืืฅ ืขื ืขืืื ืืืืืจืื, ืืืคืืคื ืืฆืื ืืืื ืืจืฉืื ืื ืชืฆืืจื ืืืืื ืืช ืฉื ืืืฉืชืืฉ ืืืกืืกืื ืขืืืจ ืืืืืจ. ืืืืจ ืืื, ื ืืขืืจ ืืืฃ ืขื ืจืฉืืืช ืืืืจืื (ืืื ืชืืื ืืื ืชืืื ืจืืงื ืขืืืจืื):
ืคืชืืืช ืืฆืืืืช ืืืืืช ืืืฉ ืฉื Plesk
ืืืืจ ืืชืงื ืช ืืืืืจืช ืืจืืืืื, ืขืืื ื ืืคืชืื ืคืืจืืื ืื ืฉืืจืืืืื ืืืื ื ืืืฉืื ืืืืืืืช Docker ืืืืจืฉืช ืืืืฆืื ืืช.
ืืืื ื ืจืื ืืืฆื ืืขืฉืืช ืืืช ืืืืฆืขืืช ืชืืกืฃ ืืืืช ืืืฉ ืขืืืจ Plesk ืฉืืชืงื ื ืงืืื ืืื.
- ืื ื ืืืื ืืืืืจืืช > ืืืืจืืช > ืืืืช ืืฉ:
- ืื ื ืฉื ื ืืช ืืืื ืืืืช ืืืฉ ืฉื Plesk > ืืืกืฃ ืืื ืืืชืื ืืืฉืืช ืืคืชื ืืช ืืฆืืืืช ื-TCP ืืืืืช ืขืืืจ ืจืฉืช ืืืฉื ื ืฉื Docker (172.0.0.0 / 8):
RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
Redis: 32785, 32786 - ื ืืกืืฃ ืื ืืื ืฉืืคืชื ืืช ืืฆืืืืช PostgreSQL ืืคืื ืื ื ืืืื RabbitMQ ืืขืืื ืืืืฆืื:
- ืืื ืืช ืืืืืื ืืืืฆืขืืช ืืคืชืืจ ืืื ืฉืื ืืืื:
ืืืืจืช CI/CD ืืคืขืืืืช Github
ืืื ื ืจื ืืืืง ืืืขื ืืื ืืืืชืจ - ืืงืืช ืฆืื ืืจ ืืื ืืืจืฆืื ืจืฆืืฃ ืืืขืืจืช ืืคืจืืืงื ืฉืื ื ืืฉืจืช.
ืฆืื ืืจ ืื ืืืืื ืฉื ื ืืืงืื:
- ืื ืืืช ืชืืื ื ืืืคืขืืช ืืืืงืืช (ืขืืืจ ืืงืฆื ืืืืืจื) - ืืฆื Github;
- ืืคืขืืช ืืขืืจืืช (ืขืืืจ ื-backend) ืืคืจืืกื ืฉื ืงืื ืืืื ืจืื - ืืฉืจืช.
ืคืจืืก ื- Plesk
ื ืขืกืืง ืชืืืื ืื ืงืืื ืืฉื ืืื (ืื ืืจืืฉืื ื ืชืืืื ืื).
ืื ื ื ืืืืจ ืืช ืชืืืื ืืคืจืืกื ืืืืฆืขืืช ืชืืกืฃ Git ืขืืืจ Plesk.
ืฉืงืื ืืืืื ืขื ืกืืืืช Prod ืขืืืจ ืืืืจ Backend.
- ืื ืื ื ืขืืืจืื ืืื ืื ืฉื ืืชืจ Helloworld ืฉืื ื ืื ืื ืกืื ืืกืขืืฃ ืืืฉื ื ืฉื Git:
- ืืื ืก ืงืืฉืืจ ืืืืืจ Github ืฉืื ื ืืฉืื "Remote Git repository" ืืฉื ื ืืช ืชืืงืืืช ืืจืืจืช ืืืืื
httpdocs
ืืืืจ (ืืืฉื./httpdocs/hw_back
): - ืืขืชืง ืืช ืืคืชื SSH Public ืืืฉืื ืืงืืื ื
ืืืกืฃ ืื ืืืืืจืืช Github. - ืืืฅ ืขื ืืืฉืืจ ืขื ืืืกื ืืฉืื 2, ืืืืืจ ืืื ื ืคื ื ืืืฃ ืืืืืจ ื- Plesk. ืืขืช ืขืืื ื ืืืืืืจ ืืช ืืืืืจ ืื ืฉืืขืืืื ืืืชืืืืืืืืช ืืกื ืืฃ ืืจืืฉื. ืืื ืืขืฉืืช ืืืช, ืขืืืจ ืื ืืืืจืืช ืืืืจ ืืืฉืืืจ ืืช ืืขืจื
Webhook URL
(ื ืฆืืจื ืืช ืื ืืืืืจ ืืืชืจ ืืขืช ืืืืจืช Github Actions): - ืืฉืื ืคืขืืืืช ืืืกื ืืืคืกืงื ืืงืืืืช, ืืื ืืช ืืกืงืจืืคื ืืื ืืืคืขืื ืืช ืืคืจืืกื:
cd {REPOSITORY_ABSOLUTE_PATH} .ci-cd/deploy.sh {ENV} {DOCKER_REGISTRY_HOST} {DOCKER_USER} {DOCKER_PASSWORD} {TG_BOT_TOKEN} {TG_CHAT_ID}
ืฉื:
{REPOSITORY_ABSOLUTE_PATH}
- ื ืชืื ืืชืืงืืืช ื-prod ืฉื ืืืืจ ืืงืฆื ืืืืืจื ืืฉืจืช;
{ENV}
- ืกืืืื (dev / prod), ืืืงืจื ืฉืื ืprod
;
{DOCKER_REGISTRY_HOST}
- ืืืืจื ืฉื ืืืืจ ืืืืงืจ ืฉืื ื
{TG_BOT_TOKEN}
- ืืกืืืื ืืื ืฉื ืืืืจื;
{TG_CHAT_ID}
- ืืืื ืืฆ'ืื/ืขืจืืฅ ืืฉืืืืช ืืืืขืืช.ืืืืื ืืกืงืจืืคื:
cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/ .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
- ืืืกืฃ ืืฉืชืืฉ ืืืื ืื ืฉืื ื ืืงืืืฆืช Docker (ืืื ืฉืืืื ืื ืื ืงืื ืืืื ืจืื):
sudo usermod -aG docker helloworld_admin
ืกืืืืช ื-dev ืขืืืจ ืืืืจ ืืงืฆื ืืืืืจื ืื-frontend ืืืืืจืื ืืืืชื ืืืคื.
ืฆืื ืืจ ืคืจืืกื ื-Github Actions
ืืืื ื ืขืืืจ ืืืืืจืช ืืืืง ืืจืืฉืื ืฉื ืฆืื ืืจ ื-CI/CD ืฉืื ื ื-Github Actions.
ืงืฆื ืืืืจื
ืืฆืื ืืจ ืืชืืืจ ื
ืืื ืืคื ื ืฉื ื ืชื ืืืชื, ืืืื ื ืืื ืืช ืืืฉืชื ืื Secret ืฉืื ืื ื ืฆืจืืืื ื-Github. ืืื ืืขืฉืืช ืืืช, ืขืืืจ ืื ืืืืจืืช -> ืกืืืืช:
DOCKER_REGISTRY
- ืืืืจื ืฉื ืืืืจ Docker ืฉืื ื (docer.helloworld.ru);DOCKER_LOGIN
- ืื ืืกื ืืืืืจ Docker;DOCKER_PASSWORD
- ืกืืกืื ืืืื;DEPLOY_HOST
- ืืืจื ืฉืื ืคืื ื ืื ืืืื ืฉื Plesk ืืืื (ืืืืืื:helloworld.com : 8443 ืื123.4.56.78 :8443);DEPLOY_BACK_PROD_TOKEN
- ืืกืืืื ืืคืจืืกื ื-prod-repository ืืฉืจืช (ืงืืืื ื ืืืชื ื-Deployment in Plesk ืขื' 4);DEPLOY_BACK_DEV_TOKEN
- ืืกืืืื ืืคืจืืกื ืืืืืจ ืืคืืชืื ืืฉืจืช.
ืชืืืื ืืคืจืืกื ืืื ืคืฉืื ืืืืจืื ืืฉืืืฉื ืฉืืืื ืขืืงืจืืื:
- ืื ืืื ืืคืจืกืื ืฉื ืืชืืื ื ืืืืืจ ืฉืื ื;
- ืืคืขืืช ืืืืงืืช ืืืืื ืืืืืกืกืช ืขื ืชืืื ื ืืจืืื ืฉื ืื ืชื;
- ืคืจืืกื ืืกืืืื ืืจืฆืืื ืืืชืื ืืกื ืืฃ (dev/master).
ืืืฉืง
ืืืืจืช ืืชืจ
ืืขืืจืช ืชืขืืืจื ืืจื Nginx
ืืืื, ืืืขื ื ืืกืืฃ. ื ืืชืจ ืจืง ืืืืืืจ ืืช ืืคืจืืงืกื ืฉื ืชืขืืืจื ื ืื ืกืช ืืืืฆืืช ืืงืื ืืืื ืจ ืฉืื ื ืืจื Nginx. ืืืจ ืืืกืื ื ืืช ืืชืืืื ืืื ืืฉืื 5 ืฉื ืืืืจืช Docker Registry. ืืฉ ืืืืืจ ืขื ืืืชื ืืืืจ ืขืืืจ ืืืืงืื ืืืืืจืืื ืืืงืืืืื ืืกืืืืืช ืืคืชืืื ืืคืจืืืื.
ืื ื ืืืื ืฆืืืืื ืืกื ืฉื ืืืืืจืืช.
ืงืฆื ืืืืจื
ืืืฉืง
ืืืืจื ืืฉืืื. ืื ืืชืืืืช ื-URL ืืงืืื ืคืจืืงืกื ืืืืืืช ืืืืืช, ืืืื ืืื ืฉืืชืืืืืช ื- /api/
- ืื ืืืขืืจื ืื ืืืืื ืืืืืจื (ืื ืืืืื ืืืืืจื, ืื ืืืืคืืื ืืืืืื ืืืชืืื ืขื /api/
).
ืชืืฆืืืช ืฉื
ืืขืช ืืืชืจ ืฉืื ื ืืืืจ ืืืืืช ืืืื ืืืชืืืืช helloworld.ru ื-dev.helloworld.ru (Prod- ื-dev-environments, ืืืชืืื).
ืืกื ืืื ืืืื ื ืืื ืืืืื ืืคืืืงืฆืื ืคืฉืืื ื-Flask ื-Angular ืืืงืื ื ืฆืื ืืจ ื-Github Actions ืืื ืืืืื ืืืชื ืืฉืจืช ืฉืืจืืฅ ืืช Plesk.
ืื ื ืืฉืืคื ืืช ืืงืืฉืืจืื ืืืืืจืื ืขื ืืงืื:
ืืงืืจ: www.habr.com