v1.0.7 #8
Workflow file for this run
This file contains hidden or 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: Release | |
| on: | |
| release: | |
| types: [published] | |
| permissions: | |
| contents: write | |
| env: | |
| PERRY_LICENSE_KEY: ${{ secrets.PERRY_LICENSE_KEY }} | |
| PERRY_API_TOKEN: ${{ secrets.PERRY_API_TOKEN }} | |
| jobs: | |
| # ───────────────────────────────────────────── | |
| # iOS → TestFlight | |
| # ───────────────────────────────────────────── | |
| build-ios: | |
| name: iOS (TestFlight) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install perry | |
| run: | | |
| mkdir -p /tmp/perry-install | |
| gh release download --repo PerryTS/perry --pattern 'perry-linux-x86_64.tar.gz' --dir /tmp/perry-install | |
| tar xzf /tmp/perry-install/perry-linux-x86_64.tar.gz -C /tmp/perry-install | |
| sudo mv /tmp/perry-install/perry /usr/local/bin/ | |
| rm -rf /tmp/perry-install | |
| perry --version | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Configure perry | |
| run: | | |
| mkdir -p ~/.perry | |
| printf 'license_key = "%s"\nserver = "https://hub.perryts.com"\napi_token = "%s"\n' \ | |
| "$PERRY_LICENSE_KEY" "$PERRY_API_TOKEN" > ~/.perry/config.toml | |
| - name: Set version and build number | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| sed -i "s/^version = .*/version = \"$VERSION\"/" perry.toml | |
| sed -i "s/^build_number = .*/build_number = ${{ github.run_number }}/" perry.toml | |
| - name: Decode signing credentials | |
| run: | | |
| echo "${{ secrets.APPLE_IOS_P12 }}" | base64 -d > /tmp/ios_distribution.p12 | |
| echo "${{ secrets.APPLE_IOS_PROVISIONING_PROFILE }}" | base64 -d > /tmp/ios.mobileprovision | |
| echo "${{ secrets.APPLE_P8_KEY }}" | base64 -d > /tmp/appstore_connect.p8 | |
| - name: Inject credential paths into perry.toml | |
| run: | | |
| sed -i '/^\[ios\]/,/^\[/{s|^certificate = .*|certificate = "/tmp/ios_distribution.p12"|}' perry.toml | |
| sed -i '/^\[ios\]/,/^\[/{s|^provisioning_profile = .*|provisioning_profile = "/tmp/ios.mobileprovision"|}' perry.toml | |
| - name: Publish iOS to TestFlight | |
| run: | | |
| perry publish ios \ | |
| --certificate /tmp/ios_distribution.p12 \ | |
| --provisioning-profile /tmp/ios.mobileprovision \ | |
| --apple-p8-key /tmp/appstore_connect.p8 \ | |
| --apple-key-id "$PERRY_APPLE_KEY_ID" \ | |
| --apple-issuer-id "$PERRY_APPLE_ISSUER_ID" \ | |
| --apple-team-id "$PERRY_APPLE_TEAM_ID" | |
| env: | |
| PERRY_APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} | |
| PERRY_APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
| PERRY_APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} | |
| PERRY_APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} | |
| # ───────────────────────────────────────────── | |
| # tvOS → TestFlight | |
| # ───────────────────────────────────────────── | |
| build-tvos: | |
| name: tvOS (TestFlight) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install perry | |
| run: | | |
| mkdir -p /tmp/perry-install | |
| gh release download --repo PerryTS/perry --pattern 'perry-linux-x86_64.tar.gz' --dir /tmp/perry-install | |
| tar xzf /tmp/perry-install/perry-linux-x86_64.tar.gz -C /tmp/perry-install | |
| sudo mv /tmp/perry-install/perry /usr/local/bin/ | |
| rm -rf /tmp/perry-install | |
| perry --version | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Configure perry | |
| run: | | |
| mkdir -p ~/.perry | |
| printf 'license_key = "%s"\nserver = "https://hub.perryts.com"\napi_token = "%s"\n' \ | |
| "$PERRY_LICENSE_KEY" "$PERRY_API_TOKEN" > ~/.perry/config.toml | |
| - name: Set version and build number | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| sed -i "s/^version = .*/version = \"$VERSION\"/" perry.toml | |
| sed -i "s/^build_number = .*/build_number = ${{ github.run_number }}/" perry.toml | |
| - name: Decode signing credentials | |
| run: | | |
| echo "${{ secrets.APPLE_IOS_P12 }}" | base64 -d > /tmp/tvos_distribution.p12 | |
| echo "${{ secrets.APPLE_TVOS_PROVISIONING_PROFILE }}" | base64 -d > /tmp/tvos.mobileprovision | |
| echo "${{ secrets.APPLE_P8_KEY }}" | base64 -d > /tmp/appstore_connect.p8 | |
| - name: Inject credential paths into perry.toml | |
| run: | | |
| sed -i '/^\[tvos\]/,/^\[/{s|^certificate = .*|certificate = "/tmp/tvos_distribution.p12"|}' perry.toml | |
| sed -i '/^\[tvos\]/,/^\[/{s|^provisioning_profile = .*|provisioning_profile = "/tmp/tvos.mobileprovision"|}' perry.toml | |
| - name: Publish tvOS to TestFlight | |
| run: | | |
| perry publish tvos \ | |
| --certificate /tmp/tvos_distribution.p12 \ | |
| --provisioning-profile /tmp/tvos.mobileprovision \ | |
| --apple-p8-key /tmp/appstore_connect.p8 \ | |
| --apple-key-id "$PERRY_APPLE_KEY_ID" \ | |
| --apple-issuer-id "$PERRY_APPLE_ISSUER_ID" \ | |
| --apple-team-id "$PERRY_APPLE_TEAM_ID" | |
| env: | |
| PERRY_APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} | |
| PERRY_APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
| PERRY_APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} | |
| PERRY_APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} | |
| # ───────────────────────────────────────────── | |
| # macOS → App Store | |
| # ───────────────────────────────────────────── | |
| build-macos: | |
| name: macOS (App Store) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install perry | |
| run: | | |
| mkdir -p /tmp/perry-install | |
| gh release download --repo PerryTS/perry --pattern 'perry-linux-x86_64.tar.gz' --dir /tmp/perry-install | |
| tar xzf /tmp/perry-install/perry-linux-x86_64.tar.gz -C /tmp/perry-install | |
| sudo mv /tmp/perry-install/perry /usr/local/bin/ | |
| rm -rf /tmp/perry-install | |
| perry --version | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Configure perry | |
| run: | | |
| mkdir -p ~/.perry | |
| printf 'license_key = "%s"\nserver = "https://hub.perryts.com"\napi_token = "%s"\n' \ | |
| "$PERRY_LICENSE_KEY" "$PERRY_API_TOKEN" > ~/.perry/config.toml | |
| - name: Set version and build number | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| sed -i "s/^version = .*/version = \"$VERSION\"/" perry.toml | |
| sed -i "s/^build_number = .*/build_number = ${{ github.run_number }}/" perry.toml | |
| - name: Decode signing credentials | |
| run: | | |
| echo "${{ secrets.APPLE_APPSTORE_P12 }}" | base64 -d > /tmp/macos_appstore.p12 | |
| echo "${{ secrets.APPLE_INSTALLER_P12 }}" | base64 -d > /tmp/macos_installer.p12 | |
| echo "${{ secrets.APPLE_DEVID_P12 }}" | base64 -d > /tmp/macos_devid.p12 | |
| echo "${{ secrets.APPLE_P8_KEY }}" | base64 -d > /tmp/appstore_connect.p8 | |
| - name: Inject credential paths into perry.toml | |
| run: | | |
| sed -i '/^\[macos\]/,/^\[/{s|^certificate = .*|certificate = "/tmp/macos_appstore.p12"|}' perry.toml | |
| sed -i '/^\[macos\]/,/^\[/{s|^installer_certificate = .*|installer_certificate = "/tmp/macos_installer.p12"|}' perry.toml | |
| sed -i '/^\[macos\]/,/^\[/{s|^notarize_certificate = .*|notarize_certificate = "/tmp/macos_devid.p12"|}' perry.toml | |
| - name: Publish macOS to App Store | |
| run: | | |
| perry publish macos \ | |
| --certificate /tmp/macos_appstore.p12 \ | |
| --apple-p8-key /tmp/appstore_connect.p8 \ | |
| --apple-key-id "$PERRY_APPLE_KEY_ID" \ | |
| --apple-issuer-id "$PERRY_APPLE_ISSUER_ID" \ | |
| --apple-team-id "$PERRY_APPLE_TEAM_ID" | |
| env: | |
| PERRY_APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERT_PASSWORD }} | |
| PERRY_APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | |
| PERRY_APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} | |
| PERRY_APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} | |
| # ───────────────────────────────────────────── | |
| # Android → Play Store | |
| # ───────────────────────────────────────────── | |
| build-android: | |
| name: Android (Play Store) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install perry | |
| run: | | |
| mkdir -p /tmp/perry-install | |
| gh release download --repo PerryTS/perry --pattern 'perry-linux-x86_64.tar.gz' --dir /tmp/perry-install | |
| tar xzf /tmp/perry-install/perry-linux-x86_64.tar.gz -C /tmp/perry-install | |
| sudo mv /tmp/perry-install/perry /usr/local/bin/ | |
| rm -rf /tmp/perry-install | |
| perry --version | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Configure perry | |
| run: | | |
| mkdir -p ~/.perry | |
| printf 'license_key = "%s"\nserver = "https://hub.perryts.com"\napi_token = "%s"\n' \ | |
| "$PERRY_LICENSE_KEY" "$PERRY_API_TOKEN" > ~/.perry/config.toml | |
| - name: Set version and build number | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| sed -i "s/^version = .*/version = \"$VERSION\"/" perry.toml | |
| sed -i "s/^build_number = .*/build_number = ${{ github.run_number }}/" perry.toml | |
| - name: Decode signing credentials | |
| run: | | |
| echo "${{ secrets.ANDROID_KEYSTORE }}" | base64 -d > /tmp/release.keystore | |
| echo "${{ secrets.GOOGLE_PLAY_KEY_JSON }}" | base64 -d > /tmp/googleplay.json | |
| - name: Inject credential paths into perry.toml | |
| run: | | |
| sed -i 's|^google_play_key = ".*"|google_play_key = "/tmp/googleplay.json"|' perry.toml | |
| sed -i 's|^keystore = ".*"|keystore = "/tmp/release.keystore"|' perry.toml | |
| - name: Publish Android to Play Store | |
| run: perry publish android | |
| env: | |
| PERRY_ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} | |
| # ───────────────────────────────────────────── | |
| # Windows → GitHub Release | |
| # ───────────────────────────────────────────── | |
| build-windows: | |
| name: Windows | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install perry | |
| run: | | |
| mkdir -p /tmp/perry-install | |
| gh release download --repo PerryTS/perry --pattern 'perry-linux-x86_64.tar.gz' --dir /tmp/perry-install | |
| tar xzf /tmp/perry-install/perry-linux-x86_64.tar.gz -C /tmp/perry-install | |
| sudo mv /tmp/perry-install/perry /usr/local/bin/ | |
| rm -rf /tmp/perry-install | |
| perry --version | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Configure perry | |
| run: | | |
| mkdir -p ~/.perry | |
| printf 'license_key = "%s"\nserver = "https://hub.perryts.com"\napi_token = "%s"\n' \ | |
| "$PERRY_LICENSE_KEY" "$PERRY_API_TOKEN" > ~/.perry/config.toml | |
| - name: Set version and build number | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| sed -i "s/^version = .*/version = \"$VERSION\"/" perry.toml | |
| sed -i "s/^build_number = .*/build_number = ${{ github.run_number }}/" perry.toml | |
| - name: Build for Windows | |
| run: perry publish windows | |
| - name: Upload to release | |
| run: | | |
| shopt -s nullglob | |
| files=(dist/*.exe dist/*windows*) | |
| if [ ${#files[@]} -eq 0 ]; then | |
| echo "::warning::No Windows artifacts found in dist/" | |
| ls -la dist/ || true | |
| else | |
| for f in "${files[@]}"; do | |
| gh release upload "$GITHUB_REF_NAME" "$f" --clobber | |
| done | |
| fi | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| # ───────────────────────────────────────────── | |
| # Linux → GitHub Release | |
| # ───────────────────────────────────────────── | |
| build-linux: | |
| name: Linux | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install perry | |
| run: | | |
| mkdir -p /tmp/perry-install | |
| gh release download --repo PerryTS/perry --pattern 'perry-linux-x86_64.tar.gz' --dir /tmp/perry-install | |
| tar xzf /tmp/perry-install/perry-linux-x86_64.tar.gz -C /tmp/perry-install | |
| sudo mv /tmp/perry-install/perry /usr/local/bin/ | |
| rm -rf /tmp/perry-install | |
| perry --version | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| - name: Configure perry | |
| run: | | |
| mkdir -p ~/.perry | |
| printf 'license_key = "%s"\nserver = "https://hub.perryts.com"\napi_token = "%s"\n' \ | |
| "$PERRY_LICENSE_KEY" "$PERRY_API_TOKEN" > ~/.perry/config.toml | |
| - name: Set version and build number | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| sed -i "s/^version = .*/version = \"$VERSION\"/" perry.toml | |
| sed -i "s/^build_number = .*/build_number = ${{ github.run_number }}/" perry.toml | |
| - name: Build for Linux | |
| run: perry publish linux | |
| - name: Upload to release | |
| run: | | |
| shopt -s nullglob | |
| files=(dist/*.AppImage dist/*linux*) | |
| if [ ${#files[@]} -eq 0 ]; then | |
| echo "::warning::No Linux artifacts found in dist/" | |
| ls -la dist/ || true | |
| else | |
| for f in "${files[@]}"; do | |
| gh release upload "$GITHUB_REF_NAME" "$f" --clobber | |
| done | |
| fi | |
| env: | |
| GH_TOKEN: ${{ github.token }} |