ฉันพยายามตั้งค่า gitlab Runner บน M1 MacBook ของฉันสำหรับการทดสอบสภาพแวดล้อมบางอย่าง เวิร์กโฟลว์ CI ของฉันค่อนข้างง่าย: สร้าง
-> ทดสอบ
-> ปรับใช้
. ฉันใช้ docker executor และสำหรับการทดสอบงานที่ฉันใช้ นักเทียบท่าเขียน
เพราะฉันต้องปรับใช้ฐานข้อมูลข้างบริการที่ฉันต้องการทดสอบ
CI ของฉันทำงานได้อย่างสมบูรณ์บน EC2 ที่ใช้ Ubuntu แต่เมื่อฉันพยายามเรียกใช้นักวิ่งบน macOS ไดรฟ์ข้อมูล ./backend ของฉันไม่ผูกกับ /app
ฉันพยายามที่จะ ls /แอป
บน แบ็กเอนด์
คอนเทนเนอร์และด้วย EC2 ไฟล์และโฟลเดอร์ทั้งหมดจะอยู่ที่นี่ แต่ไม่ใช่เมื่อฉันรันรันเนอร์บน macOS
gitlab-ci.yml (นี่เป็นเพียง แบ็กเอนด์_ทดสอบ
ส่วนหนึ่ง:
test_backend:
ขั้นตอน: การทดสอบ
ต้องการ: ["build_backend_image"]
ภาพ: นักเทียบท่า
บริการ:
- นักเทียบท่า:dind
before_script:
- เข้าสู่ระบบนักเทียบท่า -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
- mkdir -p $DOCKER_CONFIG/cli-ปลั๊กอิน
- apk เพิ่มขด
- curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
- chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
สคริปต์:
- นักเทียบท่าเขียน -f นักเทียบท่าเขียน-ci.yml ขึ้น -d db
- นักเทียบท่า exec db sh mongo_init.sh
- นักเทียบท่าเขียน -f นักเทียบท่าเขียน-ci.yml ขึ้น -d แบ็กเอนด์
- เอกสาร
- ล
- แบ็กเอนด์
- นักเทียบท่า exec แบ็กเอนด์ pwd
- นักเทียบท่า exec แบ็กเอนด์ ls -l
- นักเทียบท่า exec แบ็กเอนด์ ls / -l
- นักเทียบท่า exec แบ็กเอนด์ pip3 ติดตั้ง --no-cache-dir --upgrade -r ความต้องการ-test.txt
- การทดสอบ pytest แบ็กเอนด์ของนักเทียบท่า exec --junitxml=report.xml -p no:cacheprovider
ขัดจังหวะ: จริง
สิ่งประดิษฐ์:
เมื่อ: เสมอ
รายงาน:
Junit: แบ็กเอนด์/report.xml
กฎ:
- ถ้า: $CI_PIPELINE_SOURCE == 'merge_request_event'
- ถ้า: $CI_COMMIT_BRANCH == 'พัฒนา'
- ถ้า: $CI_COMMIT_BRANCH == 'หลัก'
gitlab-runner/config.toml:
พร้อมกัน = 2
check_interval = 0
[เซสชัน_เซิร์ฟเวอร์]
session_timeout = 1800
[[นักวิ่ง]]
ชื่อ = "แมคบุ๊ค"
url = "https://gitlab.com/"
โทเค็น = "xxxxxxxxxxx"
ผู้บริหาร = "นักเทียบท่า"
[นักวิ่ง.custom_build_dir]
[รันเนอร์แคช]
[รันเนอร์.แคช.s3]
[runner.cache.gcs]
[runners.cache.azure]
[นักวิ่ง.นักเทียบท่า]
tls_verify = เท็จ
ภาพ = "นักเทียบท่า:20.10.13"
สิทธิพิเศษ = จริง
ปิดการใช้งาน_entrypoint_overwrite=เท็จ
oom_kill_disable = เท็จ
ปิดการใช้งานแคช = เท็จ
ปริมาณ = ["/certs/client", "/cache"]
shm_size = 0
เอาต์พุต EC2 รันเนอร์ ls:
$ นักเทียบท่า exec แบ็กเอนด์ ls /app -l
รวม 36
-rw-rw-rw- 1 รูทรูท 285 3 มิ.ย. 15:30 น. Dockerfile
-rw-rw-rw- 1 รูทรูท 325 20 พฤษภาคม 23:49 DockerfileTest
-rw-rw-rw- 1 รูทรูท 48 20 พฤษภาคม 23:49 __init__.py
drwxrwxrwx 11 รูทรูท 4096 4 มิ.ย. 17:17 น.
-rw-rw-rw- 1 รูทรูท 4286 4 มิ.ย. 16:41 favicon.ico
-rw-rw-rw- 1 รูทรูท 33 มิ.ย. 4 16:41 ข้อกำหนด-test.txt
-rw-rw-rw- 1 รูทรูท 1673 4 มิ.ย. 16:41 ข้อกำหนด.txt
drwxrwxrwx 6 รูทรูท 4096 4 มิ.ย. 16:41 ทดสอบ
เอาต์พุต macOS Runner ls:
$ นักเทียบท่า exec แบ็กเอนด์ ls /app -l
รวม 0
นักเทียบท่า-compose-ci.yml:
บริการ:
แบ็กเอนด์:
container_name: แบ็กเอนด์
รูปภาพ: $CI_REGISTRY_IMAGE/แบ็กเอนด์:$CI_COMMIT_SHA
ปริมาณ:
- ./แบ็กเอนด์:/แอป
เครือข่าย:
ค่าเริ่มต้น:
พอร์ต:
- 8000:8000
- 587:587
- 443:443
ขึ้นอยู่กับ:
- ฐานข้อมูล
ฐานข้อมูล:
ชื่อคอนเทนเนอร์: ฐานข้อมูล
ภาพ: mongo
ปริมาณ:
- ./mongo_init.sh:/mongo_init.sh:ro
เครือข่าย:
ค่าเริ่มต้น:
สิ่งแวดล้อม:
MONGO_INITDB_DATABASE: xxxxxxx
MONGO_INITDB_ROOT_USERNAME: ผู้ดูแลระบบ
MONGO_INITDB_ROOT_PASSWORD: ผู้ดูแลระบบ
พอร์ต:
- 27017:27017
เครือข่าย:
ค่าเริ่มต้น:
คนขับ: สะพาน