From 2660d576b49f3b94f684d74130bff6ed523cbee9 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 20 Jan 2022 14:09:09 +0800 Subject: [PATCH 01/10] fix: install with shell --- README.md | 5 ++++- cli/scripts/install.sh | 9 ++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4dcc78d1..509de57b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,10 @@ See [CHANGELOG]. You can install `hrp` with one shell command, which will download the latest version's released binary and install to the current system. ```bash -$ curl -sL https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh | bash +# install via curl +$ bash -c "$(curl -ksSL https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh)" +# install via wget +$ bash -c "$(wget https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh -O -)" ``` If you are a golang developer, you can also install `hrp` with `go get`. diff --git a/cli/scripts/install.sh b/cli/scripts/install.sh index b76f0adc..d8e90fd8 100644 --- a/cli/scripts/install.sh +++ b/cli/scripts/install.sh @@ -1,6 +1,6 @@ #!/bin/bash # install hrp with one shell command -# curl -sL https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh | bash +# bash -c "$(curl -ksSL https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh)" set -e @@ -46,17 +46,20 @@ function main() { echo echoInfo "Created temp dir..." + echo "$ mktemp -d -t hrp" tmp_dir=$(mktemp -d -t hrp) echo "$tmp_dir" cd "$tmp_dir" echo echoInfo "Downloading..." - curl -L $url -o "$pkg" + echo "$ curl -kL $url -o $pkg" + curl -kL $url -o "$pkg" echo echoInfo "Extracting..." - tar -zxf "$pkg" + echo "$ tar -xzf $pkg" + tar -xzf "$pkg" ls -lh echo From b31fa0aab882da58b0c31e0c505453f6aa0267af Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 20 Jan 2022 14:16:56 +0800 Subject: [PATCH 02/10] change: update script --- cli/scripts/install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cli/scripts/install.sh b/cli/scripts/install.sh index d8e90fd8..f074ef38 100644 --- a/cli/scripts/install.sh +++ b/cli/scripts/install.sh @@ -60,6 +60,7 @@ function main() { echoInfo "Extracting..." echo "$ tar -xzf $pkg" tar -xzf "$pkg" + echo "$ ls -lh" ls -lh echo @@ -70,7 +71,7 @@ function main() { rm -rf "$(which hrp)" fi - echo "chmod +x hrp && mv hrp /usr/local/bin/" + echo "$ chmod +x hrp && mv hrp /usr/local/bin/" chmod +x hrp mv hrp /usr/local/bin/ echo From 21f4be59763233cb8621fc884c16ce8c4e2ba042 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 20 Jan 2022 14:21:59 +0800 Subject: [PATCH 03/10] fix: mktemp: too few X's in template --- cli/scripts/install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/scripts/install.sh b/cli/scripts/install.sh index f074ef38..f404b4fa 100644 --- a/cli/scripts/install.sh +++ b/cli/scripts/install.sh @@ -46,8 +46,8 @@ function main() { echo echoInfo "Created temp dir..." - echo "$ mktemp -d -t hrp" - tmp_dir=$(mktemp -d -t hrp) + echo "$ mktemp -d -t hrp.XXXX" + tmp_dir=$(mktemp -d -t hrp.XXXX) echo "$tmp_dir" cd "$tmp_dir" echo From 9266585e4735e19a5ddfd3f03565eb8b920fca75 Mon Sep 17 00:00:00 2001 From: buyuxiang <347586493@qq.com> Date: Thu, 20 Jan 2022 16:52:22 +0800 Subject: [PATCH 04/10] fix: change zerolog to no color in windows Change-Id: Ibb5d19debec13af0cb67e08387746df4084bbbaf --- cli/hrp/cmd/root.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cli/hrp/cmd/root.go b/cli/hrp/cmd/root.go index 916e6db8..fbb9a633 100644 --- a/cli/hrp/cmd/root.go +++ b/cli/hrp/cmd/root.go @@ -2,6 +2,7 @@ package cmd import ( "os" + "runtime" "strings" "github.com/rs/zerolog" @@ -31,8 +32,12 @@ Website: https://httprunner.com Github: https://github.com/httprunner/hrp Copyright 2021 debugtalk`, PersistentPreRun: func(cmd *cobra.Command, args []string) { + var noColor = false + if runtime.GOOS == "windows" { + noColor = true + } if !logJSON { - log.Logger = zerolog.New(zerolog.ConsoleWriter{Out: os.Stderr}).With().Timestamp().Logger() + log.Logger = zerolog.New(zerolog.ConsoleWriter{NoColor: noColor, Out: os.Stderr}).With().Timestamp().Logger() log.Info().Msg("Set log to color console other than JSON format.") } }, From db596b13ca95478773ebac9fe7e7307f477e6f8f Mon Sep 17 00:00:00 2001 From: debugtalk Date: Thu, 20 Jan 2022 18:15:53 +0800 Subject: [PATCH 05/10] change: replace download url with aliyun oss --- .github/workflows/release.yml | 7 +++++++ README.md | 4 ++-- cli/scripts/install.sh | 19 ++++++++++++++++--- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ba7c612b..8e8b2bb7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,3 +29,10 @@ jobs: binary_name: "hrp" ldflags: "-s -w" extra_files: LICENSE README.md docs/CHANGELOG.md + - name: Upload to aliyun OSS + uses: manyuanrong/setup-ossutil@v2.0 + with: + endpoint: "oss-cn-beijing.aliyuncs.com" + access-key-id: ${{ secrets.ALIYUN_ACCESSKEY_ID }} + access-key-secret: ${{ secrets.ALIYUN_ACCESSKEY_SECRET }} + - run: ossutil cp -rf cli/scripts/install.sh *.tar.gz *.zip oss://httprunner/ diff --git a/README.md b/README.md index 509de57b..b3a17c04 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,9 @@ You can install `hrp` with one shell command, which will download the latest ver ```bash # install via curl -$ bash -c "$(curl -ksSL https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh)" +$ bash -c "$(curl -ksSL https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh)" # install via wget -$ bash -c "$(wget https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh -O -)" +$ bash -c "$(wget https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh -O -)" ``` If you are a golang developer, you can also install `hrp` with `go get`. diff --git a/cli/scripts/install.sh b/cli/scripts/install.sh index f404b4fa..034eb8dd 100644 --- a/cli/scripts/install.sh +++ b/cli/scripts/install.sh @@ -1,6 +1,6 @@ #!/bin/bash # install hrp with one shell command -# bash -c "$(curl -ksSL https://raw.githubusercontent.com/httprunner/hrp/main/cli/scripts/install.sh)" +# bash -c "$(curl -ksSL https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh)" set -e @@ -24,6 +24,11 @@ function get_latest_version() { curl -sL https://github.com/httprunner/hrp/releases/latest | grep 'Release' | cut -d" " -f4 } +function get_os() { + os=$(uname -s) + echo "$os" | tr '[:upper:]' '[:lower:]' +} + function get_arch() { arch=$(uname -m) if [ "$arch" == "x86_64" ]; then @@ -32,16 +37,24 @@ function get_arch() { echo "$arch" } +function get_download_url() { + # github + # url="https://github.com/httprunner/hrp/releases/download/$version/$1" + # aliyun oss + url="https://httprunner.oss-cn-beijing.aliyuncs.com/$1" + echo $url +} + function main() { echoInfo "Detect target hrp package..." version=$(get_latest_version) echo "Latest version: $version" - os=$(uname -s) + os=$(get_os) echo "Current OS: $os" arch=$(get_arch) echo "Current ARCH: $arch" pkg="hrp-$version-$os-$arch.tar.gz" - url="https://github.com/httprunner/hrp/releases/download/$version/$pkg" + url=$(get_download_url $pkg) echo "Selected package: $url" echo From 08817d16b59bb09595eb0c37412716d5a1af112f Mon Sep 17 00:00:00 2001 From: debugtalk <mail@debugtalk.com> Date: Thu, 20 Jan 2022 18:29:00 +0800 Subject: [PATCH 06/10] change: download package assets from aliyun OSS --- .github/workflows/release.yml | 5 +++-- docs/CHANGELOG.md | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8e8b2bb7..c607fbcf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,10 +29,11 @@ jobs: binary_name: "hrp" ldflags: "-s -w" extra_files: LICENSE README.md docs/CHANGELOG.md - - name: Upload to aliyun OSS + - name: Setup aliyun OSS uses: manyuanrong/setup-ossutil@v2.0 with: endpoint: "oss-cn-beijing.aliyuncs.com" access-key-id: ${{ secrets.ALIYUN_ACCESSKEY_ID }} access-key-secret: ${{ secrets.ALIYUN_ACCESSKEY_SECRET }} - - run: ossutil cp -rf cli/scripts/install.sh *.tar.gz *.zip oss://httprunner/ + - name: Upload to aliyun OSS + run: ossutil cp -rf cli/scripts/install.sh *.tar.gz *.zip oss://httprunner/ diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 39453cc7..c859d969 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## v0.5.3 (2022-01-20) + +- feat: upload released assets to aliyun OSS +- change: download package assets from aliyun OSS +- fix: disable color logging on Windows + ## v0.5.2 (2022-01-19) - feat: support creating and calling custom functions with [hashicorp/go-plugin](https://github.com/hashicorp/go-plugin) From 64d2d75a453fe485af4ae6df019e45e43b6ac089 Mon Sep 17 00:00:00 2001 From: debugtalk <mail@debugtalk.com> Date: Thu, 20 Jan 2022 18:41:54 +0800 Subject: [PATCH 07/10] fix: download pkg on windows --- cli/scripts/install.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/cli/scripts/install.sh b/cli/scripts/install.sh index 034eb8dd..3259fe41 100644 --- a/cli/scripts/install.sh +++ b/cli/scripts/install.sh @@ -37,6 +37,15 @@ function get_arch() { echo "$arch" } +function get_pkg_suffix() { + os=$1 + if [ "$os" == "windows" ]; then + echo ".zip" + else + echo ".tar.gz" + fi +} + function get_download_url() { # github # url="https://github.com/httprunner/hrp/releases/download/$version/$1" @@ -53,7 +62,7 @@ function main() { echo "Current OS: $os" arch=$(get_arch) echo "Current ARCH: $arch" - pkg="hrp-$version-$os-$arch.tar.gz" + pkg="hrp-$version-$os-$arch$(get_pkg_suffix $os)" url=$(get_download_url $pkg) echo "Selected package: $url" echo From eca9695b01c06bed4cd14ac761a97efb15b2d112 Mon Sep 17 00:00:00 2001 From: debugtalk <mail@debugtalk.com> Date: Thu, 20 Jan 2022 18:54:56 +0800 Subject: [PATCH 08/10] fix: unzip package on windows --- .github/workflows/release.yml | 2 ++ cli/scripts/install.sh | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c607fbcf..c73f3cc6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,6 +29,8 @@ jobs: binary_name: "hrp" ldflags: "-s -w" extra_files: LICENSE README.md docs/CHANGELOG.md + - name: Test install.sh + run: bash cli/scripts/install.sh - name: Setup aliyun OSS uses: manyuanrong/setup-ossutil@v2.0 with: diff --git a/cli/scripts/install.sh b/cli/scripts/install.sh index 3259fe41..14573cd8 100644 --- a/cli/scripts/install.sh +++ b/cli/scripts/install.sh @@ -54,6 +54,17 @@ function get_download_url() { echo $url } +function extract_pkg() { + pkg=$1 + if [[ $pkg == *.zip ]]; then # windows + echo "$ unzip -o $pkg -d ." + unzip -o $pkg -d . + else + echo "$ tar -xzf $pkg" + tar -xzf "$pkg" + fi +} + function main() { echoInfo "Detect target hrp package..." version=$(get_latest_version) @@ -62,7 +73,8 @@ function main() { echo "Current OS: $os" arch=$(get_arch) echo "Current ARCH: $arch" - pkg="hrp-$version-$os-$arch$(get_pkg_suffix $os)" + pkg_suffix=$(get_pkg_suffix $os) + pkg="hrp-$version-$os-$arch$pkg_suffix" url=$(get_download_url $pkg) echo "Selected package: $url" echo @@ -80,8 +92,7 @@ function main() { echo echoInfo "Extracting..." - echo "$ tar -xzf $pkg" - tar -xzf "$pkg" + extract_pkg "$pkg" echo "$ ls -lh" ls -lh echo From f09a36c991af04e4a9b88fef2fb1762d34dbe2af Mon Sep 17 00:00:00 2001 From: debugtalk <mail@debugtalk.com> Date: Thu, 20 Jan 2022 19:54:24 +0800 Subject: [PATCH 09/10] fix: test install.sh --- .github/workflows/release.yml | 10 ++++++---- docs/CHANGELOG.md | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c73f3cc6..5590c6ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,13 +29,15 @@ jobs: binary_name: "hrp" ldflags: "-s -w" extra_files: LICENSE README.md docs/CHANGELOG.md - - name: Test install.sh - run: bash cli/scripts/install.sh - name: Setup aliyun OSS uses: manyuanrong/setup-ossutil@v2.0 with: endpoint: "oss-cn-beijing.aliyuncs.com" access-key-id: ${{ secrets.ALIYUN_ACCESSKEY_ID }} access-key-secret: ${{ secrets.ALIYUN_ACCESSKEY_SECRET }} - - name: Upload to aliyun OSS - run: ossutil cp -rf cli/scripts/install.sh *.tar.gz *.zip oss://httprunner/ + # - name: Upload to aliyun OSS + # run: | + # ossutil cp -rf cli/scripts/install.sh oss://httprunner/ + # ossutil cp -rf hrp-*.tar.gz hrp-*.zip oss://httprunner/ || true + # - name: Test install.sh + # run: bash -c "$(curl -ksSL https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh)" diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index c859d969..0ad7b3cd 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -2,7 +2,6 @@ ## v0.5.3 (2022-01-20) -- feat: upload released assets to aliyun OSS - change: download package assets from aliyun OSS - fix: disable color logging on Windows From 520e1e722262c134de2bca43c38eca9eba60e2b4 Mon Sep 17 00:00:00 2001 From: debugtalk <mail@debugtalk.com> Date: Mon, 24 Jan 2022 17:34:23 +0800 Subject: [PATCH 10/10] fix: download from github if aliyun oss url is invalid --- .gitignore | 1 + Makefile | 5 +++++ cli/scripts/bump_version.sh | 23 +++++++++++++++++++++++ cli/scripts/install.sh | 27 +++++++++++++++------------ 4 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 cli/scripts/bump_version.sh diff --git a/.gitignore b/.gitignore index e5528b08..5d528d38 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ __debug_bin .idea/ __pycache__ .DS_Store +*.bak site/ output/ diff --git a/Makefile b/Makefile index b75eb2cc..98c17985 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,11 @@ test: ## run unit tests @echo "go test -race -v ./..." @go test -race -v ./... +.PHONY: bump +bump: ## bump hrp version + @echo "[info] bump hrp version" + @. cli/scripts/bump_version.sh $(version) + .PHONY: build build: ## build hrp cli tool @echo "[info] build hrp cli tool" diff --git a/cli/scripts/bump_version.sh b/cli/scripts/bump_version.sh new file mode 100644 index 00000000..7be0a2b6 --- /dev/null +++ b/cli/scripts/bump_version.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# build hrp cli binary for testing +# release will be triggered on github actions, see .github/workflows/release.yml + +# Usage: +# $ make bump version=v0.5.2 +# or +# $ bash cli/scripts/bump_version.sh v0.5.2 + +set -e + +version=$1 + +if [ -z "$version" ]; then + echo "version is required" + exit 1 +fi + +echo "bump hrp version to $version" +sed -i'.bak' "s/\"v.*\"/\"$version\"/g" internal/version/init.go + +echo "bump install.sh version to $version" +sed -i'.bak' "s/LATEST_VERSION=\"v.*\"/LATEST_VERSION=\"$version\"/g" cli/scripts/install.sh diff --git a/cli/scripts/install.sh b/cli/scripts/install.sh index 14573cd8..b236a689 100644 --- a/cli/scripts/install.sh +++ b/cli/scripts/install.sh @@ -2,6 +2,8 @@ # install hrp with one shell command # bash -c "$(curl -ksSL https://httprunner.oss-cn-beijing.aliyuncs.com/install.sh)" +LATEST_VERSION="v0.5.2" + set -e function echoError() { @@ -46,14 +48,6 @@ function get_pkg_suffix() { fi } -function get_download_url() { - # github - # url="https://github.com/httprunner/hrp/releases/download/$version/$1" - # aliyun oss - url="https://httprunner.oss-cn-beijing.aliyuncs.com/$1" - echo $url -} - function extract_pkg() { pkg=$1 if [[ $pkg == *.zip ]]; then # windows @@ -67,16 +61,25 @@ function extract_pkg() { function main() { echoInfo "Detect target hrp package..." - version=$(get_latest_version) - echo "Latest version: $version" + version=$LATEST_VERSION os=$(get_os) echo "Current OS: $os" arch=$(get_arch) echo "Current ARCH: $arch" pkg_suffix=$(get_pkg_suffix $os) pkg="hrp-$version-$os-$arch$pkg_suffix" - url=$(get_download_url $pkg) - echo "Selected package: $url" + + # download from aliyun OSS + url="https://httprunner.oss-cn-beijing.aliyuncs.com/$pkg" + if ! curl --output /dev/null --silent --head --fail "$url"; then + # aliyun OSS url is invalid, try to download from github + version=$(get_latest_version) + pkg="hrp-$version-$os-$arch$pkg_suffix" + url="https://github.com/httprunner/hrp/releases/download/$version/$pkg" + fi + + echo "Latest version: $version" + echo "Download url: $url" echo echoInfo "Created temp dir..."