TestFlight Alternative Deploy #56
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: TestFlight Alternative Deploy | |
on: | |
workflow_dispatch: | |
inputs: | |
buildv: | |
required: true | |
jobs: | |
build: | |
name: Build & Deploy | |
runs-on: macos-14 | |
permissions: | |
contents: write | |
pull-requests: write | |
issues: write | |
repository-projects: write | |
checks: write | |
statuses: write | |
env: | |
ASCAPI_ISSUER_ID: ${{ secrets.ALT_ISSUER_ID }} | |
ASCAPI_KEY_ID: ${{ secrets.ALT_KEY_ID }} | |
ASCAPI_KEY: ${{ secrets.ALT_KEY }} | |
GH_TOKEN: ${{ github.token }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ inputs.repository }} | |
ref: ${{ inputs.psha }} | |
- name: Set Xcode Version | |
run: sudo xcode-select -s /Applications/Xcode_15.2.app | |
- name: Prepare Version Folder | |
run: mkdir vers | |
- name: Checkout Version Files | |
uses: actions/checkout@v3 | |
with: | |
ref: release-vers | |
persist-credentials: false | |
fetch-depth: 0 | |
path: vers | |
- name: Change Project Version | |
env: | |
TARGET_TAG: ${{ inputs.buildv }} | |
run: sed -i '' "s|CURRENT_PROJECT_VERSION = [0-9]*;|CURRENT_PROJECT_VERSION = $TARGET_TAG;|g" ./DarockBili.xcodeproj/project.pbxproj | |
- name: Install the Apple certificate and provisioning profile for Xcode | |
env: | |
BUILD_CERTIFICATE_BASE64: ${{ secrets.ALT_CERTIFICATE_BASE64 }} | |
P12_PASSWORD: ${{ secrets.ALT_P12_PASSWORD }} | |
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.ALT_PROVISION_PROFILE_BASE64 }} | |
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }} | |
run: | | |
# create variables | |
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 | |
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision | |
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db | |
# import certificate and provisioning profile from secrets | |
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH | |
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH | |
# create temporary keychain | |
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH | |
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH | |
# import certificate to keychain | |
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH | |
security list-keychain -d user -s $KEYCHAIN_PATH | |
# apply provisioning profile | |
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles | |
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles | |
- name: Prepare Abouts | |
env: | |
github_ref: ${{ github.ref }} | |
run: | | |
IFS='/' read -ra parts <<< "$github_ref" | |
last_index=$((${#parts[@]} - 1)) | |
CI_TAG="${parts[$last_index]}" | |
sed -i '' "s|.*|Linecom|" ./CurrentChannel.drkdatac | |
sed -i '' "s|.*|${CI_TAG}|" ./SemanticVersion.drkdatas | |
rm "/Users/runner/work/Darock-Bili/Darock-Bili/DarockBili.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved" | |
- name: Resolve Package Dependencies | |
run: xcodebuild -resolvePackageDependencies -project ./DarockBili.xcodeproj -scheme 'Alternative Destribution' -configuration Alternative | |
- name: Archive DarockBili App | |
run: | | |
xcodebuild archive -project ./DarockBili.xcodeproj -scheme 'Alternative Destribution' -archivePath ./build.xcarchive -IDEPostProgressNotifications=YES CODE_SIGN_IDENTITY=- AD_HOC_CODE_SIGNING_ALLOWED=YES CODE_SIGN_STYLE=Automatic DEVELOPMENT_TEAM=B38QUJMY47 COMPILER_INDEX_STORE_ENABLE=NO -configuration Alternative -quiet | |
- name: Export IPA File | |
run: | | |
xcodebuild -exportArchive -archivePath ./build.xcarchive -exportPath ./ -exportOptionsPlist ./ExportOptions/app-store.plist -DVTProvisioningIsManaged=YES -DVTSkipCertificateValidityCheck=YES | |
- name: Prepare API Key | |
run: | | |
mkdir ~/.private_keys | |
echo "$ASCAPI_KEY" >> ~/.private_keys/AuthKey_${ASCAPI_KEY_ID}.p8 | |
- name: Upload to App Store Connect | |
run: | | |
ls | |
xcrun altool --upload-app -f ./MeowBili.ipa -t ios --apiKey $ASCAPI_KEY_ID --apiIssuer $ASCAPI_ISSUER_ID |