version: 2 jobs: prepare: machine: true working_directory: ~/ steps: - run: name: Prepare command: | sudo apt-get update sudo apt-get install -yq build-essential git unzip ncurses-dev libz-dev libssl-dev python subversion gettext gawk wget curl rsync perl build_x86_64: machine: true environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: x86_64 working_directory: ~/ steps: - run: name: cache command: | echo "cache 19 $OMR_TARGET" > /tmp/cache-target echo "cache 23 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: - cache-{{ checksum "/tmp/cache-version" }} - cache-{{ checksum "/tmp/cache-target" }} - run: name: Build toolchain no_output_timeout: 30m command: | git clone https://github.com/ysurac/openmptcprouter || true cd openmptcprouter git pull || true export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" sh build.sh prepare {tools,toolchain}/install -j2 echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - save_cache: key: cache-{{ checksum "/tmp/cache-target" }} paths: - openmptcprouter - run: name: Build no_output_timeout: 30m command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/install -j2 - run: name: Deploy command: | ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - save_cache: key: cache-{{ checksum "/tmp/cache-version" }} paths: - openmptcprouter build_x86: machine: true environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: x86 working_directory: ~/ steps: - run: name: cache command: | echo "cache 19 $OMR_TARGET" > /tmp/cache-target echo "cache 23 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: - cache-{{ checksum "/tmp/cache-version" }} - cache-{{ checksum "/tmp/cache-target" }} - run: name: Build toolchain no_output_timeout: 30m command: | git clone https://github.com/ysurac/openmptcprouter || true cd openmptcprouter git pull || true export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" sh build.sh prepare {tools,toolchain}/install -j2 echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - save_cache: key: cache-{{ checksum "/tmp/cache-target" }} paths: - openmptcprouter - run: name: Build no_output_timeout: 30m command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/install -j2 - run: name: Deploy command: | ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - save_cache: key: cache-{{ checksum "/tmp/cache-version" }} paths: - openmptcprouter build_rpi3: machine: true environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: rpi3 working_directory: ~/ steps: - run: name: cache command: | echo "cache 19 $OMR_TARGET" > /tmp/cache-target echo "cache 23 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: - cache-{{ checksum "/tmp/cache-version" }} - cache-{{ checksum "/tmp/cache-target" }} - run: name: Build toolchain no_output_timeout: 30m command: | git clone https://github.com/ysurac/openmptcprouter || true cd openmptcprouter git pull || true export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" sh build.sh prepare {tools,toolchain}/install -j2 echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - save_cache: key: cache-{{ checksum "/tmp/cache-target" }} paths: - openmptcprouter - run: name: Build no_output_timeout: 30m command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - run: name: Deploy command: | ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - save_cache: key: cache-{{ checksum "/tmp/cache-version" }} paths: - openmptcprouter build_rpi2: machine: true environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: rpi2 working_directory: ~/ steps: - run: name: cache command: | echo "cache 19 $OMR_TARGET" > /tmp/cache-target echo "cache 23 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: - cache-{{ checksum "/tmp/cache-version" }} - cache-{{ checksum "/tmp/cache-target" }} - run: name: Build toolchain no_output_timeout: 30m command: | git clone https://github.com/ysurac/openmptcprouter || true cd openmptcprouter git pull || true export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" sh build.sh prepare {tools,toolchain}/install -j2 echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - save_cache: key: cache-{{ checksum "/tmp/cache-target" }} paths: - openmptcprouter - run: name: Build no_output_timeout: 30m command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - run: name: Deploy command: | ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - save_cache: key: cache-{{ checksum "/tmp/cache-version" }} paths: - openmptcprouter build_bpi-r2: machine: true environment: - OMR_VERSION: $CIRCLE_TAG - OMR_TARGET: bpi-r2 working_directory: ~/ steps: - run: name: cache command: | echo "cache 21 $OMR_TARGET" > /tmp/cache-target echo "cache 25 $OMR_TARGET $OMR_VERSION" > /tmp/cache-version - restore_cache: keys: - cache-{{ checksum "/tmp/cache-version" }} - cache-{{ checksum "/tmp/cache-target" }} - run: name: Build toolchain no_output_timeout: 30m command: | git clone https://github.com/ysurac/openmptcprouter || true cd openmptcprouter git pull || true export OMR_PATH="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME/${CIRCLE_BRANCH:-$CIRCLE_TAG}" export OMR_FEED_URL="$CIRCLE_REPOSITORY_URL" export OMR_FEED_SRC="${CIRCLE_BRANCH:-$CIRCLE_TAG}" sh build.sh prepare {tools,toolchain}/install -j2 echo -e "$OMR_PRIVKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build echo -e "$OMR_PUBKEY" > ~/openmptcprouter/$OMR_TARGET/source/key-build.pub - save_cache: key: cache-{{ checksum "/tmp/cache-target" }} paths: - openmptcprouter - run: name: Build no_output_timeout: 30m command: make IGNORE_ERRORS=m -C ~/openmptcprouter/$OMR_TARGET/source package/{compile,install,index} target/compile -j2 package/compile -j2 target/install -j2 - run: name: Deploy command: | ssh -p ${OMR_DEPLOY_PORT:-22} deploy@$OMR_DEPLOY_HOST mkdir -p deploy/release rsync -av --delete-after ~/openmptcprouter/$OMR_TARGET/source/bin/ -e "ssh -q -p ${OMR_DEPLOY_PORT:-22}" deploy@$OMR_DEPLOY_HOST:deploy/release/$OMR_TARGET rm -rf ~/openmptcprouter/$OMR_TARGET/source/bin - save_cache: key: cache-{{ checksum "/tmp/cache-version" }} paths: - openmptcprouter workflows: version: 2 main: jobs: - prepare - build_x86_64: requires: - prepare - build_x86: requires: - prepare - build_rpi3: requires: - prepare - build_rpi2: requires: - prepare - build_bpi-r2: requires: - prepare