Concourse CI에서 iOS 앱 CI 수행
모처럼 fastlane 등으로 빌드 스크립트를 코드화 할 수 있기 때문에 빌드 파이프 라인도 코드화하고 싶다 ...!
Concourse CI 시도해 보았습니다.
Concourse CI 설치
docker-compose에서 했습니다.
아래의 공식 문서대로 가면 빨리 시작합니다.
docker로 Concourse CI를 구축하여 iOS를 빌드 할 수 있습니까? 라고 걱정될지도 모릅니다만, Darwin용의 worker를 이용하는 것으로 iOS의 빌드를 실시하는 것이 가능합니다.
작업자 설정
아래에서 최신 concourse_darwin_amd64를 다운로드하여 경로가있는 디렉토리에 넣으십시오.
htps : // 기주 b. 코 m / 안녕 rse / 안녕 rs / ree s s
worker에 대한 키를 생성하고 authorized_worker_keys에 추가합니다.
$ ssh-keygen -t rsa -f ./keys/worker/darwin_worker_key -N ''
$ cat ./keys/worker/darwin_worker_key.pub >> ./keys/web/authorized_worker_keys
Mac 호스트에서 concourse worker를 시작합니다.
$ sudo concourse worker --work-dir /opt/concourse/worker --tsa-host 127.0.0.1 --tsa-public-key ./keys/worker/tsa_host_key.pub --tsa-worker-private-key ./keys/worker/darwin_worker_key
일단 이것으로 worker가 움직였습니다.
{"timestamp":"1487892702.682704926","source":"worker","message":"worker.garden.started","log_level":1,"data":{"session":"1"}}
{"timestamp":"1487892702.682797194","source":"baggageclaim","message":"baggageclaim.listening","log_level":1,"data":{"addr":"127.0.0.1:7788"}}
{"timestamp":"1487892702.683754444","source":"worker","message":"worker.beacon.restarting","log_level":2,"data":{"error":"failed to dial: failed to connect to TSA: dial tcp 127.0.0.1:2222: getsockopt: connection refused","session":"3"}}
2222번 포트에서 연결을 시도하는 중 오류가 발생했으므로 docker-compose.yml에 설정을 추가합니다.
docker-compose.yml
concourse-web:
image: concourse/concourse
links: [concourse-db]
command: web
ports: ["8080:8080", "2222:2222"]
volumes: ["./keys/web:/concourse-keys"]
environment:
CONCOURSE_BASIC_AUTH_USERNAME: concourse
CONCOURSE_BASIC_AUTH_PASSWORD: changeme
CONCOURSE_EXTERNAL_URL: "${CONCOURSE_EXTERNAL_URL}"
CONCOURSE_POSTGRES_DATA_SOURCE: |-
postgres://concourse:changeme@concourse-db:5432/concourse?sslmode=disable
아무래도 연결된 것 같습니다.
{"timestamp":"1487892892.915976048","source":"tsa","message":"tsa.connection.channel.forward-worker.register.start","log_level":1,"data":{"remote":"172.17.0.1:50078","session":"1.1.1.5","worker-address":"127.0.0.1:42459","worker-platform":"darwin","worker-tags":""}}
{"timestamp":"1487892892.928279877","source":"tsa","message":"tsa.connection.channel.forward-worker.register.reached-worker","log_level":0,"data":{"remote":"172.17.0.1:50078","session":"1.1.1.5","took":"10.962879ms"}}
빌드 파이프라인 만들기
일어나는 웹에 액세스하고,
빌드 파이프라인 구성을 위한 CLI 도구
fly
를 다운로드합니다.다운로드한 바이너리를 경로가 있는 디렉토리에 둡니다.
우선 다음의 3개를 실행할 수 있도록 해 봅니다.
최종 yaml은 다음과 같습니다.
빌드의 실행 유저는 root가 됩니다만,
pod install
(을)가 root로 실행할 수 없기 때문에 퍼미션이거나 유저의 스위치이거나 고맙습니다.concourse.yml
resources:
- name: ios-concourse
type: git
source:
uri: https://github.com/tenten0213/ios-concourse.git
branch: master
jobs:
- name: build
plan:
- get: ios-concourse
trigger: true
- task: specs
config:
platform: darwin
inputs:
- name: ios-concourse
run:
path: sh
args:
- -c
- |
env
mkdir ios-concourse/ExampleForConcourse/Pods
chown -R $SUDO_USER ios-concourse/
chown -R $SUDO_USER ~/Library/Caches/CocoaPods
chown -R $SUDO_USER ~/.cocoapods
cd ios-concourse/ExampleForConcourse
sudo -u $SUDO_USER bundle exec fastlane test
파이프라인을 등록하고 실행 가능한 상태로 만들고 빌드를 실행하면…
$ fly -t ci login -c http://127.0.0.1:8080/
$ fly -t ci set-pipeline -p ios-concourse -c concourse.yml
$ fly -t ci unpause-pipeline -p ios-concourse
↓ 느낌으로 fastlane이 실행되어 빌드가 성공했습니다!ヽ(=´▽`=)노
이미지 보면 아시다시피, 제대로 빌드 통하는 데 상당히 고생했습니다 ...
시도한 모로 모로는 아래에 있습니다.
참고
Reference
이 문제에 관하여(Concourse CI에서 iOS 앱 CI 수행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tenten0213/items/7a362a4b9d65040d93d6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)