From 830f4d6b7c9033f646eeb264ca8ee1965eded483 Mon Sep 17 00:00:00 2001 From: Gary Yu Date: Tue, 25 Sep 2018 08:37:24 +0800 Subject: [PATCH] chore: automatic binaries release (#1540) * automatic binaries release from Travis-CI server * build both osx and linux binary * add before_deploy for making tarball and show size * set file_glob for wildcards * automatic changelog generator * remove the --depth flag entirely, travis-ci default depth 50 cause change log auto-generation fail * note: - '#' in file name will be converted as '.', replace '#' with '-' - file_glob wildcards don't support multiple lines of 'file' --- .auto-release.sh | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ .travis.yml | 59 ++++++++++++++++++++++++++++++----------- 2 files changed, 112 insertions(+), 15 deletions(-) create mode 100755 .auto-release.sh diff --git a/.auto-release.sh b/.auto-release.sh new file mode 100755 index 000000000..d1bdfea8c --- /dev/null +++ b/.auto-release.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +repo_slug="mimblewimble/grin" +token="$GITHUB_TOKEN" + +tagname=`git describe --tags --exact-match 2>/dev/null || git symbolic-ref -q --short HEAD` + +echo 'make a tarball for the release binary...\n' + +if [[ $TRAVIS_OS_NAME == 'osx' ]]; then + + # Do some custom requirements on OS X + cd target/release ; rm -f *.tgz; tar zcf "grin-$tagname-$TRAVIS_JOB_ID-osx.tgz" grin + /bin/ls -ls *.tgz | awk '{print $6,$7,$8,$9,$10}' + md5 "grin-$tagname-$TRAVIS_JOB_ID-osx.tgz" > "grin-$tagname-$TRAVIS_JOB_ID-osx.tgz"-md5sum.txt + /bin/ls -ls *-md5sum.txt | awk '{print $6,$7,$8,$9,$10}' + cd - > /dev/null; + echo "tarball generated\n" + + # Only generate changelog on Linux platform, to avoid duplication + exit 0 +else + # Do some custom requirements on Linux + cd target/release ; rm -f *.tgz; tar zcf "grin-$tagname-$TRAVIS_JOB_ID-linux-amd64.tgz" grin + /bin/ls -ls *.tgz | awk '{print $6,$7,$8,$9,$10}' + md5sum "grin-$tagname-$TRAVIS_JOB_ID-linux-amd64.tgz" > "grin-$tagname-$TRAVIS_JOB_ID-linux-amd64.tgz"-md5sum.txt + /bin/ls -ls *-md5sum.txt | awk '{print $6,$7,$8,$9,$10}' + cd - > /dev/null; + echo "tarball generated\n" +fi + +version="$tagname" +branch="`git symbolic-ref -q --short HEAD`" + +# automatic changelog generator +gem install github_changelog_generator + +LAST_REVISION=$(git rev-list --tags --skip=1 --max-count=1) +LAST_RELEASE_TAG=$(git describe --abbrev=0 --tags ${LAST_REVISION}) + +# Generate CHANGELOG.md +github_changelog_generator \ + -u $(cut -d "/" -f1 <<< $repo_slug) \ + -p $(cut -d "/" -f2 <<< $repo_slug) \ + --token $token \ + --since-tag ${LAST_RELEASE_TAG} + +body="$(cat CHANGELOG.md)" + +# Overwrite CHANGELOG.md with JSON data for GitHub API +jq -n \ + --arg body "$body" \ + --arg name "$version" \ + --arg tag_name "$version" \ + --arg target_commitish "$branch" \ + '{ + body: $body, + name: $name, + tag_name: $tag_name, + target_commitish: $target_commitish, + draft: false, + prerelease: false + }' > CHANGELOG.md + +echo "Create release $version for repo: $repo_slug, branch: $branch" +curl -H "Authorization: token $token" --data @CHANGELOG.md "https://api.github.com/repos/$repo_slug/releases" +echo "auto changelog uploaded.\n" + diff --git a/.travis.yml b/.travis.yml index 0452ecb53..893b2863b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,42 @@ language: rust + +git: + depth: false + +os: + - linux + - osx + +dist: trusty +sudo: required + cache: cargo: true timeout: 240 + before_cache: -- rm -rf target/tmp -dist: trusty -sudo: required + - rm -rf target/tmp + rust: -- stable + - stable + addons: apt: sources: - - ubuntu-toolchain-r-test + - ubuntu-toolchain-r-test packages: - - g++-5 - - cmake - - libcurl4-openssl-dev - - libelf-dev - - libdw-dev - - cmake - - gcc - - binutils-dev + - g++-5 + - cmake + - libcurl4-openssl-dev + - libelf-dev + - libdw-dev + - cmake + - gcc + - binutils-dev + +before_install: + - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi + env: global: - RUST_BACKTRACE="1" @@ -37,12 +53,25 @@ env: - TEST_DIR=core - TEST_DIR=util - TEST_DIR=config -script: cd $TEST_DIR && cargo test --release + - TEST_DIR=none + +script: + - if [[ "$TEST_DIR" == "none" ]]; then cargo build --release; fi + - if [[ "$TEST_DIR" != "none" ]]; then cd $TEST_DIR && cargo test --release; fi + +before_deploy: + - if [[ "$TEST_DIR" == "none" ]]; then ./.auto-release.sh; fi + deploy: provider: releases api_key: secure: PBTFcoUmiQITkDdtFzrBlNR/5OgYHTCw+xVWGYu205xwTlj/ARBgw7DNt8dIdptLx+jOM2V5SbJqSFxs/CJ2ZcOHQZ6ubwpAJlRfuk3xDAi5JmuHYfcY+4SQ9l/0MgHnGfuml093xP7vTIYm2Vwwgdq8fd3jdWmvwgk9zgaGXB4UIXQA0yIs3EzxZpqiLg629Ouv7edMfyffwlG+rgQ1koe6sqeMCxIs0N3p97GCx19kNe0TV4dC7XAN74HreMdHmwxPKAK4xG/jtA1Snm0pMQ50Z0Kizt+0yrGOPMLnWwO9sS38iosBn3Vh1R8HKle2xBGflTtT/LG9lHdQZ5NF572q6681x6t7str4OjJ5bboy1PtNLFxG7RJCVIpp9gbouzdxIaJWRTxIdlk8UNQMrD8ieiNE6V1vZtbHGtJHRSJN1vO/XxsLlQDCyakLhG/nmSKXgiT9wIsu+zj/3oDe+LBt5QetEGYGBrCwUewjaQ7EP1rsT7alQrHTMad5DPjYftJuvfR+yBtz1qbzQwZVJpQC1KY1c476mXPQsaywuUrj56hH92p7P3vl6aMN2OPJZP+zENOVSURHc56KeTsDS55+KKzcRjCMA2L0LR1hP33+V5kavMHgCRrWIkxAkZ4eRqnermalzp8vlzL6EEoGm0VFLzv4mJmzrY1mC1LyCHo= - file: target/release/grin + file_glob: true + file: target/release/grin-*.tgz* + skip_cleanup: true on: repo: mimblewimble/grin tags: true + condition: $TEST_DIR = "none" + +