Gitlab 持续交付选项

Gitlab Continuous Delivery options

我是 iOS 开发者并且 我最近一直在玩 Gitlab,想弄清楚它是否 better/more 比 redmine+jenkins+HockeyApp 方便。 Gitlab 似乎很酷,除了我无法弄清楚如何将我的临时 iOS 构建上传到 HockeyApp(或 TestFlight)。有可能吗?

谢谢

是的,这绝对是可能的。我强烈建议使用 fastlane Ruby gem.

他们甚至有docs for using it with GitLab CI。您可以专门使用 pilot 将构建上传到 TestFlight。

希望对您有所帮助:)

我最终得到了以下配置:

添加deploy.sh文件:

#!/bin/bash
echo "deploy to hockeyapp"

HOCKEYAPP_APP_NAME="MyApp.iOS.ipa"
HOCKEYAPP_TOKEN="MyTOKEN"
HOCKEYAPP_ID="MYAPPID"

function buildNotes {

    # We need an initial bullet point for our list of commit logs
    echo -n "* "
    # Get the latest app uploads
    curl -H "X-HockeyAppToken: $HOCKEYAPP_TOKEN" \
    "https://rink.hockeyapp.net/api/2/apps/$HOCKEYAPP_ID/app_versions?page=1" | \
    # Put every property on a separate line
    sed 's/,/\n/g' | \
    # Remove all the quotation marks
    sed 's/"//g' | \
    # Look at only the notes properties
    grep notes | \
    # Look at the first one, i.e. the latest app upload
    head -n 1 | \
    # Find the commit information at the bottom of the notes
    sed -n 's/.*(commit:\([^)]*\)).*//p' | \
    # Let's find all the logs since that commit
    xargs -I '{}' git log {}..HEAD --pretty=format:'%h %s' --no-merges | \
    # Add a star to each newline to make the list
    sed ':a;N;$!ba;s/\n/\n* /g'
    # The end of the revision log must have the latest commit
    # This is so later we can do the above again
    echo
    echo -n "* (commit:"
    git rev-parse HEAD | xargs echo -n
    echo -n ')'
}

function deployAppFlavor () {
    echo "executeCurlCommand"
    curl -F "status=2" \
    -F "notify=1" \
    -F "notes=<release_notes" \
    -F "notes_type=0" \
    -F "ipa=@src/build/MyApp.iOS.ipa/" \
    -H "X-HockeyAppToken: "\
     "https://rink.hockeyapp.net/api/2/apps//app_versions/upload"
}

function deployApp {
    buildNotes > release_notes
    deployAppFlavor $HOCKEYAPP_APP_NAME $HOCKEYAPP_TOKEN $HOCKEYAPP_ID
}

deployApp

然后更新yml文件:

 build_project:
   stage: build

   script:
     - xcodebuild clean -workspace MyApp.iOS.xcworkspace -scheme MyApp.iOS -quiet
     - xcodebuild build -workspace MyApp.iOS.xcworkspace -scheme MyApp.iOS -destination 'platform=iOS Simulator,name=iPhone 6s' | xcpretty -s > -quiet

 archive_project:
   stage: archive
   script:
     - xcodebuild clean archive -archivePath "build/MyApp.iOS.xcarchive" -workspace "MyApp.iOS.xcworkspace" -scheme MyApp.iOS -quiet
     - xcodebuild -exportArchive -archivePath "build/MyApp.IOS.xcarchive" -exportPath "build/MyApp.iOS.ipa" -exportOptionsPlist "export.plist" -quiet
   artifacts:
     paths:
       - src/build/MyApp.iOS.ipa

 deploy:
   before_script:
     - chmod +x ./scripts/deploy.sh
   stage: deploy
   script:
     - ./scripts/deploy.sh