லினக்ஸில் .NET கோர், குதிரையில் DevOps

எங்களால் முடிந்தவரை DevOps ஐ உருவாக்கினோம். நாங்கள் 8 பேர் இருந்தோம், விண்டோஸில் வாஸ்யா மிகச்சிறந்தவர். திடீரென்று வாஸ்யா வெளியேறினார், விண்டோஸ் மேம்பாட்டால் வழங்கப்பட்ட புதிய திட்டத்தைத் தொடங்கும் பணி எனக்கு இருந்தது. விண்டோஸ் டெவலப்மெண்ட் ஸ்டாக் முழுவதையும் மேசையில் போட்டபோது, ​​நிலைமை வேதனையாக இருப்பதை உணர்ந்தேன்...

இப்படித்தான் கதை ஆரம்பிக்கிறது அலெக்ஸாண்ட்ரா சிஞ்சினோவா மீது DevOpsConf. முன்னணி விண்டோஸ் நிபுணர் நிறுவனத்தை விட்டு வெளியேறியபோது, ​​​​அலெக்சாண்டர் இப்போது என்ன செய்வது என்று யோசித்தார். லினக்ஸுக்கு மாறுங்கள், நிச்சயமாக! 100 இறுதிப் பயனர்களுக்கான நிறைவு செய்யப்பட்ட திட்டத்தின் எடுத்துக்காட்டைப் பயன்படுத்தி விண்டோஸ் மேம்பாட்டின் ஒரு பகுதியை லினக்ஸுக்கு மாற்றவும், ஒரு முன்மாதிரியை எவ்வாறு உருவாக்கினார் என்பதை அலெக்சாண்டர் உங்களுக்குக் கூறுவார்.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

TFS, Puppet, Linux .NET கோர் ஆகியவற்றைப் பயன்படுத்தி RPM க்கு ஒரு திட்டத்தை எளிதாகவும் சிரமமின்றி வழங்குவது எப்படி? போஸ்ட்கிரெஸ் மற்றும் ஃப்ளைவே என்ற வார்த்தைகளை டெவலப்மென்ட் குழு முதன்முறையாகக் கேட்டால், திட்டத் தரவுத்தளத்தின் பதிப்பை எவ்வாறு ஆதரிப்பது? டோக்கருடன் எவ்வாறு ஒருங்கிணைப்பது? பப்பட் மற்றும் லினக்ஸுக்கு ஆதரவாக விண்டோஸ் மற்றும் ஸ்மூத்திகளை கைவிட .NET டெவலப்பர்களை ஊக்குவிப்பது எப்படி? உற்பத்தியில் விண்டோஸைப் பராமரிக்க வலிமையோ, விருப்பமோ, வளமோ இல்லாவிட்டால் கருத்தியல் மோதல்களைத் தீர்ப்பது எப்படி? இதைப் பற்றி, அத்துடன் Web Deploy, testing, CI, ஏற்கனவே உள்ள திட்டங்களில் TFS ஐப் பயன்படுத்துவதற்கான நடைமுறைகள் மற்றும், நிச்சயமாக, உடைந்த ஊன்றுகோல் மற்றும் வேலை தீர்வுகள் பற்றி, அலெக்சாண்டரின் அறிக்கையின் டிரான்ஸ்கிரிப்டில்.


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

லினக்ஸில் .NET கோர், குதிரையில் DevOps

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

ஏன் .NET கோர் லினக்ஸுடன் இணைந்து?

இதற்குப் பல காரணங்கள் இருந்தன. "பணம் செலுத்துங்கள்" மற்றும் "பணம் செலுத்த வேண்டாம்" இடையே, பெரும்பான்மையானவர்கள் என்னைப் போலவே இரண்டாவதாகத் தேர்ந்தெடுப்பார்கள். MSDBக்கான உரிமம் சுமார் $1 செலவாகும்; விண்டோஸ் மெய்நிகர் இயந்திரங்களின் தொகுப்பை பராமரிக்க நூற்றுக்கணக்கான டாலர்கள் செலவாகும். ஒரு பெரிய நிறுவனத்திற்கு இது ஒரு பெரிய செலவு. அதனால் தான் சேமிப்பு - முதல் காரணம். மிக முக்கியமானது அல்ல, ஆனால் குறிப்பிடத்தக்க ஒன்று.

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

இந்த அமைப்பு தற்போதுள்ள CI இல் வெறுமனே ஒருங்கிணைக்கப்பட்டுள்ளது. நாங்கள் முற்போக்கான DevOps என்று கருதுகிறோம், நாங்கள் மூங்கில், ஜென்கின்ஸ் மற்றும் GitLab CI ஐப் பயன்படுத்துகிறோம், எனவே எங்கள் பெரும்பாலான வேலைகள் Linux இல் இயங்குகின்றன.

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

தேவைகள்

முதலிலும் முக்கியமானதுமாக - டெவலப்பர்களுக்கான புதிய தீர்வின் வசதி. குறிப்பாக லினக்ஸ் என்ற வார்த்தை பேசப்பட்ட பிறகு அவர்கள் அனைவரும் மாற்றத்திற்கு தயாராக இல்லை. டெவலப்பர்கள் தங்களுக்குப் பிடித்த விஷுவல் ஸ்டுடியோ, அசெம்பிளிகள் மற்றும் ஸ்மூத்திகளுக்கான ஆட்டோடெஸ்ட்களுடன் கூடிய TFSஐ விரும்புகிறார்கள். உற்பத்திக்கு விநியோகம் எப்படி நிகழ்கிறது என்பது அவர்களுக்கு முக்கியமில்லை. எனவே, வழக்கமான செயல்முறையை மாற்ற வேண்டாம் என்றும், விண்டோஸ் மேம்பாட்டிற்காக எல்லாவற்றையும் மாற்றாமல் விடவும் முடிவு செய்தோம்.

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

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

காலக்கெடு - நேற்று.

அபிவிருத்தி குழுவை வெல்லுங்கள்

அப்போது விண்டோஸ் குழு என்ன வேலை செய்து கொண்டிருந்தது?

லினக்ஸில் .NET கோர், குதிரையில் DevOps

இப்போது என்னால் நம்பிக்கையுடன் சொல்ல முடியும் அடையாள சேவையகம்4 ADFS க்கு ஒரே மாதிரியான திறன்களைக் கொண்ட இலவச மாற்று, அல்லது என்ன நிறுவன கட்டமைப்பு கோர் - டெவலப்பருக்கான சொர்க்கம், அங்கு நீங்கள் SQL ஸ்கிரிப்ட்களை எழுதுவதில் சிரமப்பட வேண்டியதில்லை, ஆனால் தரவுத்தளத்தில் உள்ள வினவல்களை OOP விதிமுறைகளில் விவரிக்கவும். ஆனால், செயல்திட்டத்தின் விவாதத்தின் போது, ​​சுமேரிய கியூனிஃபார்ம் போல இந்த அடுக்கைப் பார்த்தேன், PostgreSQL மற்றும் Git ஆகியவற்றை மட்டுமே அங்கீகரித்தேன்.

அந்த நேரத்தில் நாங்கள் தீவிரமாக பயன்படுத்தினோம் பப்பட் ஒரு கட்டமைப்பு மேலாண்மை அமைப்பாக. எங்கள் பெரும்பாலான திட்டங்களில் நாங்கள் பயன்படுத்தினோம் கிட்லாப் சி.ஐ., மீள்தன்மை, சீரான உயர்-சுமை சேவைகளைப் பயன்படுத்தி HAProxy உடன் அனைத்தையும் கண்காணித்தார் Zabbix, தசைநார்கள் கிரபனா и பிரமீதீயஸ், ஜேகர், இவை அனைத்தும் இரும்புத் துண்டுகளில் சுழன்று கொண்டிருந்தன HPESXi மீது , VMware. இது அனைவருக்கும் தெரியும் - வகையின் உன்னதமானது.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

இந்த தலையீடுகள் அனைத்தையும் தொடங்குவதற்கு முன்பு என்ன நடக்கிறது என்பதைப் புரிந்து கொள்ள முயற்சிப்போம்.

என்ன நடந்தது

TFS என்பது மிகவும் சக்திவாய்ந்த அமைப்பாகும், இது டெவலப்பரிடமிருந்து இறுதி உற்பத்தி இயந்திரத்திற்கு குறியீட்டை வழங்குவது மட்டுமல்லாமல், பல்வேறு சேவைகளுடன் மிகவும் நெகிழ்வான ஒருங்கிணைப்புக்கான தொகுப்பையும் கொண்டுள்ளது - குறுக்கு-தளம் மட்டத்தில் CI ஐ வழங்க.

லினக்ஸில் .NET கோர், குதிரையில் DevOps
முன்பு, இவை திடமான ஜன்னல்கள். TFS பல பில்ட் முகவர்களைப் பயன்படுத்தியது, அவை பல திட்டங்களைச் சேகரிக்கப் பயன்படுத்தப்பட்டன. ஒவ்வொரு முகவருக்கும் 3-4 பணியாளர்கள் பணிகளுக்கு இணையாக மற்றும் செயல்முறையை மேம்படுத்துகின்றனர். பின்னர், வெளியீட்டுத் திட்டங்களின்படி, TFS புதிதாக சுடப்பட்ட கட்டமைப்பை விண்டோஸ் பயன்பாட்டு சேவையகத்திற்கு வழங்கியது.

நாம் எதை அடைய விரும்பினோம்?

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

திட்டம்

ப்ரீபெய்ட் கார்டுகளை கையாளும் செயல்பாட்டை இந்த பயன்பாடு வழங்குகிறது.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

கிளையண்ட்

இரண்டு வகையான பயனர்கள் இருந்தனர். முதல் SSL SHA-2 சான்றிதழைப் பயன்படுத்தி உள்நுழைவதன் மூலம் அணுகலைப் பெற்றார். யு இரண்டாவது உள்நுழைவு மற்றும் கடவுச்சொல்லைப் பயன்படுத்தி அணுகல் இருந்தது.

HAProxy

கிளையன்ட் கோரிக்கை HAProxy க்கு சென்றது, இது பின்வரும் சிக்கல்களைத் தீர்த்தது:

  • முதன்மை அங்கீகாரம்;
  • SSL முடித்தல்;
  • HTTP கோரிக்கைகளை சரிசெய்தல்;
  • ஒலிபரப்பு கோரிக்கைகள்.

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

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

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

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

HAProxy மூலம் சேமிப்பு

ஒவ்வொரு வாடிக்கையாளரும் வழிநடத்திய இரண்டு சூழல்களுக்கு கூடுதலாக, ஒரு அடையாளச் சூழலும் இருந்தது. அடையாள சேவையகம்4 உள்நுழைய உங்களை அனுமதிக்கிறது, இது ஒரு இலவச மற்றும் சக்திவாய்ந்த அனலாக் ஆகும் ஏடிஎஃப்எஸ் - செயலில் உள்ள அடைவு கூட்டமைப்பு சேவைகள்.

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

இரண்டாவது படி - கோரிக்கை பெறப்பட்டது IdentityServer இல் உள்ள அங்கீகாரப் பக்கத்திற்கு, வாடிக்கையாளர் பதிவுசெய்த இடத்தில், நீண்டகாலமாக எதிர்பார்க்கப்பட்ட டோக்கன் IdentityServer தரவுத்தளத்தில் தோன்றியது.

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

லினக்ஸில் .NET கோர், குதிரையில் DevOps

IdentityServer4 ஒரு அம்சத்தைக் கொண்டுள்ளது: இது HTTP வழியாக திரும்பும் கோரிக்கைக்கான பதிலை வழங்குகிறது. சேவையகத்தை அமைப்பதில் நாங்கள் எவ்வளவு சிரமப்பட்டாலும், ஆவணங்கள் மூலம் நம்மை நாமே தெளிவுபடுத்தியிருந்தாலும், ஒவ்வொரு முறையும் HTTPS வழியாக வந்த URL மூலம் ஆரம்ப கிளையன்ட் கோரிக்கையைப் பெறுகிறோம், மேலும் IdentityServer அதே சூழலை, ஆனால் HTTP உடன் வழங்கியது. நாங்கள் அதிர்ச்சியடைந்தோம்! இதையெல்லாம் அடையாளச் சூழல் மூலம் HAProxy க்கு மாற்றினோம், மேலும் தலைப்புகளில் HTTP நெறிமுறையை HTTPS ஆக மாற்ற வேண்டும்.

என்ன முன்னேற்றம் மற்றும் எங்கு சேமித்தீர்கள்?

IdentityServer4 ஐ ஒரு தனிப் பிரிவில் தனி முனையாக வைக்காமல், பயன்பாட்டின் பின்தளம் இயங்கும் அதே சர்வரில் பேக்கெண்டுடன் சேர்த்துப் பயன்படுத்துவதால், பயனர்கள் குழுவை, ஆதாரங்களை அங்கீகரிக்கும் இலவச தீர்வைப் பயன்படுத்தி பணத்தைச் சேமித்தோம். .

அது எவ்வாறு செயல்பட வேண்டும்

எனவே, நான் உறுதியளித்தபடி - மேஜிக் பாக்ஸ். லினக்ஸை நோக்கிச் செல்வது உறுதி என்பதை நாங்கள் ஏற்கனவே புரிந்துகொண்டோம். தீர்வுகள் தேவைப்படும் குறிப்பிட்ட பணிகளை உருவாக்குவோம்.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

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

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

பதிப்பு. நாங்கள் அடிக்கடி வெளியிட வேண்டியிருந்தது, மேலும் தொகுப்பின் பெயரை எவ்வாறு உருவாக்குவது என்பதை நாங்கள் தீர்மானிக்க வேண்டியிருந்தது. இது TFS உடனான ஒருங்கிணைப்பு நிலை பற்றிய கேள்வி. எங்களிடம் லினக்ஸில் ஒரு பில்ட் ஏஜென்ட் இருந்தது. டிஎஃப்எஸ் ஒரு பணியை ஒரு ஹேண்ட்லருக்கு - தொழிலாளிக்கு - பில்ட் ஏஜெண்டிற்கு அனுப்பும்போது, ​​அது ஹேண்ட்லர் செயல்முறையின் சூழலில் முடிவடையும் மாறிகளின் கூட்டத்தையும் அனுப்புகிறது. இந்த சூழல் மாறிகள் பில்ட் பெயர், பதிப்பு பெயர் மற்றும் பிற மாறிகள் கொண்டிருக்கும். "ஆர்பிஎம் தொகுப்பை உருவாக்குதல்" பிரிவில் இதைப் பற்றி மேலும் படிக்கவும்.

TFS ஐ அமைத்தல் பைப்லைன் அமைக்க இறங்கியது. முன்னதாக, விண்டோஸ் ஏஜெண்டுகளில் அனைத்து விண்டோஸ் ப்ராஜெக்ட்களையும் நாங்கள் சேகரித்தோம், ஆனால் இப்போது ஒரு லினக்ஸ் ஏஜென்ட் தோன்றுகிறது - ஒரு பில்ட் ஏஜென்ட், இது பில்ட் குழுவில் சேர்க்கப்பட வேண்டும், சில கலைப்பொருட்களால் செறிவூட்டப்பட்டு, இந்த பில்ட் ஏஜெண்டில் என்ன வகையான திட்டங்கள் உருவாக்கப்படும் என்று கூறப்பட்டது. , மற்றும் எப்படியாவது பைப்லைனை மாற்றவும்.

அடையாள சேவையகம். ADFS எங்கள் வழி அல்ல, நாங்கள் திறந்த மூலத்திற்கு செல்கிறோம்.

கூறுகள் வழியாக செல்லலாம்.

மேஜிக் பெட்டி

நான்கு பகுதிகளைக் கொண்டது.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

லினக்ஸ் பில்ட் ஏஜென்ட். லினக்ஸ், ஏனென்றால் நாங்கள் அதை உருவாக்குகிறோம் - இது தர்க்கரீதியானது. இந்த பகுதி மூன்று படிகளில் செய்யப்பட்டது.

  • தொழிலாளர்களை கட்டமைக்கவும் திட்டத்தில் விநியோகிக்கப்பட்ட பணிகள் எதிர்பார்க்கப்பட்டதால் தனியாக அல்ல.
  • .NET கோர் 1.x ஐ நிறுவவும். 1 ஏற்கனவே நிலையான களஞ்சியத்தில் இருக்கும்போது 2.0.x ஏன்? ஏனென்றால் நாங்கள் உருவாக்கத் தொடங்கியபோது, ​​நிலையான பதிப்பு 1.09 ஆக இருந்தது, அதன் அடிப்படையில் திட்டத்தை உருவாக்க முடிவு செய்யப்பட்டது.
  • Git 2.x.

RPM- களஞ்சியம். RPM தொகுப்புகள் எங்காவது சேமிக்கப்பட வேண்டும். அனைத்து லினக்ஸ் ஹோஸ்ட்களுக்கும் கிடைக்கும் அதே கார்ப்பரேட் RPM களஞ்சியத்தை நாங்கள் பயன்படுத்துவோம் என்று கருதப்பட்டது. அதைத்தான் செய்தார்கள். களஞ்சிய சேவையகம் கட்டமைக்கப்பட்டுள்ளது வெப்ஹூக் குறிப்பிட்ட இடத்திலிருந்து தேவையான RPM தொகுப்பை பதிவிறக்கம் செய்தது. தொகுப்பு பதிப்பு Webhook க்கு Build முகவரால் தெரிவிக்கப்பட்டது.

கிட்லாப். கவனம்! GitLab இங்கே டெவலப்பர்களால் அல்ல, ஆனால் செயல்பாட்டுத் துறையால் பயன்பாட்டு பதிப்புகள், தொகுப்பு பதிப்புகள், அனைத்து லினக்ஸ் இயந்திரங்களின் நிலையை கண்காணிக்கவும், செய்முறையை சேமிக்கிறது - அனைத்து பப்பட் மேனிஃபெஸ்ட்டும்.

பப்பட் — அனைத்து சர்ச்சைக்குரிய சிக்கல்களையும் தீர்க்கிறது மற்றும் கிட்லாப்பில் இருந்து நாம் விரும்பும் உள்ளமைவை சரியாக வழங்குகிறது.

நாங்கள் டைவ் செய்ய ஆரம்பிக்கிறோம். RPM க்கு DLL டெலிவரி எப்படி வேலை செய்கிறது?

RPM க்கு DDL டெலிவரி

எங்களிடம் .NET டெவலப்மென்ட் ராக் ஸ்டார் உள்ளது என்று வைத்துக்கொள்வோம். இது விஷுவல் ஸ்டுடியோவைப் பயன்படுத்துகிறது மற்றும் வெளியீட்டு கிளையை உருவாக்குகிறது. அதன் பிறகு, அது அதை Git இல் பதிவேற்றுகிறது, மேலும் Git இங்கே ஒரு TFS நிறுவனம் ஆகும், அதாவது இது டெவலப்பர் வேலை செய்யும் பயன்பாட்டு களஞ்சியமாகும்.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

அதன் பிறகு ஒரு புதிய கமிட் வந்திருப்பதை TFS பார்க்கிறது. எந்த ஆப்ஸ்? TFS அமைப்புகளில் ஒரு குறிப்பிட்ட பில்ட் ஏஜென்ட் என்ன ஆதாரங்களைக் கொண்டுள்ளது என்பதைக் குறிக்கும் லேபிள் உள்ளது. இந்நிலையில், .NET Core ப்ராஜெக்ட் ஒன்றை உருவாக்கி வருவதைப் பார்த்து, குளத்தில் இருந்து Linux Build முகவரைத் தேர்ந்தெடுக்கிறார்.

பில்ட் ஏஜென்ட் ஆதாரங்களைப் பெற்று தேவையானவற்றைப் பதிவிறக்குகிறார் சார்புகள் .NET களஞ்சியத்தில் இருந்து, npm, முதலியன பயன்பாடு மற்றும் அதைத் தொடர்ந்து பேக்கேஜிங் செய்த பிறகு, RPM தொகுப்பை RPM களஞ்சியத்திற்கு அனுப்புகிறது.

மறுபுறம், பின்வருபவை நடக்கும். செயல்பாட்டுத் துறை பொறியாளர் திட்டத்தின் வெளியீட்டில் நேரடியாக ஈடுபட்டுள்ளார்: அவர் தொகுப்புகளின் பதிப்புகளை மாற்றுகிறார் ஹீரா பயன்பாட்டு செய்முறை சேமிக்கப்பட்ட களஞ்சியத்தில், அதன் பிறகு பப்பட் தூண்டுகிறது யூம், களஞ்சியத்திலிருந்து புதிய தொகுப்பைப் பெறுகிறது, மேலும் பயன்பாட்டின் புதிய பதிப்பு பயன்படுத்தத் தயாராக உள்ளது.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

வார்த்தைகளில் எல்லாம் எளிமையானது, ஆனால் பில்ட் ஏஜெண்டிற்குள் என்ன நடக்கிறது?

பேக்கேஜிங் DLL RPM

TFS இலிருந்து திட்ட ஆதாரங்கள் மற்றும் கட்டுமானப் பணியைப் பெறப்பட்டது. உருவாக்க முகவர் மூலங்களிலிருந்து திட்டத்தை உருவாக்கத் தொடங்குகிறது. கூடியிருந்த திட்டம் ஒரு தொகுப்பாக கிடைக்கிறது DLL கோப்புகள், கோப்பு முறைமையின் சுமையை குறைக்க ஜிப் காப்பகத்தில் தொகுக்கப்பட்டுள்ளது.

ZIP காப்பகம் தூக்கி எறியப்பட்டது RPM தொகுப்பு உருவாக்க கோப்பகத்திற்கு. அடுத்து, பாஷ் ஸ்கிரிப்ட் சூழல் மாறிகளை துவக்குகிறது, பில்ட் பதிப்பு, ப்ராஜெக்ட் பதிப்பு, பில்ட் டைரக்டரிக்கான பாதை ஆகியவற்றைக் கண்டறிந்து, RPM-பில்டை இயக்குகிறது. உருவாக்கம் முடிந்ததும், தொகுப்பு வெளியிடப்படும் உள்ளூர் களஞ்சியம், இது பில்ட் ஏஜென்டில் அமைந்துள்ளது.

அடுத்து, பில்ட் ஏஜென்டில் இருந்து RPM களஞ்சியத்தில் உள்ள சேவையகத்திற்கு JSON கோரிக்கை அனுப்பப்பட்டது பதிப்பு மற்றும் கட்டமைப்பின் பெயரைக் குறிக்கிறது. நான் முன்பு பேசிய Webhook, இந்த தொகுப்பை பில்ட் ஏஜெண்டில் உள்ள உள்ளூர் களஞ்சியத்திலிருந்து பதிவிறக்கம் செய்து, புதிய அசெம்பிளியை நிறுவுவதற்கு கிடைக்கச் செய்கிறது.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

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

தரவுத்தள பதிப்பு

மேம்பாட்டுக் குழுவுடனான ஆலோசனையில், தோழர்களே MS SQL உடன் நெருக்கமாக இருந்தனர், ஆனால் பெரும்பாலான விண்டோஸ் அல்லாத திட்டங்களில் நாங்கள் ஏற்கனவே PostgreSQL ஐ அவர்களின் முழு பலத்துடன் பயன்படுத்துகிறோம். நாங்கள் ஏற்கனவே பணம் செலுத்திய அனைத்தையும் கைவிட முடிவு செய்திருந்ததால், இங்கேயும் PostgreSQL ஐப் பயன்படுத்தத் தொடங்கினோம்.

லினக்ஸில் .NET கோர், குதிரையில் DevOps

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

Минусы

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

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

என்டிட்டி ஃபிரேம்வொர்க் கோர் மைனஸைக் கொண்டுள்ளது - அதிக சுமைகளில் அது உள்ளது துணைநிலை SQL வினவல்களை உருவாக்குகிறது, மற்றும் தரவுத்தளத்தில் உள்ள வரவு குறிப்பிடத்தக்கதாக இருக்கலாம். ஆனால் எங்களிடம் அதிக சுமை சேவை இல்லாததால், நூற்றுக்கணக்கான RPSகளில் சுமைகளை நாங்கள் கணக்கிடவில்லை, இந்த அபாயங்களை நாங்கள் ஏற்றுக்கொண்டோம் மற்றும் எதிர்காலத்தில் சிக்கலை எங்களுக்கு வழங்கினோம்.

Плюсы

நிறுவன கட்டமைப்பு கோர் பெட்டிக்கு வெளியே வேலை செய்கிறது மற்றும் உருவாக்க எளிதானது, மற்றும் ஃப்ளைவே ஏற்கனவே உள்ள CI உடன் எளிதாக ஒருங்கிணைக்கிறது. ஆனால் நாங்கள் அதை டெவலப்பர்களுக்கு வசதியாக செய்கிறோம் :)

ரோல்-அப் செயல்முறை

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

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

TFS சிக்கல்கள்

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

முக்கிய திட்டங்களில் ஒன்று ஒன்றுசேர 12-15 நிமிடங்கள் ஆகும் - அது நீண்ட நேரம், நீங்கள் அப்படி வாழ முடியாது. விரைவான பகுப்பாய்வு I/O இல் ஒரு பயங்கரமான பின்னடைவைக் காட்டியது, மேலும் இது வரிசைகளில் இருந்தது.

கூறுகளின் அடிப்படையில் அதன் கூறுகளை பகுப்பாய்வு செய்த பிறகு, நான் மூன்று மையங்களை அடையாளம் கண்டேன். முதலில் - "காஸ்பர்ஸ்கி வைரஸ் தடுப்பு", இது அனைத்து Windows Build முகவர்களிலும் உள்ள ஆதாரங்களை ஸ்கேன் செய்கிறது. இரண்டாவது - விண்டோஸ் இண்டெக்சர். இது முடக்கப்படவில்லை, மேலும் வரிசைப்படுத்தல் செயல்பாட்டின் போது பில்ட் ஏஜெண்டுகளில் அனைத்தும் நிகழ்நேரத்தில் அட்டவணைப்படுத்தப்பட்டன.

மூன்றாவது - Npm நிறுவல். பெரும்பாலான பைப்லைன்களில் இந்த சரியான காட்சியைப் பயன்படுத்தினோம். அவர் ஏன் மோசமானவர்? சார்பு மரம் உருவாகும்போது Npm நிறுவல் செயல்முறை இயக்கப்படுகிறது தொகுப்பு-பூட்டு. json, திட்டத்தை உருவாக்கப் பயன்படுத்தப்படும் தொகுப்புகளின் பதிப்புகள் பதிவு செய்யப்படுகின்றன. எதிர்மறையானது என்னவென்றால், Npm நிறுவல் ஒவ்வொரு முறையும் இணையத்திலிருந்து தொகுப்புகளின் சமீபத்திய பதிப்புகளை இழுக்கிறது, மேலும் இது ஒரு பெரிய திட்டத்தில் நிறைய நேரம் எடுக்கும்.

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

முடிவு

  • AV விதிவிலக்குகளில் உள்ள ஆதாரங்கள்.
  • அட்டவணைப்படுத்தலை முடக்கு.
  • செல்லுங்கள் npm ci.

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

கட்டமைப்பு

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

லினக்ஸில் .NET கோர், குதிரையில் DevOps

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

விளைவாக

நாங்கள் பில்ட் ஏஜென்ட்களை மேம்படுத்திய பிறகு, சராசரி உருவாக்க நேரம் 12 நிமிடங்களிலிருந்து 7 ஆகக் குறைக்கப்பட்டது.

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

திட்டங்களை

அடுத்த காலாண்டில், குறியீடு டெலிவரியை மேம்படுத்துவதில் பணியாற்ற திட்டமிட்டோம்.

ப்ரீபில்ட் டோக்கர் படத்திற்கு மாறுகிறது. TFS என்பது பல செருகுநிரல்களைக் கொண்ட ஒரு சிறந்த விஷயம், இது டோக்கர் படத்தின் தூண்டுதல் அடிப்படையிலான அசெம்பிளி உட்பட பைப்லைனில் ஒருங்கிணைக்க உங்களை அனுமதிக்கிறது. இதையே தூண்டுதலாக மாற்ற விரும்புகிறோம் தொகுப்பு-பூட்டு. json. திட்டத்தை உருவாக்கப் பயன்படுத்தப்படும் கூறுகளின் கலவை எப்படியாவது மாறினால், நாங்கள் ஒரு புதிய டோக்கர் படத்தை உருவாக்குகிறோம். இது பின்னர் கூடியிருந்த பயன்பாட்டுடன் கொள்கலனை வரிசைப்படுத்த பயன்படுகிறது. இது இப்போது இல்லை, ஆனால் குபெர்னெட்ஸில் மைக்ரோ சர்வீஸ் கட்டமைப்பிற்கு மாற நாங்கள் திட்டமிட்டுள்ளோம், இது எங்கள் நிறுவனத்தில் தீவிரமாக வளர்ந்து வருகிறது மற்றும் நீண்ட காலமாக உற்பத்தி தீர்வுகளை வழங்கி வருகிறது.

சுருக்கம்

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

அலெக்சாண்டர் சிஞ்சினோவின் பேச்சாளர் விவரம் GitHub இல்.

DevOps Conf தொழில் வல்லுநர்களால் நிபுணர்களுக்கான மேம்பாடு, சோதனை மற்றும் செயல்பாட்டு செயல்முறைகளை ஒருங்கிணைப்பதற்கான ஒரு மாநாடு. அதனால்தான் அலெக்சாண்டர் பேசிய திட்டம்? செயல்படுத்தப்பட்டது மற்றும் வேலை செய்தது, மற்றும் செயல்திறன் நாளில் இரண்டு வெற்றிகரமான வெளியீடுகள் இருந்தன. அன்று RIT++ இல் DevOps Conf மே 27 மற்றும் 28 ஆம் தேதிகளில் பயிற்சியாளர்களிடமிருந்து இதே போன்ற வழக்குகள் இன்னும் அதிகமாக இருக்கும். நீங்கள் இன்னும் கடைசி வண்டியில் குதிக்கலாம் அறிக்கை சமர்ப்பிக்க அல்லது உங்கள் நேரத்தை எடுத்துக் கொள்ளுங்கள் பதிவு செய்ய டிக்கெட். ஸ்கோல்கோவோவில் சந்திப்போம்!

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

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