Tryam, բարև:
Ես կցանկանայի խոսել BitBucket-ի միջոցով GitLab-ի և AppCenter-ի ինտեգրման ստեղծման իմ փորձի մասին:
Նման ինտեգրման անհրաժեշտությունը ծագեց Xamarin-ում միջպլատֆորմային նախագծի համար UI թեստերի ավտոմատ մեկնարկի ժամանակ: Մանրամասն ձեռնարկը կտրվածքի տակ:
* Ես առանձին հոդված կպատրաստեմ միջպլատֆորմային պայմաններում UI թեստավորման ավտոմատացման մասին, եթե հանրությունը հետաքրքրված է:
Ես միայն մեկ այդպիսի նյութ եմ փորել
ԱռաջադրանքՏեղադրեք UI-ի թեստերի ավտոմատ մեկնարկը AppCenter-ում, հաշվի առնելով, որ մեր թիմն օգտագործում է GitLab-ը որպես տարբերակի վերահսկման համակարգ:
խնդիր Պարզվեց, որ AppCenter-ը ուղղակիորեն չի ինտեգրվում GitLab-ի հետ։ Որպես լուծումներից ընտրվել է BitBucket-ի միջոցով շրջանցումը։
Քայլեր
1. Ստեղծեք դատարկ պահոց BitBucket-ում
Սա ավելի մանրամասն նկարագրելու կարիք չեմ տեսնում :)
2. GitLab-ի կարգավորում
Մեզ անհրաժեշտ է, որ պահոց մղելիս/միաձուլվելիս փոփոխությունները վերբեռնվեն նաև BitBucket-ում: Դա անելու համար ավելացրեք runner (կամ խմբագրեք գոյություն ունեցող .gitlab-ci.yml ֆայլը):
Սկզբում մենք հրամաններ ենք ավելացնում Before_scripts բաժնում
- git config --global user.email "user@email"
- git config --global user.name "username"
Այնուհետև ցանկալի փուլին ավելացրեք հետևյալ հրամանը.
- git push --mirror https://username:[email protected]/username/projectname.git
Իմ դեպքում, սա իմ ստացած ֆայլն է.
before_script:
- git config --global user.email "user@email"
- git config --global user.name "username"
stages:
- mirror
mirror:
stage: mirror
script:
- git push --mirror https://****:*****@bitbucket.org/****/testapp.git
Մենք գործարկում ենք build-ը, ստուգում ենք, որ մեր փոփոխությունները/ֆայլերը գտնվում են BitBucket-ում:
* ինչպես ցույց է տվել պրակտիկան, SSH ստեղների կարգավորումը պարտադիր չէ: Բայց, ամեն դեպքում, ստորև կներկայացնեմ SSH-ի միջոցով կապի ստեղծման ալգորիթմ
Միացում SSH-ի միջոցով
Նախ անհրաժեշտ է ստեղծել SSH բանալի: Այս մասին շատ հոդվածներ են գրվել։ Օրինակ, կարող եք նայել
Ստեղծված ստեղները նման են հետևյալին.
Հետագա Գաղտնի բանալին անհրաժեշտ է որպես փոփոխական ավելացնել GitLab-ին: Դա անելու համար անցեք Կարգավորումներ > CI/CD > Շրջակա միջավայրի փոփոխականներ: Ավելացրեք այն ֆայլի ԲՈԼՈՐ բովանդակությունը, որում պահել եք գաղտնի բանալին: Եկեք անվանենք SSH_PRIVATE_KEY փոփոխականը:
* այս ֆայլը, ի տարբերություն հանրային բանալու ֆայլի, չի ունենա ընդլայնում
Հիանալի է, հաջորդը դուք պետք է ավելացնեք հանրային բանալին BitBucket-ում: Դա անելու համար բացեք պահեստը և անցեք Կարգավորումներ > Մուտքի ստեղներ:
Այստեղ մենք սեղմում ենք «Ավելացնել բանալի» և ֆայլի բովանդակությունը տեղադրում ենք հանրային բանալիով (ֆայլ .pub ընդլայնմամբ):
Հաջորդ քայլը gitlab-runner-ում ստեղների օգտագործումն է: Օգտագործեք այս հրամանները, բայց աստղանիշները փոխարինեք ձեր մանրամասներով
image: timbru31/node-alpine-git:latest
stages:
- mirror
before_script:
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d 'r' | ssh-add - > /dev/null
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- git config --global user.email "*****@***"
- git config --global user.name "****"
- ssh -T [email protected]
mirror:
stage: mirror
script:
- git push --mirror https://****:****@bitbucket.org/*****/*****.git
3. AppCenter-ի կարգավորում
Մենք նոր հավելված ենք ստեղծում AppCenter-ում:
Նշեք լեզուն/հարթակը
Հաջորդը գնացեք նորաստեղծ հավելվածի Կառուցել բաժինը։ Այնտեղ մենք ընտրում ենք BitBucket-ը և 1-ին քայլում ստեղծված պահոցը:
Հիանալի է, հիմա մենք պետք է կարգավորենք կառուցվածքը: Դա անելու համար գտեք հանդերձանքի պատկերակը
Սկզբունքորեն, այնտեղ ամեն ինչ ինտուիտիվ է: Ընտրեք նախագիծ և կազմաձևում: Անհրաժեշտության դեպքում միացրեք թեստերի մեկնարկը կառուցումից հետո: Նրանք կսկսվեն ավտոմատ կերպով:
Հիմնականում դա բոլորն է: Պարզ է թվում, բայց, բնականաբար, ամեն ինչ հարթ չի ընթանա։ Հետևաբար, ես նկարագրելու եմ որոշ սխալներ, որոնք ես հանդիպել եմ աշխատելիս.
«ssh-keygen»-ը չի ճանաչվում որպես ներքին կամ արտաքին հրաման:
Դա տեղի է ունենում նաև այն պատճառով, որ ssh-keygen.exe-ի ուղին չի ավելացվել շրջակա միջավայրի փոփոխականներին:
Երկու տարբերակ կա՝ ավելացնել C:Program FilesGitusrbin Environment Variables-ին (կկիրառվի սարքը վերագործարկելուց հետո), կամ գործարկել վահանակը այս գրացուցակից:
AppCenter-ը միացե՞լ է սխալ BitBucket հաշվին:
Խնդիրը լուծելու համար դուք պետք է անջատեք ձեր BitBucket հաշիվը AppCenter-ից: Մենք մուտք ենք գործում սխալ BitBucket հաշիվ և գնում ենք օգտվողի պրոֆիլ:
Հաջորդը, գնացեք Կարգավորումներ > Մուտքի կառավարում > OAuth
Սեղմեք Չեղարկել՝ ձեր հաշիվն անջատելու համար:
Դրանից հետո դուք պետք է մուտք գործեք անհրաժեշտ BitBucket հաշիվ:
* Որպես վերջին միջոց, մաքրեք նաև ձեր բրաուզերի քեշը:
Հիմա եկեք գնանք AppCenter: գնացեք Կառուցել բաժինը, սեղմեք Անջատել BitBucket հաշիվը
Երբ հին հաշիվն անջատված է, մենք նորից կապում ենք AppCenter-ը: Այժմ դեպի ցանկալի հաշիվ:
«eval»-ը չի ճանաչվում որպես ներքին կամ արտաքին հրաման
Մենք այն օգտագործում ենք հրամանի փոխարեն
- eval $(ssh-agent -s)
Թիմ:
- ssh-agent
Որոշ դեպքերում, դուք պետք է կամ նշեք ամբողջական ուղին դեպի C:Program FilesGitusrbinssh-agent.exe, կամ ավելացնեք այս ուղին համակարգի փոփոխականներին այն մեքենայի վրա, որտեղ աշխատում է վազողը:
AppCenter Build-ը փորձում է գործարկել նախագծի համար build հնացած bitBucket պահոցից
Իմ դեպքում խնդիրն առաջացավ, քանի որ ես աշխատում էի մի քանի աքաունթներով։ Ես որոշեցի մաքրել քեշը:
Source: www.habr.com