From b5e613141e98528f45d3d2864e08278b1c7d4973 Mon Sep 17 00:00:00 2001 From: Pascal Hartig Date: Fri, 27 Nov 2020 09:09:48 -0800 Subject: [PATCH] Set up automated retry (#1714) Summary: Circle occasionally fails with a network error in one of the Android dependencies. This uses a simple retry to alleviate the need to manually restart the tasks. Pull Request resolved: https://github.com/facebook/flipper/pull/1714 Test Plan: Ran this on my private fork: https://app.circleci.com/pipelines/github/passy/flipper-1/9/workflows/e1b40086-1dce-49eb-a178-81052145ed0f Reviewed By: nikoant Differential Revision: D25170790 Pulled By: passy fbshipit-source-id: 220759fb227855eac807d64f41c78f5781599515 --- .circleci/config.yml | 12 ++++++++++-- scripts/install-retry.sh | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) create mode 100755 scripts/install-retry.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 7d0f0a861..222119d6b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -14,20 +14,28 @@ jobs: executor: default-executor steps: - checkout + - run: + name: install retry + command: scripts/install-retry.sh - run: name: build and deploy command: | yes | sdkmanager "platforms;android-27" || true - ./gradlew :android:assembleRelease && scripts/publish-android-snapshot.sh + /tmp/retry -m 3 ./gradlew :android:assembleRelease + /tmp/retry -m 3 scripts/publish-android-snapshot.sh release: executor: default-executor steps: - checkout + - run: + name: install retry + command: scripts/install-retry.sh - run: name: build and deploy command: | yes | sdkmanager "platforms;android-27" || true - ./gradlew :android:assembleRelease && scripts/publish-android-release.sh + /tmp/retry -m 3 ./gradlew :android:assembleRelease + /tmp/retry -m 3 scripts/publish-android-release.sh workflows: version: 2 build-and-deploy: diff --git a/scripts/install-retry.sh b/scripts/install-retry.sh new file mode 100755 index 000000000..946857a8c --- /dev/null +++ b/scripts/install-retry.sh @@ -0,0 +1,16 @@ +#!/bin/bash -xe +# Copyright (c) Facebook, Inc. and its affiliates. +# +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +# try to install with wget +command -v wget &>/dev/null && wget -O /tmp/retry "https://github.com/moul/retry/releases/download/v0.5.0/retry_$(uname -s)_$(uname -m)" || true + +# try to install with curl +if [ ! -f /tmp/retry ]; then + command -v curl &>/dev/null && curl -L -o /tmp/retry "https://github.com/moul/retry/releases/download/v0.5.0/retry_$(uname -s)_$(uname -m)" +fi + +chmod +x /tmp/retry +/tmp/retry --version