Travis-CI에서 iOS 앱을 빌드하고 deploygate로 배포

8012 단어 iOSDeployGateTravisCI

전제


  • Swift 및 CocoaPods를 사용하여 프로젝트 빌드를 가정합니다
  • master 분기에 병합 될 때 빌드된다고 가정합니다

  • 준비



    Travis 명령 설치


    $ gem install travis --no-document
    $ cd [Project Directory]
    $ travis login
    # Github のユーザ名とパスワードを入力
    $ travis enable
    

    인증서 및 프로비저닝 프로필


  • 인증서는 키 체인 액세스에서 개인 키와 공개 키를 선택하고 .p12 형식으로 암호문을 설정하고 travis.p12로 출력합니다.
  • 프로비저닝 프로파일은 다음과 같은 방법으로 찾고 travis.mobileprovision
  • Xcode Preferences > Accounts > View Details 의 해당 프로비저닝 프로파일을 마우스 오른쪽 버튼으로 클릭하고 Show in Finder
  • Apple Developer Member Center에서 다운로드

  • 위에서 만든 두 개의 파일을 프로젝트의 .travis 디렉토리에 함께 배치합니다.
  • 다음의 순서로 숨겨 둔 파일을 암호화해 둔다
    $ cd [Project Directory]
    $ cd .travis/
    $ tar cvf secrets.tar travis.p12 travis.mobileprovision
    $ cd ..
    $ travis encrypt-file .travis/secrets.tar .travis/secrets.tar.enc
    # 出力をどこかにとっておく
    $ rm .travis/secrets.tar
    

    환경 변수


  • Travis-CI 프로젝트 페이지의 Settings > Environment Variables > Add a new variable
  • travis env set NAME VALUE 명령으로도 설정할 수 있습니다

  • 사람에게 보이면 곤란한 정보는 Display value in build logOFF


    변수 이름
    설명


    APP_NAME
    *.xcproject 또는 *.xcworkspace 앞 부분

    KEY_PASSWORD
    travis.p12 로 설정된 암호문

    PROFILE_NAME
    Xcode Preferences > Accounts > View Details 에 표시된 프로비저닝 프로필의 이름

    DEVELOPER_NAME
    열쇠 고리 접근 증명서 이름의 :의 뒤에 ( 이전 부분. 공백이 있으면 공백 앞에 \
    DEPLOYGATE_USER_NAME
    deploygate의 사용자 이름

    DEPLOYGATE_API_KEY

    deploygate 설정 화면 부터 검색


    Travis-CI 설정 화면


    Settings > General SettingsBuild pull requests 를 OFF 로 둔다



    Travis-CI 용 구성 파일


  • .travis.yml 파일로 프로젝트 디렉토리 바로 아래에 설치
  • xcode_workspace 의 항목에는 자신의 프로젝트의 *.xcworkspace 의 디렉토리명을 넣는다
  • before_installopenssl ... 행에 이전 단계의 travis encrypt-file 결과를 복사

  • .travis.yml
    language: objective-c
    osx_image: xcode7
    xcode_workspace: YOURPROJECTNAME.xcworkspace
    before_install:
      ### travis encrypt-file の結果をコピペする ###
      - openssl aes-256-cbc -K ... -iv ... -in .travis/secrets.tar.enc -out .travis/secrets.tar -d
      - tar xvf ./.travis/secrets.tar -C ./.travis
      # xcpretty と fomrmatter のインストール
      - gem install xcpretty-travis-formatter --no-document
    before_script:
      # Create default keychain on VM
      # http://docs.travis-ci.com/user/common-build-problems/#Mac%3A-Code-Signing-Errors
      - security create-keychain -p travis ios-build.keychain
      - security default-keychain -s ios-build.keychain
      - security unlock-keychain -p travis ios-build.keychain
      - security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain
      # Add certs to keychain
      - security import ./.travis/travis.p12 -k ~/Library/Keychains/ios-build.keychain -P ${KEY_PASSWORD} -T /usr/bin/codesign
      # save profile
      - mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
      - cp "./.travis/profiles/travis.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
    script:
      - xcodebuild -workspace ${APP_NAME}.xcworkspace -scheme ${APP_NAME} -sdk iphoneos -configuration Release CODE_SIGN_IDENTITY="${DEVELOPER_NAME}" archive -archivePath ./build/${APP_NAME}.xcarchive | xcpretty -f `xcpretty-travis-formatter` && exit ${PIPESTATUS[0]}
      - xcodebuild -exportArchive -exportFormat IPA -archivePath ./build/${APP_NAME}.xcarchive -exportPath ./build/${APP_NAME}.ipa -exportProvisioningProfile "${PROFILE_NAME}" | xcpretty -f `xcpretty-travis-formatter` && exit ${PIPESTATUS[0]}
    after_success:
      # Upload .ipa file to deploygate
      - curl -F "file=@build/${APP_NAME}.ipa" -F "token=${DEPLOYGATE_API_KEY}" https://deploygate.com/api/users/${DEPLOYGATE_USER_NAME}/apps
    after_script:
      - security delete-keychain ios-build.keychain
      - rm -f "~/Library/MobileDevice/Provisioning Profiles/${PROFILE_NAME}.mobileprovision"
    branches:
      only:
        - master
    

    동작 확인



    지금까지 추가한 파일을 커밋하고 Github에 푸시하면 .travis.yml 의 정의에 따라 빌드 프로세스가 실행됩니다.
    $ git commit -m "add Travis-CI settings"
    $ git push
    

    주의점


  • 일정 규모 이상의 프로젝트가되면 빌드 로그가 너무 많아 Travis-CI의 4MB 제한을 돌파하기 때문에 로그 출력이 xcpretty을 끼지 않으면 빌드가 실패합니다.
  • travis encrypt-file는 한 프로젝트에 대해 여러 파일을 처리 할 수 ​​없습니다.

    참고한 기사


  • Travis CI에서 배포 가능한 IPA 생성 및 배포
  • Travis CI에서 xcpretty를 사용하여 xcodebuild 로그를 정리합니다.
  • 좋은 웹페이지 즐겨찾기