From b4f5c3ab846cd0c6f4edffa01ee0f7c30501bdf6 Mon Sep 17 00:00:00 2001 From: Hiddify <114227601+hiddify-com@users.noreply.github.com> Date: Fri, 1 Dec 2023 23:14:19 +0100 Subject: [PATCH] Create dev-i.yml --- .github/workflows/dev-i.yml | 193 ++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) create mode 100644 .github/workflows/dev-i.yml diff --git a/.github/workflows/dev-i.yml b/.github/workflows/dev-i.yml new file mode 100644 index 00000000..4e8cac6d --- /dev/null +++ b/.github/workflows/dev-i.yml @@ -0,0 +1,193 @@ +name: dev i +on: + push: + branches: + - main + tags: + - 'v*' + paths-ignore: + - '**.md' + - 'docs/**' + - '.github/**' + - '!.github/workflows/build.yml' + - 'appcast.xml' + # pull_request: + # branches: + # - main +concurrency: + group: ${{ github.ref }}-${{ github.workflow }} + cancel-in-progress: true + +env: + CHANNEL: ${{ github.ref_type == 'tag' && endsWith(github.ref_name, 'dev') && 'dev' || github.ref_type != 'tag' && 'dev' || 'prod' }} + NDK_VERSION: r26b + +jobs: + build: + permissions: write-all + strategy: + fail-fast: false + matrix: + include: + # - platform: android-apk + # os: ubuntu-latest + # targets: apk + + # - platform: android-aab + # os: ubuntu-latest + # targets: aab + + # - platform: windows + # os: windows-latest + # aarch: amd64 + # targets: exe + # filename: hiddify-windows-x64 + + # - platform: linux + # os: ubuntu-latest + # aarch: amd64 + # targets: AppImage + # filename: hiddify-linux-x64 + + # - platform: macos + # os: macos-13 + # aarch: universal + # targets: dmg + # filename: hiddify-macos-universal + + - platform: ios + os: macos-13 + aarch: universal + filename: hiddify-ios + targets: ipa + + runs-on: ${{ matrix.os }} + steps: + - name: checkout + uses: actions/checkout@v3 + - name: Install macos dmg needed tools + if: matrix.platform == 'macos' || matrix.platform == 'ios' + run: | + # xcode-select --install || softwareupdate --all --install --force + # brew uninstall --force $(brew list | grep python@) && brew cleanup || echo "python not installed" + brew uninstall --ignore-dependencies python@3.12 + brew reinstall python@3.10 + python3 -m pip install --upgrade setuptools pip + brew install create-dmg tree + npm install -g appdmg + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + flutter-version: '3.16.x' + channel: 'stable' + cache: true + + + - name: Setup Flutter Distributor + if: ${{ !startsWith(matrix.platform,'android') }} + run: | + dart pub global activate flutter_distributor + + + - name: Get Geo Assets + run: | + make get-geo-assets + + - name: Get Dependencies + run: | + make get + + - name: Generate + run: | + make translate + make gen + + - name: Get Libs ${{ matrix.platform }} + run: | + make ${{ matrix.platform }}-libs + + + - name: Setup Apple certificate and provisioning profile + if: 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 + + # 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 + + # 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 + cp $PP_PACKET_TUNNEL_PATH ~/Library/MobileDevice/Provisioning\ Profiles + + - name: Release ${{ matrix.platform }} + env: + SENTRY_DSN: ${{ secrets.SENTRY_DSN }} + run: | + make ${{ matrix.platform }}-release + + - name: Upload Debug Symbols + if: ${{ github.ref_type == 'tag' }} + env: + SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} + SENTRY_ORG: ${{ secrets.SENTRY_ORG }} + SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }} + SENTRY_DIST: ${{ matrix.platform == 'android-aab' && 'google-play' || 'general' }} + run: | + flutter packages pub run sentry_dart_plugin + + + - name: Copy to out unix + if: matrix.platform == 'linux' || matrix.platform == 'macos' || matrix.platform == 'ios' + run: | + ls -R dist/ + mkdir out + mkdir tmp_out + EXT="${{ matrix.targets }}" + mv dist/*/*.$EXT tmp_out/${{matrix.filename}}.$EXT + chmod +x tmp_out/${{matrix.filename}}.$EXT + if [ "${{matrix.platform}}" == "linux" ];then + cp ./.github/help/linux/* tmp_out/ + else + cp ./.github/help/mac-windows/* tmp_out/ + fi + if [[ "${{matrix.platform}}" == 'ios' ]];then + mv tmp_out/${{matrix.filename}}.ipa bin/${{matrix.filename}}.ipa + else + cd tmp_out + 7z a ${{matrix.filename}}.zip ./ + mv *.zip ../out/ + fi + + - name: Clean up keychain and provisioning profile + if: ${{ always() && startsWith(matrix.os,'macos')}} + run: | + security delete-keychain $RUNNER_TEMP/app-signing.keychain-db + rm ~/Library/MobileDevice/Provisioning\ Profiles/build_pp.mobileprovision + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: artifact + path: ./out + retention-days: 2