புரோஹோஸ்டர் > Блог > நிர்வாகம் > CI/CD சங்கிலியை உருவாக்குதல் மற்றும் டோக்கருடன் வேலையை தானியக்கமாக்குதல்
CI/CD சங்கிலியை உருவாக்குதல் மற்றும் டோக்கருடன் வேலையை தானியக்கமாக்குதல்
90களின் பிற்பகுதியில் எனது முதல் இணையதளங்களை எழுதினேன். அப்போது அவர்களை வேலையில் வைப்பது மிகவும் எளிதாக இருந்தது. சில பகிரப்பட்ட ஹோஸ்டிங்கில் அப்பாச்சி சர்வர் இருந்தது, நீங்கள் FTP வழியாக இந்த சர்வரில் உள்நுழையலாம். ftp://ftp.example.com. பின்னர் உங்கள் பெயர் மற்றும் கடவுச்சொல்லை உள்ளிட்டு கோப்புகளை சர்வரில் பதிவேற்ற வேண்டும். வெவ்வேறு காலங்கள் இருந்தன, எல்லாம் இப்போது இருப்பதை விட எளிமையானது.
அதிலிருந்து இரண்டு தசாப்தங்களில், எல்லாம் நிறைய மாறிவிட்டது. வலைத்தளங்கள் மிகவும் சிக்கலானதாகிவிட்டன; அவை தயாரிப்பில் வெளியிடப்படுவதற்கு முன்பு கூடியிருக்க வேண்டும். ஒரே ஒரு சர்வர் பல சர்வர்கள் சுமை பேலன்சர்களுக்குப் பின்னால் இயங்குகிறது, மேலும் பதிப்பு கட்டுப்பாட்டு அமைப்புகளின் பயன்பாடு பொதுவானதாகிவிட்டது.
எனது தனிப்பட்ட திட்டத்திற்காக எனக்கு ஒரு சிறப்பு உள்ளமைவு இருந்தது. ஒரு செயலைச் செய்வதன் மூலம் தளத்தை உற்பத்தியில் வரிசைப்படுத்துவதற்கான திறன் எனக்குத் தேவை என்பதை நான் அறிவேன்: ஒரு கிளைக்கு குறியீட்டை எழுதுதல் master GitHub இல். கூடுதலாக, எனது சிறிய வலை பயன்பாட்டின் செயல்பாட்டை உறுதி செய்வதற்காக, நான் ஒரு பெரிய குபெர்னெட்ஸ் கிளஸ்டரை நிர்வகிக்க விரும்பவில்லை என்பதை நான் அறிவேன் சிக்கல்கள். வேலையை முடிந்தவரை எளிதாக்கும் இலக்கை அடைய, நான் CI/CD பற்றி நன்கு அறிந்திருக்க வேண்டும்.
உங்களிடம் ஒரு சிறிய திட்டம் இருந்தால் (இந்த விஷயத்தில், ஒரு Node.js திட்டம்) மற்றும் இந்தத் திட்டத்தின் வரிசைப்படுத்தலை எவ்வாறு தானியங்குபடுத்துவது என்பதை நீங்கள் அறிய விரும்புகிறீர்கள், அதே சமயம் களஞ்சியத்தில் சேமித்து வைத்திருப்பது உற்பத்தியில் என்ன வேலை செய்கிறது என்பதை உறுதிசெய்துகொள்ள வேண்டும். இந்த கட்டுரையில் நீங்கள் ஆர்வமாக இருக்கலாம் என்று நினைக்கிறேன்.
முன்நிபந்தனைகள்
இந்தக் கட்டுரையைப் படிப்பவர் கட்டளை வரி மற்றும் பாஷ் ஸ்கிரிப்ட்களை எழுதுவது பற்றிய அடிப்படை புரிதலைப் பெற்றிருப்பார் என்று எதிர்பார்க்கப்படுகிறது. கூடுதலாக, அவருக்கு கணக்குகள் தேவைப்படும் டிராவிஸ் சி.ஐ. и டோக்கர் மையம்.
இலக்குகளை
இந்த கட்டுரையை நிபந்தனையின்றி "பயிற்சி" என்று அழைக்கலாம் என்று நான் கூறமாட்டேன். இது நான் கற்றுக்கொண்டவற்றைப் பற்றி பேசும் ஒரு ஆவணமாகும், மேலும் ஒரு தானியங்கு பாஸில் நிகழ்த்தப்படும் குறியீட்டை சோதனை செய்வதற்கும் தயாரிப்பதற்கும் எனக்கு ஏற்ற செயல்முறையை விவரிக்கிறது.
இதுவே எனது பணிப்பாய்வு முடிந்தது.
தவிர எந்தக் களஞ்சியக் கிளையிலும் இடுகையிடப்பட்ட குறியீட்டிற்கு master, பின்வரும் செயல்கள் செய்யப்படுகின்றன:
டிராவிஸ் CI இல் திட்ட உருவாக்கம் தொடங்குகிறது.
அனைத்து அலகு, ஒருங்கிணைப்பு மற்றும் இறுதி முதல் இறுதி சோதனைகள் செய்யப்படுகின்றன.
விழும் குறியீட்டிற்கு மட்டுமே master, பின்வருபவை செய்யப்படுகின்றன:
மேலே குறிப்பிட்டுள்ள அனைத்தும், மேலும்...
தற்போதைய குறியீடு, அமைப்புகள் மற்றும் சூழலின் அடிப்படையில் டோக்கர் படத்தை உருவாக்குதல்.
படத்தை டோக்கர் ஹப்பில் பயன்படுத்துகிறது.
உற்பத்தி சேவையகத்திற்கான இணைப்பு.
டோக்கர் ஹப்பில் இருந்து சர்வரில் படத்தைப் பதிவேற்றுகிறது.
தற்போதைய கொள்கலனை நிறுத்தி, புதிய படத்தின் அடிப்படையில் புதிய ஒன்றைத் தொடங்குதல்.
டோக்கர், படங்கள் மற்றும் கொள்கலன்கள் பற்றி உங்களுக்கு எதுவும் தெரியாது என்றால், கவலைப்பட வேண்டாம். நான் அதை பற்றி எல்லாம் சொல்கிறேன்.
CI/CD என்றால் என்ன?
CI/CD என்ற சுருக்கமானது "தொடர்ச்சியான ஒருங்கிணைப்பு/தொடர்ச்சியான வரிசைப்படுத்தல்" என்பதைக் குறிக்கிறது.
▍தொடர்ச்சியான ஒருங்கிணைப்பு
தொடர்ச்சியான ஒருங்கிணைப்பு என்பது திட்டத்தின் முக்கிய மூலக் குறியீடு களஞ்சியத்திற்கு டெவலப்பர்கள் உறுதியளிக்கும் ஒரு செயல்முறையாகும் (பொதுவாக ஒரு கிளை master) அதே நேரத்தில், குறியீட்டின் தரம் தானியங்கு சோதனை மூலம் உறுதி செய்யப்படுகிறது.
▍தொடர்ச்சியான வரிசைப்படுத்தல்
தொடர்ச்சியான வரிசைப்படுத்தல் என்பது உற்பத்தியில் குறியீட்டை அடிக்கடி, தானியங்கு வரிசைப்படுத்தல் ஆகும். CI/CD சுருக்கத்தின் இரண்டாம் பகுதி சில நேரங்களில் "தொடர்ச்சியான விநியோகம்" என்று உச்சரிக்கப்படுகிறது. இது அடிப்படையில் "தொடர்ச்சியான வரிசைப்படுத்தல்" போன்றது, ஆனால் "தொடர்ச்சியான விநியோகம்" என்பது திட்ட வரிசைப்படுத்தல் செயல்முறையைத் தொடங்குவதற்கு முன் மாற்றங்களை கைமுறையாக உறுதிப்படுத்த வேண்டியதன் அவசியத்தைக் குறிக்கிறது.
தொடங்குதல்
இதையெல்லாம் கற்றுக்கொள்ள நான் பயன்படுத்திய பயன்பாடு அழைக்கப்படுகிறது குறிப்பு எடுக்க. இது நான் பணிபுரியும் வலைத் திட்டமாகும், குறிப்புகளை எடுப்பதற்காக வடிவமைக்கப்பட்டுள்ளது. முதலில் நான் செய்ய முயற்சித்தேன் ஜாம்ஸ்டாக்-திட்டம், அல்லது சேவையகம் இல்லாத ஒரு முன்-இறுதி பயன்பாடு, அது வழங்கும் நிலையான ஹோஸ்டிங் மற்றும் திட்ட வரிசைப்படுத்தல் திறன்களைப் பயன்படுத்திக் கொள்வதற்காக நெட்லிஃபை. பயன்பாட்டின் சிக்கலானது அதிகரித்ததால், அதன் சேவையகப் பகுதியை நான் உருவாக்க வேண்டியிருந்தது, இதன் பொருள் தானியங்கு ஒருங்கிணைப்பு மற்றும் திட்டத்தின் தானியங்கு வரிசைப்படுத்துதலுக்கான எனது சொந்த மூலோபாயத்தை நான் உருவாக்க வேண்டும்.
என் விஷயத்தில், பயன்பாடு என்பது Node.js சூழலில் இயங்கும் ஒரு எக்ஸ்பிரஸ் சர்வர் ஆகும், இது ஒரு பக்க ரியாக்ட் அப்ளிகேஷனை வழங்குகிறது மற்றும் பாதுகாப்பான சர்வர் பக்க API ஐ ஆதரிக்கிறது. இந்த கட்டிடக்கலையில் காணக்கூடிய உத்தியைப் பின்பற்றுகிறது இந்த முழு அடுக்கு அங்கீகார வழிகாட்டி.
உடன் ஆலோசனை நடத்தினேன் ஒரு நண்பர், ஒரு ஆட்டோமேஷன் நிபுணரான அவர், நான் விரும்பியபடி அனைத்தையும் செய்ய நான் என்ன செய்ய வேண்டும் என்று அவரிடம் கேட்டார். இந்தக் கட்டுரையின் இலக்குகள் பிரிவில் கோடிட்டுக் காட்டப்பட்டுள்ள தானியங்கி பணிப்பாய்வு எப்படி இருக்க வேண்டும் என்ற யோசனையை அவர் எனக்கு வழங்கினார். இந்த இலக்குகளை வைத்திருப்பதால், டோக்கரை எவ்வாறு பயன்படுத்துவது என்பதை நான் கண்டுபிடிக்க வேண்டும்.
கூலியாள்
டோக்கர் என்பது ஒரு கருவியாகும், இது கண்டெய்னரைசேஷன் தொழில்நுட்பத்திற்கு நன்றி, டோக்கர் இயங்குதளம் வெவ்வேறு சூழல்களில் இயங்கினாலும், பயன்பாடுகளை எளிதாக விநியோகிக்க, வரிசைப்படுத்த மற்றும் ஒரே சூழலில் இயக்க அனுமதிக்கிறது. முதலில், நான் டோக்கர் கட்டளை வரி கருவிகளில் (CLI) என் கைகளைப் பெற வேண்டும். அறிவுறுத்தல் டோக்கர் நிறுவல் வழிகாட்டியை மிகவும் தெளிவாகவும் புரிந்துகொள்ளக்கூடியதாகவும் அழைக்க முடியாது, ஆனால் முதல் நிறுவல் படியை எடுக்க, நீங்கள் டோக்கர் டெஸ்க்டாப்பை (மேக் அல்லது விண்டோஸுக்கு) பதிவிறக்கம் செய்ய வேண்டும் என்பதை நீங்கள் அறிந்து கொள்ளலாம்.
டோக்கர் ஹப் தோராயமாக அதே விஷயம் மகிழ்ச்சியா git களஞ்சியங்கள் அல்லது பதிவேட்டில் NPM ஜாவாஸ்கிரிப்ட் தொகுப்புகளுக்கு. இது டோக்கர் படங்களுக்கான ஆன்லைன் களஞ்சியமாகும். இதைத்தான் டோக்கர் டெஸ்க்டாப் இணைக்கிறது.
எனவே, டோக்கரைத் தொடங்குவதற்கு, நீங்கள் இரண்டு விஷயங்களைச் செய்ய வேண்டும்:
இதற்குப் பிறகு, டோக்கர் பதிப்பைச் சரிபார்க்க பின்வரும் கட்டளையை இயக்குவதன் மூலம் டோக்கர் சிஎல்ஐ செயல்படுகிறதா என்பதை நீங்கள் சரிபார்க்கலாம்:
docker -v
அடுத்து, உங்கள் பயனர்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிடுவதன் மூலம் Docker Hub இல் உள்நுழையவும்:
docker login
டோக்கரைப் பயன்படுத்த, படங்கள் மற்றும் கொள்கலன்களின் கருத்துக்களை நீங்கள் புரிந்து கொள்ள வேண்டும்.
▍படங்கள்
படம் என்பது ப்ளூபிரிண்ட் போன்றது, அதில் கொள்கலனை அசெம்பிள் செய்வதற்கான வழிமுறைகள் உள்ளன. இது பயன்பாட்டின் கோப்பு முறைமை மற்றும் அமைப்புகளின் மாறாத ஸ்னாப்ஷாட் ஆகும். டெவலப்பர்கள் படங்களை எளிதாகப் பகிரலாம்.
# Вывод сведений обо всех образах
docker images
இந்த கட்டளை பின்வரும் தலைப்புடன் ஒரு அட்டவணையை வெளியிடும்:
REPOSITORY TAG IMAGE ID CREATED SIZE
---
அடுத்து, அதே வடிவத்தில் உள்ள கட்டளைகளின் சில எடுத்துக்காட்டுகளைப் பார்ப்போம் - முதலில் ஒரு கருத்துடன் ஒரு கட்டளை உள்ளது, பின்னர் அது என்ன வெளியிட முடியும் என்பதற்கான எடுத்துக்காட்டு.
▍ கொள்கலன்கள்
கண்டெய்னர் என்பது இயங்கக்கூடிய தொகுப்பு ஆகும், அதில் ஒரு பயன்பாட்டை இயக்க தேவையான அனைத்தையும் கொண்டுள்ளது. உள்கட்டமைப்பைப் பொருட்படுத்தாமல் இந்த அணுகுமுறையுடன் கூடிய பயன்பாடு எப்போதும் ஒரே மாதிரியாக செயல்படும்: தனிமைப்படுத்தப்பட்ட சூழலில் மற்றும் அதே சூழலில். ஒரே படத்தின் நிகழ்வுகள் வெவ்வேறு சூழல்களில் தொடங்கப்படுகின்றன என்பதுதான் புள்ளி.
# Перечисление всех контейнеров
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
---
▍குறிச்சொற்கள்
குறிச்சொல் என்பது ஒரு படத்தின் குறிப்பிட்ட பதிப்பின் அறிகுறியாகும்.
▍Docker கட்டளைகளுக்கான விரைவான குறிப்பு
பொதுவாகப் பயன்படுத்தப்படும் சில Docker கட்டளைகளின் கண்ணோட்டம் இங்கே உள்ளது.
பயன்படுத்தப்படாத கொள்கலன்கள் மற்றும் படங்களை அகற்றுதல்
▍Dockerfile
உள்நாட்டில் தயாரிப்பு பயன்பாட்டை எவ்வாறு இயக்குவது என்பது எனக்குத் தெரியும். ரெடிமேட் ரியாக்ட் அப்ளிகேஷனை உருவாக்க வடிவமைக்கப்பட்ட வெப்பேக் உள்ளமைவு என்னிடம் உள்ளது. அடுத்து, போர்ட்டில் Node.js அடிப்படையிலான சேவையகத்தைத் தொடங்கும் கட்டளை என்னிடம் உள்ளது 5000. இது போல் தெரிகிறது:
npm i # установка зависимостей
npm run build # сборка React-приложения
npm run start # запуск Node-сервера
இந்த பொருளுக்கான எடுத்துக்காட்டு பயன்பாடு என்னிடம் இல்லை என்பதை கவனத்தில் கொள்ள வேண்டும். ஆனால் இங்கே, சோதனைகளுக்கு, எந்த எளிய நோட் பயன்பாடும் செய்யும்.
கொள்கலனைப் பயன்படுத்த, நீங்கள் டோக்கருக்கு வழிமுறைகளை வழங்க வேண்டும். இது ஒரு கோப்பு மூலம் செய்யப்படுகிறது Dockerfile, திட்டத்தின் ரூட் கோப்பகத்தில் அமைந்துள்ளது. இந்த கோப்பு, முதலில், புரிந்துகொள்ள முடியாததாகத் தெரிகிறது.
ஆனால் அதில் உள்ளவை சிறப்பு கட்டளைகளுடன், பணிச்சூழலை அமைப்பது போன்ற ஒன்றை மட்டுமே விவரிக்கிறது. இந்த கட்டளைகளில் சில இங்கே:
இருந்து — இந்த கட்டளை ஒரு கோப்பை ஆரம்பிக்கிறது. கொள்கலன் கட்டப்பட்ட அடிப்படை படத்தை இது குறிப்பிடுகிறது.
நகல் - உள்ளூர் மூலத்திலிருந்து ஒரு கொள்கலனுக்கு கோப்புகளை நகலெடுக்கிறது.
பணிப்பாளர் - பின்வரும் கட்டளைகளுக்கு வேலை செய்யும் கோப்பகத்தை அமைத்தல்.
ENTRYPOINT - செயல்படுத்தப்பட வேண்டிய கட்டளையின் அறிகுறி.
Dockerfile இது போன்ற ஏதாவது தோன்றலாம்:
# Загрузить базовый образ
FROM node:12-alpine
# Скопировать файлы из текущей директории в директорию app/
COPY . app/
# Использовать app/ в роли рабочей директории
WORKDIR app/
# Установить зависимости (команда npm ci похожа npm i, но используется для автоматизированных сборок)
RUN npm ci --only-production
# Собрать клиентское React-приложение для продакшна
RUN npm run build
# Прослушивать указанный порт
EXPOSE 5000
# Запустить Node-сервер
ENTRYPOINT npm run start
நீங்கள் தேர்ந்தெடுக்கும் அடிப்படை படத்தைப் பொறுத்து, நீங்கள் கூடுதல் சார்புகளை நிறுவ வேண்டியிருக்கும். உண்மை என்னவென்றால், சில அடிப்படை படங்கள் (நோட் ஆல்பைன் லினக்ஸ் போன்றவை) அவற்றை முடிந்தவரை கச்சிதமாக மாற்றும் குறிக்கோளுடன் உருவாக்கப்படுகின்றன. இதன் விளைவாக, நீங்கள் எதிர்பார்க்கும் சில திட்டங்கள் அவர்களிடம் இல்லாமல் இருக்கலாம்.
▍கன்டெய்னரை உருவாக்குதல், குறியிடுதல் மற்றும் இயக்குதல்
லோக்கல் அசெம்பிளி மற்றும் கன்டெய்னரின் துவக்கம் எங்களிடம் உள்ளது Dockerfile, பணிகள் மிகவும் எளிமையானவை. படத்தை டோக்கர் ஹப்பிற்குத் தள்ளும் முன், அதை உள்நாட்டில் சோதிக்க வேண்டும்.
▍சட்டசபை
முதலில் நீங்கள் சேகரிக்க வேண்டும் படத்தை, ஒரு பெயரைக் குறிப்பிடுதல் மற்றும் விருப்பமாக, ஒரு குறிச்சொல் (ஒரு குறிச்சொல் குறிப்பிடப்படாவிட்டால், கணினி தானாகவே படத்திற்கு ஒரு குறிச்சொல்லை ஒதுக்கும் latest).
# Сборка образа
docker build -t <image>:<tag> .
இந்த கட்டளையை இயக்கிய பிறகு, டோக்கர் படத்தை உருவாக்குவதை நீங்கள் பார்க்கலாம்.
Sending build context to Docker daemon 2.88MB
Step 1/9 : FROM node:12-alpine
---> ...выполнение этапов сборки...
Successfully built 123456789123
Successfully tagged <image>:<tag>
உருவாக்கம் இரண்டு நிமிடங்கள் ஆகலாம் - இவை அனைத்தும் உங்களிடம் உள்ள சார்புகளைப் பொறுத்தது. உருவாக்கம் முடிந்ததும், நீங்கள் கட்டளையை இயக்கலாம் docker images உங்கள் புதிய படத்தின் விளக்கத்தைப் பாருங்கள்.
REPOSITORY TAG IMAGE ID CREATED SIZE
<image> latest 123456789123 About a minute ago x.xxGB
▍வெளியீடு
படம் உருவாக்கப்பட்டுள்ளது. இதன் பொருள் நீங்கள் அதன் அடிப்படையில் ஒரு கொள்கலனை இயக்கலாம். ஏனெனில் கன்டெய்னரில் இயங்கும் அப்ளிகேஷனை நான் அணுக வேண்டும் localhost:5000, நான், ஜோடியின் இடது பக்கத்தில் 5000:5000 நிறுவப்பட்ட அடுத்த கட்டளையில் 5000. வலது பக்கத்தில் கொள்கலன் துறைமுகம் உள்ளது.
# Запуск с использованием локального порта 5000 и порта контейнера 5000
docker run -p 5000:5000 <image>:<tag>
இப்போது கொள்கலன் உருவாக்கப்பட்டு இயங்குகிறது, நீங்கள் கட்டளையைப் பயன்படுத்தலாம் docker ps இந்த கொள்கலனைப் பற்றிய தகவலைப் பார்க்க (அல்லது நீங்கள் கட்டளையைப் பயன்படுத்தலாம் docker ps -a, இது அனைத்து கொள்கலன்களைப் பற்றிய தகவலைக் காட்டுகிறது, இயங்கும் மட்டும் அல்ல).
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
987654321234 <image> "/bin/sh -c 'npm run…" 6 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp stoic_darwin
இப்போது முகவரிக்குச் சென்றால் localhost:5000 - இயங்கும் பயன்பாட்டின் பக்கத்தை நீங்கள் பார்க்க முடியும், இது ஒரு உற்பத்தி சூழலில் இயங்கும் பயன்பாட்டின் பக்கத்தைப் போலவே இருக்கும்.
▍குறியிடுதல் மற்றும் வெளியிடுதல்
தயாரிப்பு சேவையகத்தில் உருவாக்கப்பட்ட படங்களில் ஒன்றைப் பயன்படுத்த, இந்த படத்தை டோக்கர் ஹப்பில் இருந்து பதிவிறக்கம் செய்ய வேண்டும். இதன் பொருள் நீங்கள் முதலில் டோக்கர் ஹப்பில் திட்டத்திற்கான களஞ்சியத்தை உருவாக்க வேண்டும். இதற்குப் பிறகு, நாங்கள் படத்தை அனுப்பக்கூடிய இடம் கிடைக்கும். படத்தை மறுபெயரிட வேண்டும், அதன் பெயர் எங்கள் டோக்கர் ஹப் பயனர்பெயரில் தொடங்கும். இதைத் தொடர்ந்து களஞ்சியத்தின் பெயரைக் குறிப்பிட வேண்டும். பெயரின் முடிவில் எந்த குறிச்சொல்லையும் வைக்கலாம். இந்த திட்டத்தைப் பயன்படுத்தி படங்களுக்கு பெயரிடுவதற்கான எடுத்துக்காட்டு கீழே உள்ளது.
இப்போது நீங்கள் ஒரு புதிய பெயரில் படத்தை உருவாக்கலாம் மற்றும் கட்டளையை இயக்கலாம் docker push அதை Docker Hub களஞ்சியத்திற்கு தள்ள.
docker build -t <username>/<repository>:<tag> .
docker tag <username>/<repository>:<tag> <username>/<repository>:latest
docker push <username>/<repository>:<tag>
# На практике это может выглядеть, например, так:
docker build -t user/app:v1.0.0 .
docker tag user/app:v1.0.0 user/app:latest
docker push user/app:v1.0.0
எல்லாம் சரியாக நடந்தால், படம் டோக்கர் ஹப்பில் கிடைக்கும் மற்றும் எளிதாக சர்வரில் பதிவேற்றலாம் அல்லது பிற டெவலப்பர்களுக்கு மாற்றலாம்.
அடுத்த படிகள்
டோக்கர் கொள்கலன் வடிவில் உள்ள பயன்பாடு உள்நாட்டில் இயங்குகிறது என்பதை இப்போது நாங்கள் சரிபார்த்துள்ளோம். கொள்கலனை டோக்கர் ஹப்பில் பதிவேற்றியுள்ளோம். இவையனைத்தும் நமது இலக்கை நோக்கி நாம் ஏற்கனவே நல்ல முன்னேற்றம் அடைந்துவிட்டோம் என்பதாகும். இப்போது நாம் இன்னும் இரண்டு கேள்விகளை தீர்க்க வேண்டும்:
குறியீட்டைச் சோதனை செய்வதற்கும் பயன்படுத்துவதற்கும் CI கருவியை அமைத்தல்.
உற்பத்தி சேவையகத்தை அமைப்பதன் மூலம் அது எங்கள் குறியீட்டை பதிவிறக்கம் செய்து இயக்க முடியும்.
இங்கே நீங்கள் சேவைகளின் மற்றொரு கலவையைப் பயன்படுத்தலாம் என்பதை கவனத்தில் கொள்ள வேண்டும். எடுத்துக்காட்டாக, டிராவிஸ் CIக்கு பதிலாக, நீங்கள் CircleCI அல்லது Github செயல்களைப் பயன்படுத்தலாம். மேலும் DigitalOcean க்கு பதிலாக - AWS அல்லது Linode.
நாங்கள் டிராவிஸ் CI உடன் பணிபுரிய முடிவு செய்துள்ளோம், மேலும் இந்த சேவையில் ஏற்கனவே உள்ளமைக்கப்பட்ட ஒன்று உள்ளது. எனவே, இப்போது அதை வேலைக்கு எவ்வாறு தயாரிப்பது என்பது பற்றி சுருக்கமாகப் பேசுவேன்.
டிராவிஸ் சி.ஐ.
டிராவிஸ் CI என்பது குறியீட்டைச் சோதித்து பயன்படுத்துவதற்கான ஒரு கருவியாகும். டிராவிஸ் சிஐ அமைப்பதில் உள்ள நுணுக்கங்களுக்குச் செல்ல நான் விரும்பவில்லை, ஏனெனில் ஒவ்வொரு திட்டமும் தனித்துவமானது, மேலும் இது அதிக பலனைத் தராது. ஆனால் நீங்கள் டிராவிஸ் CI ஐப் பயன்படுத்த முடிவு செய்தால், நீங்கள் தொடங்குவதற்கான அடிப்படைகளை நான் விவரிக்கிறேன். நீங்கள் Travis CI, CircleCI, Jenkins அல்லது வேறு ஏதாவது ஒன்றைத் தேர்வுசெய்தாலும், எல்லா இடங்களிலும் ஒரே மாதிரியான உள்ளமைவு முறைகள் பயன்படுத்தப்படும்.
டிராவிஸ் CI உடன் தொடங்க, செல்லவும் சேய்ட் புரோக்டா மற்றும் ஒரு கணக்கை உருவாக்கவும். உங்கள் GitHub கணக்குடன் Travis CI ஐ ஒருங்கிணைக்கவும். கணினியை அமைக்கும் போது, நீங்கள் பணியை தானியக்கமாக்கி அதற்கான அணுகலை இயக்க விரும்பும் களஞ்சியத்தைக் குறிப்பிட வேண்டும். (நான் GitHub ஐப் பயன்படுத்துகிறேன், ஆனால் Travis CI ஆனது BitBucket மற்றும் GitLab மற்றும் பிற ஒத்த சேவைகளுடன் ஒருங்கிணைக்க முடியும் என்று நான் உறுதியாக நம்புகிறேன்).
ஒவ்வொரு முறையும் டிராவிஸ் சிஐ தொடங்கும் போது, சர்வர் தொடங்கப்பட்டு, உள்ளமைவு கோப்பில் குறிப்பிடப்பட்டுள்ள கட்டளைகளை செயல்படுத்துகிறது, இதில் தொடர்புடைய களஞ்சிய கிளைகளை வரிசைப்படுத்துவது உட்பட.
▍வேலை வாழ்க்கை சுழற்சி
டிராவிஸ் CI கட்டமைப்பு கோப்பு அழைக்கப்படுகிறது .travis.yml மற்றும் திட்ட ரூட் கோப்பகத்தில் சேமிக்கப்படும், நிகழ்வுகளின் கருத்தை ஆதரிக்கிறது வாழ்க்கை சுழற்சி பணிகள். இந்த நிகழ்வுகள் அவை நிகழும் வரிசையில் பட்டியலிடப்பட்டுள்ளன:
apt addons
cache components
before_install
install
before_script
script
before_cache
after_success или after_failure
before_deploy
deploy
after_deploy
after_script
▍சோதனை
உள்ளமைவு கோப்பில் நான் உள்ளூர் டிராவிஸ் சிஐ சேவையகத்தை உள்ளமைக்கப் போகிறேன். நான் நோட் 12 ஐ மொழியாகத் தேர்ந்தெடுத்து, டோக்கரைப் பயன்படுத்தத் தேவையான சார்புகளை நிறுவுமாறு கணினியிடம் கூறினேன்.
பட்டியலிடப்பட்டுள்ள அனைத்தும் .travis.yml, மற்றபடி குறிப்பிடப்படாவிட்டால், களஞ்சியத்தின் அனைத்து கிளைகளுக்கும் அனைத்து இழுக்கும் கோரிக்கைகள் செய்யப்படும் போது செயல்படுத்தப்படும். இது ஒரு பயனுள்ள அம்சமாகும், ஏனெனில் களஞ்சியத்தில் வரும் அனைத்து குறியீடுகளையும் நாம் சோதிக்க முடியும். குறியீடு கிளைக்கு எழுதத் தயாராக உள்ளதா என்பதை இது உங்களுக்குத் தெரிவிக்கும். master, மற்றும் இது திட்ட உருவாக்க செயல்முறையை உடைக்குமா. இந்த உலகளாவிய கட்டமைப்பில், நான் எல்லாவற்றையும் உள்நாட்டில் நிறுவுகிறேன், பின்னணியில் Webpack dev சேவையகத்தை இயக்குகிறேன் (இது எனது பணிப்பாய்வு அம்சம்), மற்றும் சோதனைகளை இயக்கவும்.
உங்கள் களஞ்சியமானது சோதனைக் கவரேஜைக் குறிக்கும் பேட்ஜ்களைக் காட்ட வேண்டுமெனில், இங்கே இந்தத் தகவலைச் சேகரித்து காண்பிக்க, ஜெஸ்ட், டிராவிஸ் CI மற்றும் Coveralls ஆகியவற்றைப் பயன்படுத்துவதற்கான சிறிய வழிமுறைகளைக் காணலாம்.
எனவே கோப்பின் உள்ளடக்கம் இங்கே .travis.yml:
# Установить язык
language: node_js
# Установить версию Node.js
node_js:
- '12'
services:
# Использовать командную строку Docker
- docker
install:
# Установить зависимости для тестов
- npm ci
before_script:
# Запустить сервер и клиент для тестов
- npm run dev &
script:
# Запустить тесты
- npm run test
களஞ்சியத்தின் அனைத்து கிளைகளுக்கும் மற்றும் இழுக்கும் கோரிக்கைகளுக்கும் செய்யப்படும் செயல்கள் இங்குதான் முடிவடையும்.
▍பயன்படுத்துதல்
அனைத்து தானியங்கு சோதனைகளும் வெற்றிகரமாக முடிவடைந்தன என்ற அனுமானத்தின் அடிப்படையில், விருப்பமானதாக இருந்தால், உற்பத்தி சேவையகத்திற்கு குறியீட்டை வரிசைப்படுத்தலாம். கிளையின் குறியீட்டிற்கு மட்டுமே இதைச் செய்ய விரும்புகிறோம் master, வரிசைப்படுத்தல் அமைப்புகளில் கணினிக்கு பொருத்தமான வழிமுறைகளை வழங்குகிறோம். உங்கள் திட்டப்பணியில் நாங்கள் பார்க்கப்போகும் குறியீட்டை நீங்கள் பயன்படுத்த முயற்சிக்கும் முன், வரிசைப்படுத்தலுக்கு அழைக்கப்படும் உண்மையான ஸ்கிரிப்ட் உங்களிடம் இருக்க வேண்டும் என்று நான் உங்களுக்கு எச்சரிக்க விரும்புகிறேன்.
deploy:
# Собрать Docker-контейнер и отправить его на Docker Hub
provider: script
script: bash deploy.sh
on:
branch: master
வரிசைப்படுத்தல் ஸ்கிரிப்ட் இரண்டு சிக்கல்களைத் தீர்க்கிறது:
CI கருவியைப் பயன்படுத்தி படத்தை உருவாக்கி, குறியிட்டு, டோக்கர் ஹப்பிற்கு அனுப்பவும் (எங்கள் விஷயத்தில், டிராவிஸ் CI).
சர்வரில் படத்தை ஏற்றுதல், பழைய கொள்கலனை நிறுத்தி புதிய ஒன்றைத் தொடங்குதல் (எங்கள் விஷயத்தில், சர்வர் டிஜிட்டல் ஓஷன் இயங்குதளத்தில் இயங்குகிறது).
முதலில், படத்தை உருவாக்குவதற்கும், குறியிடுவதற்கும், டோக்கர் ஹப்பிற்குத் தள்ளுவதற்கும் ஒரு தானியங்கி செயல்முறையை நீங்கள் அமைக்க வேண்டும். படங்களுக்கு தனித்துவமான குறிச்சொற்களை ஒதுக்குவதற்கும் உள்நுழைவுகளை தானியக்கமாக்குவதற்கும் எங்களுக்கு ஒரு உத்தி தேவை என்பதைத் தவிர, நாங்கள் ஏற்கனவே கைமுறையாகச் செய்ததைப் போலவே இதுவும் மிகவும் ஒத்திருக்கிறது. குறியிடல் உத்தி, உள்நுழைவு, SSH விசை குறியாக்கம், SSH இணைப்பு நிறுவுதல் போன்ற வரிசைப்படுத்தல் ஸ்கிரிப்ட்டின் சில விவரங்களில் எனக்கு சிரமம் இருந்தது. ஆனால் அதிர்ஷ்டவசமாக என் காதலன் பல விஷயங்களைப் போலவே பாஷிலும் மிகவும் நல்லவன். இந்த ஸ்கிரிப்டை எழுத அவர் எனக்கு உதவினார்.
எனவே, ஸ்கிரிப்ட்டின் முதல் பகுதி படத்தை டோக்கர் ஹப்பில் பதிவேற்றுகிறது. இதைச் செய்வது மிகவும் எளிதானது. நான் பயன்படுத்திய டேக்கிங் திட்டமானது ஒரு கிட் ஹாஷ் மற்றும் ஜிட் டேக் ஒன்று இருந்தால் அதை இணைப்பதை உள்ளடக்கியது. குறிச்சொல் தனித்தன்மை வாய்ந்தது என்பதை இது உறுதிசெய்து, அதன் அடிப்படையிலான சட்டசபையை எளிதாகக் கண்டறிய உதவுகிறது. DOCKER_USERNAME и DOCKER_PASSWORD டிராவிஸ் CI இடைமுகத்தைப் பயன்படுத்தி அமைக்கக்கூடிய பயனர் சூழல் மாறிகள். டிராவிஸ் CI ஆனது முக்கியமான தரவைத் தானாகவே செயலாக்கும், அதனால் அது தவறான கைகளில் சிக்காது.
ஸ்கிரிப்ட்டின் முதல் பகுதி இங்கே deploy.sh.
#!/bin/sh
set -e # Остановить скрипт при наличии ошибок
IMAGE="<username>/<repository>" # Образ Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-хэш и теги
# Сборка и тегирование образа
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest
# Вход в Docker Hub и выгрузка образа
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
docker push ${IMAGE}:${GIT_VERSION}
ஸ்கிரிப்ட்டின் இரண்டாம் பகுதி என்னவாக இருக்கும் என்பது நீங்கள் எந்த ஹோஸ்டைப் பயன்படுத்துகிறீர்கள் மற்றும் அதனுடனான இணைப்பு எவ்வாறு ஒழுங்கமைக்கப்பட்டுள்ளது என்பதைப் பொறுத்தது. என் விஷயத்தில், நான் டிஜிட்டல் பெருங்கடலைப் பயன்படுத்துவதால், சேவையகத்துடன் இணைக்க கட்டளைகளைப் பயன்படுத்துகிறேன் doctl. AWS உடன் பணிபுரியும் போது, பயன்பாடு பயன்படுத்தப்படும் aws, மற்றும் பல.
சேவையகத்தை அமைப்பது குறிப்பாக கடினமாக இல்லை. எனவே, அடிப்படை படத்தின் அடிப்படையில் ஒரு துளியை அமைத்தேன். நான் தேர்ந்தெடுத்த கணினிக்கு டோக்கரை ஒரு முறை கைமுறையாக நிறுவுதல் மற்றும் டோக்கரின் ஒரு முறை கைமுறை வெளியீடு தேவை என்பதை கவனத்தில் கொள்ள வேண்டும். டோக்கரை நிறுவ உபுண்டு 18.04 ஐப் பயன்படுத்தினேன், எனவே நீங்களும் அதைச் செய்ய உபுண்டுவைப் பயன்படுத்துகிறீர்கள் என்றால், நீங்கள் பின்பற்றலாம். தி எளிய வழிகாட்டி.
சேவைக்கான குறிப்பிட்ட கட்டளைகளைப் பற்றி நான் இங்கு பேசவில்லை, ஏனெனில் இந்த அம்சம் வெவ்வேறு சந்தர்ப்பங்களில் பெரிதும் மாறுபடும். திட்டம் பயன்படுத்தப்படும் சேவையகத்துடன் SSH வழியாக இணைத்த பிறகு செய்ய வேண்டிய பொதுவான செயல் திட்டத்தை நான் தருகிறேன்:
தற்போது இயங்கும் கண்டெய்னரை கண்டுபிடித்து நிறுத்த வேண்டும்.
நீங்கள் பின்னணியில் ஒரு புதிய கொள்கலனை தொடங்க வேண்டும்.
சேவையகத்தின் உள்ளூர் போர்ட்டை நீங்கள் அமைக்க வேண்டும் 80 - இது போன்ற முகவரியில் தளத்தில் நுழைய இது உங்களை அனுமதிக்கும் example.com, போன்ற முகவரியைப் பயன்படுத்துவதை விட, துறைமுகத்தைக் குறிப்பிடாமல் example.com:5000.
இறுதியாக, நீங்கள் அனைத்து பழைய கொள்கலன்களையும் படங்களையும் நீக்க வேண்டும்.
ஸ்கிரிப்ட்டின் தொடர்ச்சி இதோ.
# Найти ID работающего контейнера
CONTAINER_ID=$(docker ps | grep takenote | cut -d" " -f1)
# Остановить старый контейнер, запустить новый, очистить систему
docker stop ${CONTAINER_ID}
docker run --restart unless-stopped -d -p 80:5000 ${IMAGE}:${GIT_VERSION}
docker system prune -a -f
கவனிக்க வேண்டிய சில விஷயங்கள்
டிராவிஸ் CI இலிருந்து SSH வழியாக சேவையகத்துடன் இணைக்கும்போது, கணினி பயனரின் பதிலுக்காகக் காத்திருக்கும் என்பதால், நிறுவலைத் தொடர்வதைத் தடுக்கும் எச்சரிக்கையை நீங்கள் காண்பீர்கள்.
The authenticity of host '<hostname> (<IP address>)' can't be established.
RSA key fingerprint is <key fingerprint>.
Are you sure you want to continue connecting (yes/no)?
ஒரு சரம் விசையை பேஸ்64ல் குறியாக்கம் செய்து, அதை வசதியாகவும் நம்பகத்தன்மையுடனும் வேலை செய்யக்கூடிய வடிவத்தில் சேமிக்க முடியும் என்பதை அறிந்தேன். நிறுவல் கட்டத்தில், நீங்கள் பொது விசையை டிகோட் செய்து அதை ஒரு கோப்பில் எழுதலாம் known_hosts மேலே உள்ள பிழையிலிருந்து விடுபடுவதற்காக.
இணைப்பை நிறுவும் போது அதே அணுகுமுறையை தனிப்பட்ட விசையுடன் பயன்படுத்தலாம், ஏனெனில் சேவையகத்தை அணுக உங்களுக்கு தனிப்பட்ட விசை தேவைப்படலாம். விசையுடன் பணிபுரியும் போது, அது ஒரு டிராவிஸ் CI சூழல் மாறியில் பாதுகாப்பாக சேமிக்கப்படுவதையும் அது எங்கும் காட்டப்படாமல் இருப்பதையும் உறுதிப்படுத்த வேண்டும்.
கவனிக்க வேண்டிய மற்றொரு விஷயம் என்னவென்றால், நீங்கள் முழு வரிசைப்படுத்தல் ஸ்கிரிப்டையும் ஒரு வரியாக இயக்க வேண்டியிருக்கும், எடுத்துக்காட்டாக - உடன் doctl. இதற்கு சில கூடுதல் முயற்சி தேவைப்படலாம்.
doctl compute ssh <droplet> --ssh-command "все команды будут здесь && здесь"
TLS/SSL மற்றும் சுமை சமநிலை
மேலே குறிப்பிட்டுள்ள அனைத்தையும் நான் செய்த பிறகு, நான் சந்தித்த கடைசி சிக்கல் என்னவென்றால், சர்வரில் SSL இல்லை. நான் ஒரு Node.js சேவையகத்தைப் பயன்படுத்துவதால், கட்டாயப்படுத்துவதற்காக வேலை செய்ய reverse proxy Nginx மற்றும் Let's Encrypt, நீங்கள் நிறைய டிங்கர் செய்ய வேண்டும்.
இந்த SSL உள்ளமைவை கைமுறையாகச் செய்ய நான் உண்மையில் விரும்பவில்லை, எனவே நான் ஒரு சுமை சமநிலையை உருவாக்கி அதன் விவரங்களை DNS இல் பதிவு செய்தேன். எடுத்துக்காட்டாக, DigitalOcean விஷயத்தில், லோட் பேலன்சரில் தானாகப் புதுப்பிக்கும் சுய-கையொப்பமிடப்பட்ட சான்றிதழை உருவாக்குவது எளிமையான, இலவசம் மற்றும் விரைவான செயல்முறையாகும். இந்த அணுகுமுறை கூடுதல் நன்மையைக் கொண்டுள்ளது, தேவைப்பட்டால் சுமை சமநிலைக்கு பின்னால் இயங்கும் பல சேவையகங்களில் SSL ஐ அமைப்பதை இது மிகவும் எளிதாக்குகிறது. இது SSL பற்றி "சிந்திக்க" சேவையகங்களை அனுமதிக்கிறது, ஆனால் அதே நேரத்தில் வழக்கம் போல் போர்ட்டைப் பயன்படுத்துகிறது. 80. எனவே SSL ஐ அமைப்பதற்கான மாற்று முறைகளை விட சுமை சமநிலையில் SSL அமைப்பது மிகவும் எளிதானது மற்றும் வசதியானது.
இப்போது நீங்கள் உள்வரும் இணைப்புகளை ஏற்கும் சர்வரில் உள்ள அனைத்து போர்ட்களையும் மூடலாம் - போர்ட் தவிர 80, லோட் பேலன்சர் மற்றும் போர்ட்டுடன் தொடர்பு கொள்ள பயன்படுகிறது 22 SSH க்கான. இதன் விளைவாக, இந்த இரண்டைத் தவிர வேறு எந்த போர்ட்களிலும் சேவையகத்தை நேரடியாக அணுகும் முயற்சி தோல்வியடையும்.
முடிவுகளை
இந்த உள்ளடக்கத்தில் நான் பேசிய அனைத்தையும் செய்த பிறகு, டோக்கர் இயங்குதளமோ அல்லது தானியங்கு சிஐ/சிடி சங்கிலிகளின் கருத்துகளோ என்னை பயமுறுத்தவில்லை. தொடர்ச்சியான ஒருங்கிணைப்புச் சங்கிலியை என்னால் அமைக்க முடிந்தது, இதன் போது குறியீடு உற்பத்திக்குச் செல்வதற்கு முன்பு சோதிக்கப்பட்டது மற்றும் குறியீடு தானாகவே சேவையகத்தில் பயன்படுத்தப்படும். இவை அனைத்தும் எனக்கு ஒப்பீட்டளவில் புதியது, மேலும் எனது தானியங்கு பணிப்பாய்வுகளை மேம்படுத்துவதற்கும் அதை மேலும் திறமையாக்குவதற்கும் வழிகள் உள்ளன என்பதில் நான் உறுதியாக உள்ளேன். எனவே இந்த விஷயத்தில் உங்களுக்கு ஏதேனும் யோசனைகள் இருந்தால், எனக்கு தெரியப்படுத்துங்கள். என்னை தெரியும். உங்கள் முயற்சிகளில் இந்தக் கட்டுரை உங்களுக்கு உதவியிருக்கும் என்று நம்புகிறேன். அதைப் படித்த பிறகு, நான் அதில் பேசியதை எல்லாம் கண்டுபிடிக்கும் போது நான் கற்றுக்கொண்டதை நீங்கள் கற்றுக்கொண்டீர்கள் என்று நான் நம்ப விரும்புகிறேன்.
சோசலிஸ்ட் கட்சி எங்கள் சந்தை ஒரு படம் உள்ளது கூலியாள், இது ஒரே கிளிக்கில் நிறுவப்படலாம். கொள்கலன்களின் செயல்பாட்டை நீங்கள் சரிபார்க்கலாம் VPS வாக்குமூலம். அனைத்து புதிய வாடிக்கையாளர்களுக்கும் 3 நாட்கள் சோதனை இலவசமாக வழங்கப்படுகிறது.
அன்புள்ள வாசகர்கள்! உங்கள் திட்டங்களில் CI/CD தொழில்நுட்பங்களைப் பயன்படுத்துகிறீர்களா?