பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
இந்தக் கட்டுரையில், Plesk கண்ட்ரோல் பேனல் மற்றும் Github செயல்களைப் பயன்படுத்தி CI/CD ஐ அமைப்பதில் எனது அனுபவத்தைப் பகிர்ந்து கொள்கிறேன். "Helloworld" என்ற எளிய பெயருடன் ஒரு எளிய திட்டத்தை எவ்வாறு வரிசைப்படுத்துவது என்பதை இன்று கற்றுக்கொள்வோம். இது பைதான் கட்டமைப்பான குடுவையில் எழுதப்பட்டுள்ளது, செலரியில் தொழிலாளர்கள் மற்றும் கோணம் 8 இல் ஒரு முன்பக்கம் உள்ளது.

களஞ்சியங்களுக்கான இணைப்புகள்: பின்தளம், முன்பக்கம்.

கட்டுரையின் முதல் பகுதியில், எங்கள் திட்டத்தையும் அதன் பகுதிகளையும் பார்ப்போம். இரண்டாவதாக, Plesk ஐ எவ்வாறு அமைப்பது மற்றும் தேவையான நீட்டிப்புகள் மற்றும் கூறுகளை (DB, RabbitMQ, Redis, Docker, முதலியன) நிறுவுவது எப்படி என்பதைக் கண்டுபிடிப்போம்.

மூன்றாவது பகுதியில், டெவ் மற்றும் ப்ராட் சூழலில் சர்வரில் எங்கள் திட்டத்தைப் பயன்படுத்துவதற்கான பைப்லைனை எவ்வாறு அமைப்பது என்பதை இறுதியாகக் கண்டுபிடிப்போம். பின்னர் நாங்கள் தளத்தை சேவையகத்தில் தொடங்குவோம்.

ஆம், நான் என்னை அறிமுகப்படுத்த மறந்துவிட்டேன். எனது பெயர் Oleg Borzov, நான் Domklik இல் அடமானக் கடன் வழங்கும் மேலாளர்களுக்கான CRM குழுவில் முழு-ஸ்டாக் டெவலப்பர்.

திட்டத்தின் கண்ணோட்டம்

முதலில், இரண்டு திட்ட களஞ்சியங்களைப் பார்ப்போம் - பின்தளம் மற்றும் முன் - மற்றும் குறியீட்டின் மூலம் செல்லுங்கள்.

பின்பகுதி பகுதி: பிளாஸ்க்+செலரி

பின்-இறுதியில், பைதான் டெவலப்பர்களிடையே மிகவும் பிரபலமான கலவையை நான் எடுத்தேன்: பிளாஸ்க் கட்டமைப்பு (API க்காக) மற்றும் செலரி (பணி வரிசையில்). SQLAchemy ஒரு ORM ஆகப் பயன்படுத்தப்படுகிறது. அலெம்பிக் இடம்பெயர்வுக்குப் பயன்படுத்தப்படுகிறது. கைப்பிடிகளில் JSON சரிபார்ப்புக்கு - மார்ஷ்மெல்லோ.

В களஞ்சியங்கள் கட்டமைப்பின் விரிவான விளக்கம் மற்றும் திட்டத்தைத் தொடங்குவதற்கான வழிமுறைகளுடன் Readme.md கோப்பு உள்ளது.

வலை பகுதி API மிகவும் எளிமையானது, 6 கைப்பிடிகளைக் கொண்டுள்ளது:

  • /ping - கிடைக்கும் தன்மையை சரிபார்க்க;
  • பதிவு, அங்கீகாரம், அங்கீகாரம் நீக்குதல் மற்றும் அங்கீகரிக்கப்பட்ட பயனரைப் பெறுதல் ஆகியவற்றைக் கையாளுகிறது;
  • செலரி வரிசையில் பணியை வைக்கும் மின்னஞ்சலை அனுப்புவதற்கான கைப்பிடி.

செலரி பகுதி இது இன்னும் எளிமையானது, ஒரே ஒரு பிரச்சனை உள்ளது send_mail_task.

கோப்புறையில் /conf இரண்டு துணை கோப்புறைகள் உள்ளன:

  • docker இரண்டு டாக்கர்ஃபைல்களுடன் (base.dockerfile அரிதாக மாறும் மற்றும் அடிப்படை படத்தை உருவாக்க Dockerfile முக்கிய கூட்டங்களுக்கு);
  • .env_files - வெவ்வேறு சூழல்களுக்கான சூழல் மாறிகள் கொண்ட கோப்புகளுடன்.

திட்ட மூலத்தில் நான்கு டோக்கர்-கம்போஸ் கோப்புகள் உள்ளன:

  • docker-compose.local.db.yml வளர்ச்சிக்கான உள்ளூர் தரவுத்தளத்தை உருவாக்க;
  • docker-compose.local.workers.yml ஒரு தொழிலாளி, தரவுத்தளம், Redis மற்றும் RabbitMQ ஆகியவற்றின் உள்ளூர் வளர்ச்சிக்காக;
  • docker-compose.test.yml வரிசைப்படுத்தலின் போது சோதனைகளை நடத்துவதற்கு;
  • docker-compose.yml வரிசைப்படுத்தலுக்கு.

எங்களுக்கு ஆர்வமுள்ள கடைசி கோப்புறை .ci-cd. இது வரிசைப்படுத்துவதற்கான ஷெல் ஸ்கிரிப்ட்களைக் கொண்டுள்ளது:

  • deploy.sh - இடம்பெயர்வு மற்றும் வரிசைப்படுத்தலைத் தொடங்குதல். கிதுப் செயல்களில் சோதனைகளை உருவாக்கி இயக்கிய பிறகு சர்வரில் தொடங்கப்பட்டது;
  • rollback.sh - சட்டசபையின் முந்தைய பதிப்பிற்கு ரோல்பேக் கொள்கலன்கள்;
  • curl_tg.sh - டெலிகிராமுக்கு வரிசைப்படுத்தல் அறிவிப்புகளை அனுப்புகிறது.

முன்பக்கம் கோணத்தில்

முன்பக்கத்துடன் கூடிய களஞ்சியம் பெக்கோவை விட மிகவும் எளிமையானது. முன்பக்கம் மூன்று பக்கங்களைக் கொண்டுள்ளது:

  • மின்னஞ்சலை அனுப்புவதற்கான படிவம் மற்றும் வெளியேறு பொத்தான் கொண்ட முகப்புப் பக்கம்.
  • உள்நுழைவு பக்கம்.
  • பதிவு பக்கம்.

பிரதான பக்கம் சந்நியாசமாகத் தெரிகிறது:

பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
ரூட்டில் இரண்டு கோப்புகள் உள்ளன Dockerfile и docker-compose.yml, அத்துடன் பழக்கமான கோப்புறை .ci-cd பின் களஞ்சியத்தை விட சற்றே சிறிய எண்ணிக்கையிலான ஸ்கிரிப்ட்களுடன் (இயங்கும் சோதனைகளுக்கான ஸ்கிரிப்டுகள் அகற்றப்பட்டுள்ளன).

Plesk இல் ஒரு திட்டத்தைத் தொடங்குதல்

Plesk ஐ அமைத்து, எங்கள் தளத்திற்கான சந்தாவை உருவாக்குவதன் மூலம் தொடங்குவோம்.

நீட்டிப்புகளை நிறுவுதல்

Plesk இல் நமக்கு நான்கு நீட்டிப்புகள் தேவை:

  • Docker Plesk நிர்வாக குழுவில் கொள்கலன்களின் நிலையை நிர்வகிப்பதற்கும் பார்வைக்குக் காண்பிப்பதற்கும்;
  • Git சேவையகத்தில் வரிசைப்படுத்தல் படியை கட்டமைக்க;
  • Let's Encrypt இலவச TLS சான்றிதழ்களை உருவாக்குவதற்கு (மற்றும் தானாக புதுப்பித்தல்);
  • Firewall உள்வரும் போக்குவரத்தின் வடிகட்டலை உள்ளமைக்க.

நீட்டிப்புகள் பிரிவில் உள்ள Plesk நிர்வாக குழு மூலம் அவற்றை நிறுவலாம்:

பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
நீட்டிப்புகளின் விரிவான உள்ளமைவை நாங்கள் கருத்தில் கொள்ள மாட்டோம்; எங்கள் டெமோ நோக்கங்களுக்காக, இயல்புநிலை அமைப்புகள் பொருத்தமானதாக இருக்கும்.

சந்தா மற்றும் இணையதளத்தை உருவாக்குதல்

அடுத்து, எங்கள் வலைத்தளமான helloworld.ru க்கான சந்தாவை உருவாக்கி, dev.helloworld.ru என்ற துணை டொமைனைச் சேர்க்க வேண்டும்.

  1. நாங்கள் helloworld.ru டொமைனுக்கான சந்தாவை உருவாக்கி, கணினி பயனருக்கான உள்நுழைவு கடவுச்சொல்லைக் குறிப்பிடுகிறோம்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
    பக்கத்தின் கீழே உள்ள பெட்டியை சரிபார்க்கவும் லெட்ஸ் என்க்ரிப்ட் மூலம் டொமைனைப் பாதுகாக்கவும், நாங்கள் தளத்திற்கு HTTPS ஐ உள்ளமைக்க விரும்பினால்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  2. அடுத்து, இந்த சந்தாவில், நாங்கள் dev.helloworld.ru என்ற துணை டொமைனை உருவாக்குகிறோம் (இதற்காக நீங்கள் இலவச TLS சான்றிதழையும் வழங்கலாம்):

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

சேவையக கூறுகளை நிறுவுதல்

எங்களிடம் ஒரு சர்வர் உள்ளது OS டெபியன் நீட்சி 9.12 மற்றும் நிறுவப்பட்ட கட்டுப்பாட்டு குழு Plesk Obsidian 18.0.27.

எங்கள் திட்டப்பணியை நிறுவி கட்டமைக்க வேண்டும்:

  • PostgreSQL (எங்கள் விஷயத்தில் dev மற்றும் prod சூழல்களுக்கு இரண்டு தரவுத்தளங்களுடன் ஒரு சேவையகம் இருக்கும்).
  • RabbitMQ (அதே விஷயம், சூழல்களுக்கான வெவ்வேறு vhostகள் கொண்ட ஒரு நிகழ்வு).
  • இரண்டு Redis நிகழ்வுகள் (dev மற்றும் prod சூழல்களுக்கு).
  • Docker Registry (தொகுக்கப்பட்ட டோக்கர் படங்களின் உள்ளூர் சேமிப்பிற்காக).
  • டோக்கர் பதிவேட்டிற்கான UI இடைமுகம்.

போஸ்ட்கெரே

Plesk ஏற்கனவே PostgreSQL DBMS உடன் வருகிறது, ஆனால் சமீபத்திய பதிப்பு அல்ல (Plesk Obsidian எழுதும் நேரத்தில் ஆதரித்தது Postgres பதிப்புகள் 8.4–10.8). எங்கள் பயன்பாட்டிற்கான சமீபத்திய பதிப்பை நாங்கள் விரும்புகிறோம் (எழுதும் நேரத்தில் 12.3), எனவே நாங்கள் அதை கைமுறையாக நிறுவுவோம்.

டெபியனில் ஆன்லைனில் போஸ்ட்கிரெஸை நிறுவுவதற்கு ஏராளமான விரிவான வழிமுறைகள் உள்ளன (உதாரணமாக), எனவே நான் அவற்றை விரிவாக விவரிக்க மாட்டேன், நான் கட்டளைகளை தருகிறேன்:

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 ஐ நிறுவி உள்ளமைத்தோம். இப்போது ஒரு தரவுத்தளத்தை உருவாக்குவோம், dev மற்றும் prod சூழல்களுக்கான பயனர்கள் மற்றும் தரவுத்தளத்தை நிர்வகிக்க பயனர்களுக்கு உரிமைகளை வழங்குவோம்:

$ 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

முயல்MQ

செலரிக்கான செய்தி தரகரான 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 Plesk க்கான.

  1. Plesk க்குச் சென்று, நீட்டிப்புகள் பகுதிக்குச் சென்று, டோக்கர் நீட்டிப்பைப் பார்த்து அதை நிறுவவும் (எங்களுக்கு இலவச பதிப்பு தேவை):

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  2. நிறுவப்பட்ட நீட்டிப்புக்குச் சென்று, தேடலின் மூலம் படத்தைக் கண்டறியவும் redis bitnami மற்றும் சமீபத்திய பதிப்பை நிறுவவும்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  3. நாங்கள் பதிவிறக்கம் செய்யப்பட்ட கொள்கலனுக்குள் சென்று உள்ளமைவைச் சரிசெய்கிறோம்: போர்ட், அதிகபட்சமாக ஒதுக்கப்பட்ட ரேம் அளவு, சூழல் மாறிகளில் கடவுச்சொல் ஆகியவற்றைக் குறிப்பிடவும் மற்றும் தொகுதியை ஏற்றவும்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  4. தயாரிப்பு கொள்கலனுக்கான 2-3 படிகளை நாங்கள் செய்கிறோம், அமைப்புகளில் அளவுருக்களை மட்டுமே மாற்றுகிறோம்: போர்ட், கடவுச்சொல், ரேம் அளவு மற்றும் சேவையகத்தில் உள்ள தொகுதி கோப்புறைக்கான பாதை:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

டோக்கர் பதிவு

அடிப்படை சேவைகளுக்கு கூடுதலாக, உங்கள் சொந்த டோக்கர் பட களஞ்சியத்தை சேவையகத்தில் நிறுவுவது நன்றாக இருக்கும். அதிர்ஷ்டவசமாக, சேவையகங்களில் இடம் இப்போது மிகவும் மலிவானது (DockerHub க்கான சந்தாவை விட நிச்சயமாக மலிவானது), மேலும் ஒரு தனியார் களஞ்சியத்தை நிறுவும் செயல்முறை மிகவும் எளிது.

நாங்கள் வைத்திருக்க விரும்புகிறோம்:

  • கடவுச்சொல்-பாதுகாக்கப்பட்ட டோக்கர் களஞ்சியத்தை துணை டொமைன் வழியாக அணுகலாம் https://docker.helloworld.ru;
  • களஞ்சியத்தில் படங்களைப் பார்ப்பதற்கான UI இடைமுகம், இங்கு கிடைக்கிறது https://docker-ui.helloworld.ru.

இதற்காக:

  1. Plesk இல் உள்ள எங்கள் சந்தாவில் இரண்டு துணை டொமைன்களை உருவாக்குவோம்: docker.helloworld.ru மற்றும் docker-ui.helloworld.ru, மற்றும் அவற்றுக்கான சான்றிதழ்களை குறியாக்கம் செய்வோம்.
  2. கோப்பை 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'
    

  3. SSH இன் கீழ், டோக்கர் களஞ்சியத்தில் அடிப்படை அங்கீகாரத்திற்காக .htpasswd கோப்பை உருவாக்குவோம்:
    htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
  4. கொள்கலன்களை சேகரித்து உயர்த்துவோம்:
    docker-compose up -d
  5. மேலும் Nginxஐ எங்களின் கொள்கலன்களுக்கு திருப்பிவிட வேண்டும். இதை Plesk மூலம் செய்யலாம்.

docker.helloworld.ru மற்றும் docker-ui.helloworld.ru துணை டொமைன்களுக்கு பின்வரும் படிகளைச் செய்ய வேண்டும்:

பிரிவில் தேவ் கருவிகள் எங்கள் வலைத்தளம் செல்ல டோக்கர் ப்ராக்ஸி விதிகள்:

பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
எங்கள் கொள்கலனில் உள்வரும் போக்குவரத்தை ப்ராக்ஸி செய்வதற்கான விதியைச் சேர்க்கவும்:

பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  1. உள்ளூர் இயந்திரத்திலிருந்து எங்கள் கொள்கலனில் உள்நுழைய முடியுமா என்பதை நாங்கள் சரிபார்க்கிறோம்:
    $ 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
  2. docker-ui.helloworld.ru துணை டொமைனின் செயல்பாட்டையும் பார்க்கலாம்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
    நீங்கள் களஞ்சியங்களை உலாவு என்பதைக் கிளிக் செய்யும் போது, ​​உலாவி அங்கீகார சாளரத்தைக் காண்பிக்கும், அங்கு நீங்கள் களஞ்சியத்திற்கான உள்நுழைவு மற்றும் கடவுச்சொல்லை உள்ளிட வேண்டும். அதன் பிறகு களஞ்சியங்களின் பட்டியலுடன் ஒரு பக்கத்திற்கு திருப்பி விடப்படுவோம் (இப்போது அது காலியாக இருக்கும்):

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

Plesk ஃபயர்வாலில் துறைமுகங்களைத் திறக்கிறது

கூறுகளை நிறுவி, கட்டமைத்த பிறகு, போர்ட்களைத் திறக்க வேண்டும், இதனால் கூறுகளை டோக்கர் கொள்கலன்கள் மற்றும் வெளிப்புற நெட்வொர்க்கிலிருந்து அணுக முடியும்.

நாம் முன்பு நிறுவிய Plesk க்கான ஃபயர்வால் நீட்டிப்பின் உதாரணத்தைப் பயன்படுத்தி இதை எப்படி செய்வது என்று பார்ப்போம்.

  1. செல்க கருவிகள் & அமைப்புகள் > அமைப்புகள் > ஃபயர்வால்:
    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
  2. செல்க Plesk ஃபயர்வால் விதிகளை மாற்றவும் > தனிப்பயன் விதியைச் சேர்க்கவும் டோக்கர் சப்நெட்டிற்காக பின்வரும் TCP போர்ட்களைத் திறக்கவும் (172.0.0.0 / 8):
    RabbitMQ: 1883, 4369, 5671-5672, 25672, 61613-61614
    ரெடிஸ்: 32785, 32786

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  3. PostgreSQL போர்ட்கள் மற்றும் RabbitMQ மேலாண்மை குழுவை வெளி உலகிற்கு திறக்கும் விதியையும் நாங்கள் சேர்ப்போம்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  4. மாற்றங்களைப் பயன்படுத்து பொத்தானைப் பயன்படுத்தி விதிகளைப் பயன்படுத்தவும்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

கிதுப் செயல்களில் சிஐ/சிடியை அமைத்தல்

மிகவும் சுவாரஸ்யமான பகுதிக்கு வருவோம் - தொடர்ச்சியான ஒருங்கிணைப்பு பைப்லைனை அமைத்தல் மற்றும் எங்கள் திட்டத்தை சேவையகத்திற்கு வழங்குதல்.

இந்த குழாய் இரண்டு பகுதிகளைக் கொண்டிருக்கும்:

  • படத்தை உருவாக்குதல் மற்றும் சோதனைகளை இயக்குதல் (பின்னணிக்கு) - கிதுப் பக்கத்தில்;
  • இடம்பெயர்வுகளைத் தொடங்குதல் (பின்னணிக்கு) மற்றும் சர்வரில் கொள்கலன்களைப் பயன்படுத்துதல்.

Plesk க்கு வரிசைப்படுத்துங்கள்

முதலில் இரண்டாவது புள்ளியைக் கையாள்வோம் (முதலாவது அதைப் பொறுத்தது).

Plesk க்கான Git நீட்டிப்பைப் பயன்படுத்தி வரிசைப்படுத்தல் செயல்முறையை உள்ளமைப்போம்.

பின்தள களஞ்சியத்திற்கான தயாரிப்பு சூழலுடன் ஒரு உதாரணத்தைப் பார்ப்போம்.

  1. நாங்கள் எங்கள் ஹெலோவொர்ல்ட் வலைத்தளத்தின் சந்தாவுக்குச் சென்று, Git துணைப் பகுதிக்குச் செல்கிறோம்:

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  2. எங்கள் Github களஞ்சியத்திற்கான இணைப்பை “Remote Git repository” புலத்தில் ஒட்டவும் மற்றும் இயல்புநிலை கோப்புறையை மாற்றவும் httpdocs மற்றொருவருக்கு (உதாரணமாக, /httpdocs/hw_back):

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  3. முந்தைய படியிலிருந்து SSH பொது விசையை நகலெடுக்கவும் கூட்டு அது கிதுப் அமைப்புகளில்.
  4. படி 2 இல் உள்ள திரையில் சரி என்பதைக் கிளிக் செய்யவும், அதன் பிறகு நாம் Plesk இல் உள்ள களஞ்சிய பக்கத்திற்கு திருப்பி விடப்படுகிறோம். இப்போது நாம் முதன்மைக் கிளைக்குச் செல்லும்போது புதுப்பிப்பதற்கு களஞ்சியத்தை உள்ளமைக்க வேண்டும். இதைச் செய்ய, செல்லவும் களஞ்சிய அமைப்புகள் மற்றும் மதிப்பை சேமிக்கவும் Webhook URL (கிதுப் செயல்களை அமைக்கும் போது இது பின்னர் தேவைப்படும்):

    பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

  5. முந்தைய பத்தியிலிருந்து திரையில் உள்ள செயல்கள் புலத்தில், வரிசைப்படுத்தலைத் தொடங்க ஸ்கிரிப்டை உள்ளிடவும்:
    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} — சர்வரில் உள்ள ப்ராட் பேக்எண்ட் களஞ்சிய கோப்புறைக்கான பாதை;
    {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
  6. எங்கள் சந்தாவிலிருந்து ஒரு பயனரை டோக்கர் குழுவில் சேர்க்கிறோம் (அதன் மூலம் அவர் கொள்கலன்களை நிர்வகிக்க முடியும்):
    sudo usermod -aG docker helloworld_admin

பின்தள களஞ்சியம் மற்றும் முன்பக்கத்திற்கான தேவ் சூழல் அதே வழியில் கட்டமைக்கப்பட்டுள்ளது.

கிதுப் செயல்களுக்கு வரிசைப்படுத்தல் பைப்லைன்

எங்கள் CI/CD பைப்லைனின் முதல் பகுதியை கிதுப் செயல்களில் அமைப்பதற்குச் செல்லலாம்.

பின்தளத்தில்

பைப்லைன் விவரிக்கப்பட்டுள்ளது deploy.yml கோப்பு.

ஆனால் அதைப் பாகுபடுத்தும் முன், கிதுப்பில் நமக்குத் தேவையான ரகசிய மாறிகளை நிரப்புவோம். இதைச் செய்ய, செல்லவும் அமைப்புகள் -> ரகசியங்கள்:

  • DOCKER_REGISTRY - எங்கள் டோக்கர் களஞ்சியத்தின் ஹோஸ்ட் (docker.helloworld.ru);
  • DOCKER_LOGIN - டோக்கர் களஞ்சியத்தில் உள்நுழைக;
  • DOCKER_PASSWORD - அதற்கான கடவுச்சொல்;
  • DEPLOY_HOST - Plesk நிர்வாக குழு கிடைக்கும் ஒரு புரவலன் (எடுத்துக்காட்டு: helloworld.ru:8443 அல்லது 123.4.56.78:8443);
  • DEPLOY_BACK_PROD_TOKEN - சேவையகத்தில் உள்ள தயாரிப்பு களஞ்சியத்திற்கு வரிசைப்படுத்துவதற்கான ஒரு டோக்கன் (நாங்கள் அதை Plesk இல் வரிசைப்படுத்தலில் பெற்றோம், படி 4);
  • DEPLOY_BACK_DEV_TOKEN — சர்வரில் உள்ள தேவ் களஞ்சியத்திற்கு வரிசைப்படுத்துவதற்கான டோக்கன்.

வரிசைப்படுத்தல் செயல்முறை எளிதானது மற்றும் மூன்று முக்கிய படிகளைக் கொண்டுள்ளது:

  • எங்கள் களஞ்சியத்தில் படத்தை உருவாக்கி வெளியிடுதல்;
  • புதிதாக தொகுக்கப்பட்ட படத்தின் அடிப்படையில் ஒரு கொள்கலனில் சோதனைகளை இயக்குதல்;
  • கிளையைப் பொறுத்து (தேவ்/மாஸ்டர்) விரும்பிய சூழலுக்கு வரிசைப்படுத்தல்.

முன்நிலை

முன் களஞ்சியத்திற்கான Deploy.yml கோப்பு பெக்கோவிலிருந்து மிகவும் வித்தியாசமாக இல்லை. இது இயங்கும் சோதனைகளின் படியைத் தவறவிட்டு, வரிசைப்படுத்தலுக்கான டோக்கன்களின் பெயர்களை மாற்றுகிறது. முன் களஞ்சியத்திற்கான ரகசியங்கள், தனித்தனியாக நிரப்பப்பட வேண்டும்.

தள அமைப்பு

Nginx வழியாக ப்ராக்ஸிங் ட்ராஃபிக்

சரி, நாம் முடிவுக்கு வந்துவிட்டோம். Nginx வழியாக எங்கள் கொள்கலனுக்கு உள்வரும் மற்றும் வெளிச்செல்லும் போக்குவரத்தை ப்ராக்ஸி செய்வதை உள்ளமைப்பது மட்டுமே மீதமுள்ளது. டோக்கர் பதிவேட்டை அமைப்பதற்கான படி 5 இல் இந்த செயல்முறையை நாங்கள் ஏற்கனவே உள்ளடக்கியுள்ளோம். dev மற்றும் prod சூழல்களில் பின் மற்றும் முன் பகுதிகளுக்கு இதையே திரும்பத் திரும்பச் செய்ய வேண்டும்.

அமைப்புகளின் ஸ்கிரீன் ஷாட்களை வழங்குவேன்.

பின்தளத்தில்

பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD

முன்நிலை

பிளாஸ்க்+கோண திட்டத்திற்கான கிதுப் செயல்களில் CI/CD
Ое уточнение. தொடங்கும் URLகள் தவிர, அனைத்து URLகளும் முன்பகுதி கொள்கலனுக்கு ப்ராக்ஸி செய்யப்படும் /api/ - அவை பின் கொள்கலனுடன் இணைக்கப்படும் (அதனால் பின் கொள்கலனில், அனைத்து கையாளுபவர்களும் தொடங்க வேண்டும் /api/).

முடிவுகளை

இப்போது எங்கள் தளத்தை helloworld.ru மற்றும் dev.helloworld.ru (முறையே prod மற்றும் dev சூழல்கள்) இல் அணுக வேண்டும்.

மொத்தத்தில், பிளாஸ்க் மற்றும் கோணத்தில் ஒரு எளிய பயன்பாட்டை எவ்வாறு தயாரிப்பது மற்றும் அதை Plesk இயங்கும் சேவையகத்திற்கு உருட்டுவதற்காக கிதுப் செயல்களில் பைப்லைனை அமைப்பது எப்படி என்பதை நாங்கள் கற்றுக்கொண்டோம்.

குறியீட்டுடன் களஞ்சியங்களுக்கான இணைப்புகளை நகலெடுக்கிறேன்: பின்தளம், முன்பக்கம்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்