ลองแอม สวัสดี!
ฉันอยากจะพูดคุยเกี่ยวกับประสบการณ์ของฉันในการตั้งค่าการรวม GitLab และ AppCenter ผ่าน BitBucket
ความจำเป็นในการบูรณาการดังกล่าวเกิดขึ้นเมื่อตั้งค่าการเปิดตัวการทดสอบ UI อัตโนมัติสำหรับโครงการข้ามแพลตฟอร์มบน Xamarin กวดวิชาโดยละเอียดด้านล่างตัด!
* ฉันจะจัดทำบทความแยกต่างหากเกี่ยวกับการทดสอบ UI อัตโนมัติในเงื่อนไขข้ามแพลตฟอร์มหากสาธารณชนสนใจ
ฉันขุดวัสดุดังกล่าวขึ้นมาเพียงชิ้นเดียว
งาน: ตั้งค่าการเปิดการทดสอบ UI อัตโนมัติบน AppCenter โดยที่ทีมงานของเราใช้ GitLab เป็นระบบควบคุมเวอร์ชัน
ปัญหา ปรากฎว่า AppCenter ไม่ได้รวมเข้ากับ GitLab โดยตรง บายพาสผ่าน BitBucket ได้รับเลือกให้เป็นหนึ่งในโซลูชั่น
ขั้นตอน
1. สร้างพื้นที่เก็บข้อมูลว่างบน BitBucket
ฉันไม่เห็นความจำเป็นในการอธิบายรายละเอียดเพิ่มเติม :)
2. การตั้งค่า GitLab
เราต้องการสิ่งนั้นเมื่อทำการพุช/รวมเข้าไปในพื้นที่เก็บข้อมูล การเปลี่ยนแปลงจะถูกอัปโหลดไปยัง BitBucket ด้วย เมื่อต้องการทำเช่นนี้ ให้เพิ่มนักวิ่ง (หรือแก้ไขไฟล์ .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
เราเปิดตัวบิลด์ ตรวจสอบว่าการเปลี่ยนแปลง/ไฟล์ของเราอยู่ใน 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
ระบุภาษา/แพลตฟอร์ม
จากนั้นไปที่ส่วน Build ของแอปพลิเคชันที่สร้างขึ้นใหม่ ที่นั่นเราเลือก BitBucket และที่เก็บที่สร้างขึ้นในขั้นตอนที่ 1
เยี่ยมเลย ตอนนี้เราต้องกำหนดค่าบิลด์แล้ว เมื่อต้องการทำเช่นนี้ ให้ค้นหาไอคอนรูปเฟือง
โดยหลักการแล้ว ทุกอย่างมีสัญชาตญาณ เลือกโปรเจ็กต์และการกำหนดค่า หากจำเป็น ให้เปิดใช้งานการทดสอบหลังการสร้าง พวกเขาจะเริ่มโดยอัตโนมัติ
โดยพื้นฐานแล้วนั่นคือทั้งหมดที่ ฟังดูเรียบง่าย แต่โดยธรรมชาติแล้ว ทุกอย่างจะไม่ราบรื่น ดังนั้นฉันจะอธิบายข้อผิดพลาดบางอย่างที่ฉันพบขณะทำงาน:
'ssh-keygen' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก
นอกจากนี้ยังเกิดขึ้นเนื่องจากเส้นทางไปยัง ssh-keygen.exe ไม่ได้ถูกเพิ่มลงในตัวแปรสภาพแวดล้อม
มีสองตัวเลือก: เพิ่ม C:Program FilesGitusrbin ลงในตัวแปรสภาพแวดล้อม (จะถูกนำไปใช้หลังจากรีบูตเครื่อง) หรือเปิดคอนโซลจากไดเร็กทอรีนี้
AppCenter เชื่อมต่อกับบัญชี BitBucket ผิดหรือเปล่า?
เพื่อแก้ไขปัญหา คุณต้องยกเลิกการเชื่อมโยงบัญชี BitBucket ของคุณจาก AppCenter เราเข้าสู่ระบบบัญชี BitBucket ผิดและไปที่โปรไฟล์ผู้ใช้
จากนั้นไปที่การตั้งค่า > การจัดการการเข้าถึง > OAuth
คลิกเพิกถอนเพื่อยกเลิกการเชื่อมโยงบัญชีของคุณ
หลังจากนี้ คุณจะต้องเข้าสู่ระบบด้วยบัญชี BitBucket ที่จำเป็น
* เป็นทางเลือกสุดท้าย ให้ล้างแคชเบราว์เซอร์ของคุณด้วย
ตอนนี้ไปที่ AppCenter ไปที่ส่วน Build คลิกยกเลิกการเชื่อมต่อบัญชี BitBucket
เมื่อบัญชีเก่าถูกยกเลิกการเชื่อมโยง เราจะเชื่อมโยง AppCenter อีกครั้ง ตอนนี้ถึงบัญชีที่ต้องการ
'eval' ไม่ได้รับการยอมรับว่าเป็นคำสั่งภายในหรือภายนอก
เราใช้มันแทนคำสั่ง
- eval $(ssh-agent -s)
ทีม:
- ssh-agent
ในบางกรณี คุณจะต้องระบุเส้นทางแบบเต็มไปยัง C:Program FilesGitusrbinssh-agent.exe หรือเพิ่มเส้นทางนี้ไปยังตัวแปรระบบบนเครื่องที่รันเนอร์กำลังทำงานอยู่
AppCenter Build กำลังพยายามเปิดตัวบิลด์สำหรับโปรเจ็กต์จากที่เก็บ bitBucket ที่ล้าสมัย
ในกรณีของฉัน ปัญหาเกิดขึ้นเพราะฉันใช้งานหลายบัญชี ฉันตัดสินใจล้างแคช
ที่มา: will.com