Git, CocoaPods, Xcode, Shell/Git
[iOS - swift] 1. GitHub Action 개념, 기능 (CI/CD)
jake-kim
2021. 12. 4. 02:21
1. GitHub Action 개념, 기능 (CI/CD)
2. GitHub Action 사용 방법 (CI/CD)
Github Action
- PR을 날릴때마다 프로젝트에 문제가 있는지 자동으로 빌드 테스트
- 테스트 및 배포 파이프라인 CI/CD 구축
- workflow 사용
- 순차적 or 병렬로 실행할 수 있는 하나 이상의 작업이 존재
Workflow
- workflow란 미리 정해진대로 기능이 수행되는 작업 흐름
- repository에 yaml파일에 의해 저장
- workflow는 이벤트에 의해 트리거될 때 수행되거나 수동으로 수행
- 이벤트: PR 생성, commit을 푸시 등
Workflows 설정 방법
- Actions 클릭
- workflow 구현
- swift언어를 찾아서 Set up this workflow 선택
- Xcode 프로젝트를 자동으로 인식하여, github에서 자동으로 swift언어를 맨 위로 추천
- yml 파일 확인
- 이 파일의 내용을 알맞게 설정하여, 자신이 원하는 조건이 트리거 될때마다 원하는 작업이 실행되게끔 가능
Workflow 문법
- 트리거 조건
- on: 언제 행동을 트리거 시킬지에 관한 문법
- push: (푸시 트리거)
- branchs: (브랜치 푸시 트리거)
- pull_request: (PR 트리거)
- on: 언제 행동을 트리거 시킬지에 관한 문법
- 특정 브랜치 푸시 트리거 적용 방법
- 이름이 "feature/" 로 시작하는 트리거 브랜치 푸시 시 트리거 동작
- feature/*
on:
push:
branches: [ feature/* ]
pull_request:
branches: [ main ]
cf) `v`로 시작하는 태그 푸시 트리거 발생
on:
push:
tags:
- v*
- 트리거 발생 시 실행
- runs-on: 어느 플랫폼에서 실행시킬지 설정 (iOS인 경우 디폴트 값 macos-latest로 설정)
- uses: 테스트를 하기 위해서 Repository의 코드 복사본을 만드는 코드
- name: 실행할 작업의 이름
- run: 스위프트 컴파일러로 빌드하는 명령어
- run 작성 방법
- 여러 명령어를 사용하려면 한칸 뛰고 `|` 입력
run: | pod install --repo-update --clean-install ... 생략
- schedule로 트리거 시간 지정
- 사용 방법
- ex) 7시에 월~목에만 트리거 되게끔 설정
on: schedule: - cron: 0 7 * * 1-5
- 사용 방법
간단히 사용 방법
- Action 탭 > file 내용 작성
- run 부분에 문자열이 출력되도록 아래처럼 수정
name: Swift
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- name: Build
run: echo Hello, world!
- name: Run tests
run: |
echo Add other actions to build,
echo test, and edploy your project
- Action 탭 > 내용 작성 후 > start commit 클릭
- 파일 이름과 내용을 기입한 후 Commit new file 클릭
- commit 생성
- {project} / .github / workflows
- 해당 코드가 commit, push가 되면서 action 실행
- Actions 탭을 눌러보면 결과 확인 가능
- build 클릭하면 세부 정보 확인 가능
- workflow가 실패한 경우
Test 돌리는 방법 예시
- .github/workflows/swift.yml 파일 수정
- Run tests run: 부분을 아래와 같이 수정
- xcodebuild를 사용하여 빌드를 수행하고, 프로젝트의 xcodeproj, scheme, desitination을 옵션으로 주어 실행
- name: Run tests
run: |
xcodebuild clean test -project ExGithubAction.xcodeproj -scheme ExGithubAction -destination "platform=iOS Simulator,name=iPhone 11"
- Start commit 클릭
- test 성공
* 참고
- https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows
- https://docs.github.com/en/actions