mirror of
https://github.com/mastodon/mastodon-ios.git
synced 2025-02-01 18:07:22 +01:00
feat: add TestFlight deploy workflow
This commit is contained in:
parent
505ca804b3
commit
e2f505fa67
65
.github/scripts/build-release.sh
vendored
Executable file
65
.github/scripts/build-release.sh
vendored
Executable file
@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -xeu
|
||||
set -o pipefail
|
||||
|
||||
function finish() {
|
||||
ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip"
|
||||
rm -rf "${RESULT_BUNDLE_PATH}"
|
||||
}
|
||||
|
||||
trap finish EXIT
|
||||
|
||||
SDK="${SDK:-iphoneos}"
|
||||
WORKSPACE="${WORKSPACE:-Mastodon.xcworkspace}"
|
||||
SCHEME="${SCHEME:-Mastodon}"
|
||||
CONFIGURATION=${CONFIGURATION:-Release}
|
||||
|
||||
BUILD_DIR=${BUILD_DIR:-.build}
|
||||
ARTIFACT_PATH=${RESULT_PATH:-${BUILD_DIR}/Artifacts}
|
||||
RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult"
|
||||
ARCHIVE_PATH=${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}
|
||||
DERIVED_DATA_PATH=${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}
|
||||
CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0}
|
||||
EXPORT_OPTIONS_FILE=".github/support/ExportOptions.plist"
|
||||
|
||||
WORK_DIR=$(pwd)
|
||||
API_PRIVATE_KEYS_PATH="${WORK_DIR}/${BUILD_DIR}/private_keys"
|
||||
API_KEY_FILE="${API_PRIVATE_KEYS_PATH}/api_key.p8"
|
||||
|
||||
rm -rf "${RESULT_BUNDLE_PATH}"
|
||||
|
||||
rm -rf "${API_PRIVATE_KEYS_PATH}"
|
||||
mkdir -p "${API_PRIVATE_KEYS_PATH}"
|
||||
echo -n "${ENV_API_PRIVATE_KEY}" | base64 --decode > "${API_KEY_FILE}"
|
||||
|
||||
xcrun xcodebuild clean \
|
||||
-workspace "${WORKSPACE}" \
|
||||
-scheme "${SCHEME}" \
|
||||
-configuration "${CONFIGURATION}"
|
||||
|
||||
xcrun xcodebuild archive \
|
||||
-workspace "${WORKSPACE}" \
|
||||
-scheme "${SCHEME}" \
|
||||
-configuration "${CONFIGURATION}" \
|
||||
-destination generic/platform=iOS \
|
||||
-sdk "${SDK}" \
|
||||
-parallelizeTargets \
|
||||
-showBuildTimingSummary \
|
||||
-derivedDataPath "${DERIVED_DATA_PATH}" \
|
||||
-archivePath "${ARCHIVE_PATH}" \
|
||||
-resultBundlePath "${RESULT_BUNDLE_PATH}" \
|
||||
-allowProvisioningUpdates \
|
||||
-authenticationKeyPath "${API_KEY_FILE}" \
|
||||
-authenticationKeyID "${ENV_API_KEY_ID}" \
|
||||
-authenticationKeyIssuerID "${ENV_ISSUER_ID}"
|
||||
|
||||
xcrun xcodebuild \
|
||||
-exportArchive \
|
||||
-archivePath "${ARCHIVE_PATH}" \
|
||||
-exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \
|
||||
-exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" \
|
||||
-allowProvisioningUpdates
|
||||
|
||||
# Zip up the Xcode Archive into Artifacts folder.
|
||||
ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip"
|
2
.github/scripts/setup.sh
vendored
2
.github/scripts/setup.sh
vendored
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
# workaround https://github.com/CocoaPods/CocoaPods/issues/11355
|
||||
sed -i '' $'1s/^/source "https:\\/\\/github.com\\/CocoaPods\\/Specs.git"\\\n\\\n/' Podfile
|
||||
# sed -i '' $'1s/^/source "https:\\/\\/github.com\\/CocoaPods\\/Specs.git"\\\n\\\n/' Podfile
|
||||
|
||||
# Install Ruby Bundler
|
||||
gem install bundler:2.3.11
|
||||
|
8
.github/support/ExportOptions.plist
vendored
Normal file
8
.github/support/ExportOptions.plist
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>method</key>
|
||||
<string>app-store</string>
|
||||
</dict>
|
||||
</plist>
|
56
.github/workflows/develop-build.yml
vendored
Normal file
56
.github/workflows/develop-build.yml
vendored
Normal file
@ -0,0 +1,56 @@
|
||||
name: Build for Develop TestFlight
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
- ci-test
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: macOS-12
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: setup
|
||||
env:
|
||||
NotificationEndpointDebug: ${{ secrets.NotificationEndpointDebug }}
|
||||
NotificationEndpointRelease: ${{ secrets.NotificationEndpointRelease }}
|
||||
run: exec ./.github/scripts/setup.sh
|
||||
|
||||
- name: Import Code-Signing Certificates
|
||||
uses: Apple-Actions/import-codesign-certs@v1 # https://github.com/Apple-Actions/import-codesign-certs
|
||||
with:
|
||||
keychain: build-p12
|
||||
p12-file-base64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
|
||||
p12-password: ${{ secrets.P12_PASSWORD }}
|
||||
|
||||
- name: Download Provisioning Profiles
|
||||
uses: Apple-Actions/download-provisioning-profiles@v1 # https://github.com/Apple-Actions/download-provisioning-profiles
|
||||
with:
|
||||
bundle-id: org.joinmastodon.app
|
||||
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
|
||||
api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
|
||||
api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
|
||||
|
||||
- name: build
|
||||
env:
|
||||
ENV_ISSUER_ID: ${{ secrets.APPSTORE_ISSUER_ID }}
|
||||
ENV_API_KEY_ID: ${{ secrets.APPSTORE_KEY_ID }}
|
||||
ENV_API_PRIVATE_KEY: ${{ secrets.APP_STORE_CONNECT_KEY_BASE64 }}
|
||||
run: exec ./.github/scripts/build-release.sh
|
||||
|
||||
- name: Upload TestFlight Build
|
||||
uses: Apple-Actions/upload-testflight-build@master
|
||||
with:
|
||||
app-path: .build/Artifacts/Mastodon.ipa/Mastodon.ipa
|
||||
issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }}
|
||||
api-key-id: ${{ secrets.APPSTORE_KEY_ID }}
|
||||
api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }}
|
||||
|
||||
- name: Clean up keychain and provisioning profile
|
||||
if: ${{ always() }}
|
||||
run: |
|
||||
security delete-keychain build-p12.keychain-db
|
7
Podfile
7
Podfile
@ -1,3 +1,4 @@
|
||||
source 'https://cdn.cocoapods.org/'
|
||||
platform :ios, '14.0'
|
||||
|
||||
target 'Mastodon' do
|
||||
@ -35,5 +36,11 @@ post_install do |installer|
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
|
||||
end
|
||||
# https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1201464693
|
||||
if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle"
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -37,6 +37,6 @@ SPEC CHECKSUMS:
|
||||
"UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3
|
||||
XLPagerTabStrip: 61c57fd61f611ee5f01ff1495ad6fbee8bf496c5
|
||||
|
||||
PODFILE CHECKSUM: 50ec5b2c4aa189024cc5ab41039f983dc5609040
|
||||
PODFILE CHECKSUM: 8b15fb6d4e801b7a7e7761a2e2fe40a89b1da4ff
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
Loading…
x
Reference in New Issue
Block a user