Skip to content

v1.0.6

v1.0.6 #7

Workflow file for this run

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 }}