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 트리거)

  • 특정 브랜치 푸시 트리거 적용 방법
    • 이름이 "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

- https://rhkrthdud7.tistory.com/20

- https://macgongmon.club/24