From b933ffddd021a943aacdceabf1dca1ede5e47d74 Mon Sep 17 00:00:00 2001 From: zyy17 Date: Mon, 17 Apr 2023 18:44:00 +0800 Subject: [PATCH] ci: set whether it is the latest release by using 'ncipollo/release-action and update install.sh (#1400) * ci: set whether it is the latest release by using 'ncipollo/release-action' * ci: modify greptimedb install script to use the latest nightly version binary --- .github/workflows/release.yml | 28 ++++++++++++++++++++++------ scripts/install.sh | 14 +++++++++----- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 989e18967b..7ea4edd1b8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -319,27 +319,43 @@ jobs: SCHEDULED_BUILD_VERSION=${{ env.SCHEDULED_BUILD_VERSION_PREFIX }}-${{ env.SCHEDULED_PERIOD }}-$buildTime echo "SCHEDULED_BUILD_VERSION=${SCHEDULED_BUILD_VERSION}" >> $GITHUB_ENV + # Only publish release when the release tag is like v1.0.0, v1.0.1, v1.0.2, etc. + - name: Set whether it is the latest release + run: | + if [[ "${{ github.ref_name }}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "prerelease=false" >> $GITHUB_ENV + echo "makeLatest=true" >> $GITHUB_ENV + else + echo "prerelease=true" >> $GITHUB_ENV + echo "makeLatest=false" >> $GITHUB_ENV + fi + - name: Create scheduled build git tag if: github.event_name == 'schedule' run: | git tag ${{ env.SCHEDULED_BUILD_VERSION }} - name: Publish scheduled release # configure the different release title and tags. - uses: softprops/action-gh-release@v1 + uses: ncipollo/release-action@v1 if: github.event_name == 'schedule' with: name: "Release ${{ env.SCHEDULED_BUILD_VERSION }}" - tag_name: ${{ env.SCHEDULED_BUILD_VERSION }} - generate_release_notes: true - files: | + prerelease: ${{ env.prerelease }} + makeLatest: ${{ env.makeLatest }} + tag: ${{ env.SCHEDULED_BUILD_VERSION }} + generateReleaseNotes: true + artifacts: | **/greptime-* - name: Publish release - uses: softprops/action-gh-release@v1 + uses: ncipollo/release-action@v1 if: github.event_name != 'schedule' with: name: "Release ${{ github.ref_name }}" - files: | + prerelease: ${{ env.prerelease }} + makeLatest: ${{ env.makeLatest }} + generateReleaseNotes: true + artifacts: | **/greptime-* docker-push-uhub: diff --git a/scripts/install.sh b/scripts/install.sh index 5b30381477..eb2e9c5f5d 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -51,13 +51,17 @@ get_os_type get_arch_type if [ -n "${OS_TYPE}" ] && [ -n "${ARCH_TYPE}" ]; then - echo "Downloading ${BIN}, OS: ${OS_TYPE}, Arch: ${ARCH_TYPE}, Version: ${VERSION}" - + # Use the latest nightly version. if [ "${VERSION}" = "latest" ]; then - wget "https://github.com/${GITHUB_ORG}/${GITHUB_REPO}/releases/latest/download/${BIN}-${OS_TYPE}-${ARCH_TYPE}.tgz" - else - wget "https://github.com/${GITHUB_ORG}/${GITHUB_REPO}/releases/download/${VERSION}/${BIN}-${OS_TYPE}-${ARCH_TYPE}.tgz" + VERSION=$(curl -s -XGET "https://api.github.com/repos/${GITHUB_ORG}/${GITHUB_REPO}/releases" | grep tag_name | grep nightly | cut -d: -f 2 | sed 's/.*"\(.*\)".*/\1/' | uniq | sort -r | head -n 1) + if [ -z "${VERSION}" ]; then + echo "Failed to get the latest version." + exit 1 + fi fi + echo "Downloading ${BIN}, OS: ${OS_TYPE}, Arch: ${ARCH_TYPE}, Version: ${VERSION}" + + wget "https://github.com/${GITHUB_ORG}/${GITHUB_REPO}/releases/download/${VERSION}/${BIN}-${OS_TYPE}-${ARCH_TYPE}.tgz" tar xvf ${BIN}-${OS_TYPE}-${ARCH_TYPE}.tgz && rm ${BIN}-${OS_TYPE}-${ARCH_TYPE}.tgz && echo "Run './${BIN} --help' to get started" fi