forked from shekohex/flutterust
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml
213 lines (201 loc) · 6.56 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# USE https://config.travis-ci.com/explore to check travis.yml
#
# https://docs.travis-ci.com/user/languages/android/
# android only up to trusty
# rust only up to bionic
# dart only up to xenial
#language: dart
env:
global:
- CRATE_NAME=flutterustee
- ID_ANDROID_SDK_TOOLS=3859397
jobs:
include:
- os : linux
dist: focal
name: job_build_linux_20_04_nightly
env: VER=LTS_20.04
- os : osx
osx_image: xcode12
name: job_macos10_15_nightly
env: VER=MacOS10.15
addons:
apt:
packages:
# additional for clang https://apt.llvm.org for focal (pop!_linux)
#- lib32stdc++6
#- lib32gcc1
#- lib32gcc-s1
#- libc6-i386
# clang llvm (focal version is 10 - 11 with apt.llvm.org)
- libllvm-10-ocaml-dev
- libllvm10
- llvm-10
- llvm-10-dev
- llvm-10-doc
- llvm-10-examples
- llvm-10-runtime
# clang clang
- clang-10
- clang-tools-10
- clang-10-doc
- libclang-common-10-dev
- libclang-10-dev
- libclang1-10
- clang-format-10
- clangd-10
# java (version 11 is default in)
- openjdk-8-jdk
# normal
- jq
- p7zip-full
homebrew:
packages:
# clang
- llvm
# bundletool not need for ios build (only if apk would be build on ios, too)
# bundletool
# normal
- jq
- p7zip
taps: homebrew/cask-versions
casks:
- adoptopenjdk8
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
cache:
cargo: true
directories:
- "$HOME/.gradle/caches"
- "$HOME/.gradle/wrapper"
- "$HOME/.pub-cache" # flutter
- "$HOME/.cargo"
before_script:
- env
before_install:
- echo "building $TRAVIS_OS_NAME"
- export OLD_PATH=$PWD
- echo $OLD_PATH
- cd $HOME
- mkdir -p $HOME/bin
# download specific version
- if [ $TRAVIS_OS_NAME == "linux" ]; then
wget "https://dl.google.com/android/repository/sdk-tools-linux-${ID_ANDROID_SDK_TOOLS}.zip" -O $HOME/android-sdk.tgz;
else
wget "https://dl.google.com/android/repository/sdk-tools-darwin-${ID_ANDROID_SDK_TOOLS}.zip" -O $HOME/android-sdk.tgz;
fi
- mkdir -p android
- unzip android-sdk.tgz -d android/sdk
# sdk licences (maybe platform specific, this is linux)
- mkdir -p android/sdk/licenses
- printf "8933bad161af4178b1185d1a37fbf41ea5269c55\nd56f5187479451eabf01fb78af6dfcb131a6481e" > android/sdk/licenses/android-sdk-license
- printf "84831b9409646a918e30573bab4c9c91346d8abd" > android/sdk/licenses/android-sdk-preview-license
# set sdk paths
- export PATH=$PATH:$HOME/android/sdk/tools:$HOME/android/sdk/tools/bin:$HOME/bin
- export ANDROID_SDK_ROOT=$HOME/android/sdk
- export ANDROID_HOME=$HOME/android/sdk
# java 8 is 1.8, 11 is 1.11 but doesn't work with sdkmanager
- if [ $TRAVIS_OS_NAME == "linux" ]; then
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64";
else
export JAVA_HOME="$(/usr/libexec/java_home -v1.8)";
/usr/libexec/java_home;
fi
- export DEFAULT_JVM_OPTS="-Dcom.android.sdklib.toolsdir=%~dp0\.. -XX:+IgnoreUnrecognizedVMOptions"
- export JAVA_OPTS="-XX:+IgnoreUnrecognizedVMOptions"
- echo $JAVA_HOME
- java -version
- sdkmanager --list;
- echo y | sdkmanager 'ndk-bundle';
- export ANDROID_NDK_HOME=$HOME/android/sdk/ndk-bundle;
# "linux": specific
# - bundletool
# "osx":
# - wasm-bindgen as binary for ios to not build it
- if [ $TRAVIS_OS_NAME == "linux" ]; then
curl --header "Authorization:\ token ${GITHUB_PAT}" -s https://api.github.com/repos/google/bundletool/releases/latest | jq -r '.assets[].browser_download_url' | xargs wget -q -O bundletool.jar;
else
curl --header "Authorization:\ token ${GITHUB_PAT}" -s https://api.github.com/repos/rustwasm/wasm-bindgen/releases/latest | jq -r '.assets[].browser_download_url' | grep apple-darwin | xargs wget -q -O wasm-bindgen-apple-darwin.tgz;
tar -xvzf wasm-bindgen-apple-darwin.tgz --strip=1;
mv -f wasm-bindgen $HOME/bin;
mv -f wasm2es6js $HOME/bin;
fi
# flutter
- git clone https://github.com/flutter/flutter.git -b stable
- ./flutter/bin/flutter config --no-analytics
- ./flutter/bin/flutter doctor
install:
- echo $CRATE_NAME-$TRAVIS_TAG
# rustup
- curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > ./rustup.sh
- sh ./rustup.sh -y
# rustup setup: source and nightly (flutterust only with nightly features)
- source ~/.cargo/env || true
- rustup default nightly
#- rustup target add wasm32-unknown-unknown
# ios also: armv7-apple-ios i386-apple-ios
- rustup target add aarch64-linux-android
- if [ $TRAVIS_OS_NAME == "linux" ]; then
rustup target add armv7-linux-androideabi i686-linux-android x86_64-linux-android;
else
rustup target add aarch64-apple-ios x86_64-apple-ios;
fi
# cargo programs
- cargo install cargo-make
- if [ $TRAVIS_OS_NAME == "linux" ]; then
cargo install cargo-ndk;
cargo install cbindgen;
cargo install wasm-bindgen-cli;
else
cargo install cargo-lipo;
travis_wait 30 cargo install cbindgen;
echo "no build, wasm-bindgen used as binary";
fi
#
- cargo install dart-bindgen --features cli
# cargo flutter had 1149 sec for iOS!!!
- travis_wait 30 cargo install cargo-flutter
script:
- echo $OLD_PATH
- cd $OLD_PATH
- cargo fetch
- cargo make
- travis_wait 30 cargo build --offline
- if [ $TRAVIS_OS_NAME == "linux" ]; then
$HOME/flutter/bin/flutter build appbundle;
else
$HOME/flutter/bin/flutter build ios;
fi
before_deploy:
- if [ $TRAVIS_OS_NAME == "osx" ]; then
bundletool build-apks --bundle=build/app/outputs/bundle/release/app-release.aab --output=$CRATE_NAME-universal.apks --overwrite --mode=universal;
else
java -jar $HOME/bundletool.jar build-apks --bundle=build/app/outputs/bundle/release/app-release.aab --output=$CRATE_NAME-universal.apks --overwrite --mode=universal;
fi
- export APK_PATH=artifacts
- mkdir -p $APK_PATH/universal
- unzip $CRATE_NAME-universal.apks -d $APK_PATH/universal
# the universal
- cp ${APK_PATH}/universal/universal.apk ${CRATE_NAME}-universal.apk
#
- export RELEASE_APK_FILES=$(ls *.apk)
- echo "deploying $RELEASE_APK_FILES to GitHub releases"
deploy:
api_key: $GitHubTokenToDeployFlRs
overwrite: true
file_glob: true
file:
- ${CRATE_NAME}-universal.apk
provider: releases
skip_cleanup: true
on:
repo: electricherd/flutterust
#tags: true
branches:
only:
# release tags
#- /^v\d+\.\d+\.\d+.*$/
- master
ignore:
- README.md
- README-release.md