mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-15 13:35:19 +00:00
Add github workflow
This commit is contained in:
parent
5861c381b8
commit
bcc2402fcf
139
.github/workflows/build.yml
vendored
Normal file
139
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,139 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-10.15
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
fetch-depth: '0'
|
||||
|
||||
- name: Set active Xcode path
|
||||
run: sudo xcode-select -s /Applications/Xcode_12.3.app/Contents/Developer
|
||||
|
||||
- name: Create canonical source directory
|
||||
run: |
|
||||
set -x
|
||||
sudo mkdir /Users/telegram
|
||||
sudo chown -R $(whoami) /Users/telegram
|
||||
cp -R $GITHUB_WORKSPACE /Users/telegram/
|
||||
mv /Users/telegram/$(basename $GITHUB_WORKSPACE) /Users/telegram/telegram-ios
|
||||
|
||||
- name: Build the App
|
||||
run: |
|
||||
set -x
|
||||
|
||||
# source code paths are included in the final binary, so we need to make them stable across builds
|
||||
SOURCE_DIR=/Users/telegram/telegram-ios
|
||||
|
||||
# use canonical bazel root
|
||||
BAZEL_USER_ROOT="/private/var/tmp/_bazel_telegram"
|
||||
|
||||
# download bazel
|
||||
mkdir -p $HOME/bazel-dist
|
||||
pushd $HOME/bazel-dist
|
||||
curl -O -L https://github.com/bazelbuild/bazel/releases/download/3.7.0/bazel-3.7.0-darwin-x86_64
|
||||
mv bazel-3.7.0* bazel
|
||||
chmod +x bazel
|
||||
./bazel --version
|
||||
popd
|
||||
|
||||
cd $SOURCE_DIR
|
||||
|
||||
export APP_VERSION=$(cat versions.json | python3 -c 'import json,sys;obj=json.load(sys.stdin);print(obj["app"]);')
|
||||
export COMMIT_COUNT=$(git rev-list --count HEAD)
|
||||
export COMMIT_COUNT="$(($COMMIT_COUNT+2000))"
|
||||
export BUILD_NUMBER="$COMMIT_COUNT"
|
||||
echo "BUILD_NUMBER=$(echo $BUILD_NUMBER)" >> $GITHUB_ENV
|
||||
echo "APP_VERSION=$(echo $APP_VERSION)" >> $GITHUB_ENV
|
||||
|
||||
# prepare temporary keychain
|
||||
export MY_KEYCHAIN="temp.keychain"
|
||||
export MY_KEYCHAIN_PASSWORD="secret"
|
||||
security create-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN"
|
||||
security list-keychains -d user -s "$MY_KEYCHAIN" $(security list-keychains -d user | sed s/\"//g)
|
||||
security set-keychain-settings "$MY_KEYCHAIN"
|
||||
security unlock-keychain -p "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN"
|
||||
|
||||
# install fake certificates
|
||||
export CERTS_PATH="build-system/fake-codesigning/certs/distribution"
|
||||
for f in "$CERTS_PATH"/*.p12; do
|
||||
security import "$f" -k "$MY_KEYCHAIN" -P "" -T /usr/bin/codesign -T /usr/bin/security
|
||||
done
|
||||
# fake certificates are self-signed, so we need to manually mark them as trusted (otherwise bazel will not pick them up)
|
||||
for f in "$CERTS_PATH"/*.cer; do
|
||||
sudo security add-trusted-cert -d -r trustRoot -p codeSign -k "$MY_KEYCHAIN" "$f"
|
||||
done
|
||||
security set-key-partition-list -S apple-tool:,apple: -k "$MY_KEYCHAIN_PASSWORD" "$MY_KEYCHAIN"
|
||||
|
||||
# use the official release configuration
|
||||
rm -rf $HOME/telegram-configuration
|
||||
mkdir -p $HOME/telegram-configuration
|
||||
cp -R build-system/example-configuration/* $HOME/telegram-configuration/
|
||||
|
||||
# build the app
|
||||
python3 build-system/Make/Make.py \
|
||||
--bazel="$HOME/bazel-dist/bazel" \
|
||||
--bazelUserRoot="$BAZEL_USER_ROOT" \
|
||||
build \
|
||||
--configurationPath="$HOME/telegram-configuration" \
|
||||
--buildNumber=$BUILD_NUMBER \
|
||||
--configuration=release_universal
|
||||
|
||||
# collect ipa
|
||||
OUTPUT_PATH="build/artifacts"
|
||||
rm -rf "$OUTPUT_PATH"
|
||||
mkdir -p "$OUTPUT_PATH"
|
||||
for f in bazel-out/applebin_ios-ios_arm*-opt-ST-*/bin/Telegram/Telegram.ipa; do
|
||||
cp "$f" $OUTPUT_PATH/
|
||||
done
|
||||
|
||||
# collect dsym
|
||||
mkdir -p build/DSYMs
|
||||
for f in bazel-out/applebin_ios-ios_arm*-opt-ST-*/bin/Telegram/*.dSYM; do
|
||||
cp -R "$f" build/DSYMs/
|
||||
done
|
||||
zip -r "./$OUTPUT_PATH/Telegram.DSYMs.zip" build/DSYMs 1>/dev/null
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: build-${{ env.BUILD_NUMBER }}
|
||||
release_name: Telegram ${{ env.APP_VERSION }} (${{ env.BUILD_NUMBER }})
|
||||
body: |
|
||||
An unsigned build of Telegram for iOS ${{ env.APP_VERSION }} (${{ env.BUILD_NUMBER }})
|
||||
draft: false
|
||||
prerelease: false
|
||||
|
||||
- name: Upload Release IPA
|
||||
id: upload-release-ipa
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: /Users/telegram/telegram-ios/build/artifacts/Telegram.ipa
|
||||
asset_name: Telegram.ipa
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: Upload Release DSYM
|
||||
id: upload-release-dsym
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
||||
asset_path: /Users/telegram/telegram-ios/build/artifacts/Telegram.DSYMs.zip
|
||||
asset_name: Telegram.DSYMs.zip
|
||||
asset_content_type: application/zip
|
Loading…
x
Reference in New Issue
Block a user