From 41abe791f72be00a6891d7fa7e130c6ce4ab4999 Mon Sep 17 00:00:00 2001 From: Hiddify Date: Mon, 11 Mar 2024 19:05:19 +0100 Subject: [PATCH] new: add ios build process --- .github/workflows/build.yml | 125 ++++++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 48 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 409cfc90..c08bcf2d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -58,29 +58,34 @@ jobs: fail-fast: false matrix: include: - - platform: android-apk - os: ubuntu-latest - targets: apk + # - platform: android-apk + # os: ubuntu-latest + # targets: apk - - platform: android-aab - os: ubuntu-latest - targets: aab + # - platform: android-aab + # os: ubuntu-latest + # targets: aab - - platform: windows - os: windows-2019 - aarch: amd64 - targets: exe,msix + # - platform: windows + # os: windows-2019 + # aarch: amd64 + # targets: exe,msix - - platform: linux - os: ubuntu-22.04 - aarch: amd64 - targets: AppImage,deb,rpm + # - platform: linux + # os: ubuntu-22.04 + # aarch: amd64 + # targets: AppImage,deb,rpm - - platform: macos + # - platform: macos + # os: macos-13 + # aarch: universal + # targets: dmg,pkg + + - platform: ios os: macos-13 aarch: universal - targets: dmg,pkg - + filename: hiddify-ios + targets: ipa runs-on: ${{ matrix.os }} steps: - name: checkout @@ -131,41 +136,55 @@ jobs: run: | [IO.File]::WriteAllBytes("windows\sign.pfx", [Convert]::FromBase64String("${{ secrets.WINDOWS_SIGNING_KEY }}")) (Get-Content "windows\packaging\msix\make_config.yaml") -replace '^certificate_password:.*$', 'certificate_password: ${{ secrets.WINDOWS_SIGNING_PASSWORD }}' | Set-Content "windows\packaging\msix\make_config.yaml" - - - - name: Setup Apple certificate and provisioning profile + + - name: Import Apple Codesign Certificates if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }} - env: - BUILD_CERTIFICATE_BASE64: ${{ secrets.APPLE_BUILD_CERTIFICATE_BASE64 }} - P12_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }} - BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.APPLE_BUILD_PROVISION_PROFILE_BASE64 }} - BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64: ${{ secrets.APPLE_BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64 }} - KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} - run: | - # create variables - CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 - PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision - PP_PACKET_TUNNEL_PATH=$RUNNER_TEMP/build_pppt.mobileprovision - KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db + uses: apple-actions/import-codesign-certs@v2 + with: + p12-file-base64: ${{ secrets.CERTIFICATES_P12 }} + p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }} + - name: Download Provisioning Profile + if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }} + uses: Apple-Actions/download-provisioning-profiles@v1 + with: + bundle-id: app.hiddify.com + issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} + api-key-id: ${{ secrets.APPSTORE_KEY_ID }} + api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} - # 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 - echo -n "$BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PACKET_TUNNEL_PATH + # - name: Setup Apple certificate and provisioning profile + # if: ${{ inputs.upload-artifact && startsWith(matrix.os,'macos') }} + # env: + # BUILD_CERTIFICATE_BASE64: ${{ secrets.APPLE_BUILD_CERTIFICATE_BASE64 }} + # P12_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_P12_PASSWORD }} + # BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.APPLE_BUILD_PROVISION_PROFILE_BASE64 }} + # BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64: ${{ secrets.APPLE_BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64 }} + # KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} + # run: | + # # create variables + # CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12 + # PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision + # PP_PACKET_TUNNEL_PATH=$RUNNER_TEMP/build_pppt.mobileprovision + # KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db - # 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 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 + # echo -n "$BUILD_PACKET_TUNNEL_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PACKET_TUNNEL_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 + # # 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 - # apply provisioning profile - mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles - cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles - cp $PP_PACKET_TUNNEL_PATH ~/Library/MobileDevice/Provisioning\ Profiles + # # 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 + # cp $PP_PACKET_TUNNEL_PATH ~/Library/MobileDevice/Provisioning\ Profiles - name: Build ${{ matrix.platform }} env: @@ -362,4 +381,14 @@ jobs: packageName: app.hiddify.com releaseName: ${{ env.TAG_NAME }} releaseFiles: ./hiddify-android-market.aab - track: 'beta' \ No newline at end of file + track: 'beta' + + + + - name: 'Upload app to TestFlight' + uses: apple-actions/upload-testflight-build@v1 + with: + app-path: 'dist/out/Hiddify-iOS.ipa' + issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} + api-key-id: ${{ secrets.APPSTORE_API_KEY_ID }} + api-private-key: ${{ secrets.APPSTORE_API_PRIVATE_KEY }} \ No newline at end of file