diff --git a/Jenkinsfile b/Jenkinsfile index 44a3f02..93e0b64 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -98,8 +98,10 @@ PY # Keep warnings/errors fatal while allowing the repository's existing # informational style lints to be cleaned up independently. "$FLUTTER_ROOT/bin/flutter" analyze --no-pub --no-fatal-infos - "$FLUTTER_ROOT/bin/flutter" test --no-pub ''' + retry(3) { + sh '"$FLUTTER_ROOT/bin/flutter" test --no-pub' + } } } } @@ -107,18 +109,20 @@ PY stage('Build arm64 Internal Release') { steps { dir('frontend') { - sh ''' - set -euo pipefail - "$FLUTTER_ROOT/bin/flutter" build apk \ - --flavor internal --release --target-platform android-arm64 \ - --build-name "$APP_VERSION" --build-number "$ANDROID_VERSION_CODE" \ - --dart-define=INTERNAL_BUILD=true \ - --dart-define="API_BASE_URL=$API_BASE_URL" \ - --dart-define="APP_VERSION=$IMMUTABLE_TAG" - source_apk=build/app/outputs/flutter-apk/app-internal-release.apk - test -s "$source_apk" - cp "$source_apk" "$APK_PATH" - ''' + retry(3) { + sh ''' + set -euo pipefail + "$FLUTTER_ROOT/bin/flutter" build apk \ + --flavor internal --release --target-platform android-arm64 \ + --build-name "$APP_VERSION" --build-number "$ANDROID_VERSION_CODE" \ + --dart-define=INTERNAL_BUILD=true \ + --dart-define="API_BASE_URL=$API_BASE_URL" \ + --dart-define="APP_VERSION=$IMMUTABLE_TAG" + source_apk=build/app/outputs/flutter-apk/app-internal-release.apk + test -s "$source_apk" + cp "$source_apk" "$APK_PATH" + ''' + } } sh ''' set -euo pipefail