diff options
author | Paweł Krupa <pawel@krupa.net.pl> | 2019-01-04 13:13:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-01-04 13:13:19 +0100 |
commit | 792a0e805454c79732c42caa72bc74aa489129e4 (patch) | |
tree | 2c7cdcbca8403b283fcfafe21d1aba453005d904 | |
parent | 8e42b85b44cf1753f09efdf4de5674c7860ee49d (diff) |
Unify versioning (#5051)
* use 'git describe'
* no need to embed version string anymore
* fallback mechanism for package versioning
-rw-r--r-- | .travis.yml | 19 | ||||
-rwxr-xr-x | .travis/generate_changelog.sh | 11 | ||||
-rwxr-xr-x | .travis/nightlies.sh | 35 | ||||
-rwxr-xr-x | .travis/releaser.sh | 7 | ||||
-rwxr-xr-x | .travis/tagger.sh | 14 | ||||
-rw-r--r-- | configure.ac | 13 | ||||
-rwxr-xr-x | packaging/makeself/jobs/99-makeself.install.sh | 43 |
7 files changed, 61 insertions, 81 deletions
diff --git a/.travis.yml b/.travis.yml index f5f8b0da3d..0fcb569c01 100644 --- a/.travis.yml +++ b/.travis.yml @@ -56,17 +56,15 @@ jobs: depth: false - stage: nightlies - name: docker images + name: Nightly build + before_install: openssl aes-256-cbc -K $encrypted_8daf19481253_key -iv $encrypted_8daf19481253_iv -in .travis/gcs-credentials.json.enc -out .travis/gcs-credentials.json -d install: - - sudo apt update + - sudo apt-get install -y gnupg libcap2-bin zlib1g-dev uuid-dev fakeroot - sudo apt install -y --only-upgrade docker-ce - docker info - script: "packaging/docker/build.sh" - env: REPOSITORY="netdata/netdata" - - name: tarball and self-extractor build - before_install: openssl aes-256-cbc -K $encrypted_8daf19481253_key -iv $encrypted_8daf19481253_iv -in .travis/gcs-credentials.json.enc -out .travis/gcs-credentials.json -d - install: sudo apt-get install -y gnupg libcap2-bin zlib1g-dev uuid-dev fakeroot - script: ".travis/create_artifacts.sh" + script: ".travis/nightlies.sh" + git: + depth: false deploy: provider: gcs edge: @@ -76,11 +74,6 @@ jobs: bucket: "netdata-nightlies" skip_cleanup: true local_dir: "upload" - - name: changelog generation - script: ".travis/generate_changelog.sh" - env: COMMIT_AND_PUSH=1 - git: - depth: false notifications: webhooks: https://app.fossa.io/hooks/travisci diff --git a/.travis/generate_changelog.sh b/.travis/generate_changelog.sh index ca9040e464..d1b72e071d 100755 --- a/.travis/generate_changelog.sh +++ b/.travis/generate_changelog.sh @@ -7,7 +7,6 @@ if [ ! -f .gitignore ]; then exit 1 fi -COMMIT_AND_PUSH=${COMMIT_AND_PUSH:-0} ORGANIZATION=$(echo "$TRAVIS_REPO_SLUG" | awk -F '/' '{print $1}') PROJECT=$(echo "$TRAVIS_REPO_SLUG" | awk -F '/' '{print $2}') GIT_MAIL=${GIT_MAIL:-"pawel+bot@netdata.cloud"} @@ -19,10 +18,6 @@ else OPTS="--future-release ${GIT_TAG}" fi -echo "--- Initialize git configuration ---" -git config user.email "${GIT_MAIL}" -git config user.name "${GIT_USER}" - echo "--- Creating changelog ---" git checkout master git pull @@ -36,9 +31,3 @@ docker run -it -v "$(pwd)":/project markmandel/github-changelog-generator:latest --exclude-labels "stale,duplicate,question,invalid,wontfix,discussion,no changelog" \ --no-compare-link ${OPTS} -echo "--- Uploading changelog ---" -git add CHANGELOG.md -if [ "${COMMIT_AND_PUSH}" == "1" ]; then - git commit -m '[ci skip] Automatic changelog update' || exit 0 - git push "https://${GITHUB_TOKEN}:@$(git config --get remote.origin.url | sed -e 's/^https:\/\///')" -fi diff --git a/.travis/nightlies.sh b/.travis/nightlies.sh new file mode 100755 index 0000000000..ac00d1e1a7 --- /dev/null +++ b/.travis/nightlies.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -e + +if [ ! -f .gitignore ]; then + echo "Run as ./travis/$(basename "$0") from top level directory of git repository" + exit 1 +fi + +export GIT_MAIL="pawel+bot@netdata.cloud" +export GIT_USER="netdatabot" +echo "--- Initialize git configuration ---" +git config user.email "${GIT_MAIL}" +git config user.name "${GIT_USER}" + +echo "--- UPDATE VERSION FILE ---" +LAST_TAG=$(git describe --abbrev=0 --tags) +NO_COMMITS=$(git rev-list "$LAST_TAG"..HEAD --count) +echo "$LAST_TAG-$((NO_COMMITS + 1))-nightly" >packaging/version +git add packaging/version + +echo "---- GENERATE CHANGELOG -----" +.travis/generate_changelog.sh +git add CHANGELOG.md + +echo "---- UPLOAD FILE CHANGES ----" +git commit -m '[ci skip] create nightly packages and update changelog' +git push "https://${GITHUB_TOKEN}:@$(git config --get remote.origin.url | sed -e 's/^https:\/\///')" + +echo "---- BUILD & PUBLISH DOCKER IMAGES ----" +export REPOSITORY="netdata/netdata" +packaging/docker/build.sh + +echo "---- BUILD ARTIFACTS ----" +.travis/create_artifacts.sh diff --git a/.travis/releaser.sh b/.travis/releaser.sh index 46d7441808..45e8b362e2 100755 --- a/.travis/releaser.sh +++ b/.travis/releaser.sh @@ -42,8 +42,13 @@ echo "---- FIGURING OUT TAGS ----" #shellcheck source=/dev/null source .travis/tagger.sh || exit 0 -echo "---- GENERATING CHANGELOG -----" +echo "---- UPDATE VERSION FILE ----" +echo "$GIT_TAG" >packaging/version +git add packaging/version + +echo "---- GENERATE CHANGELOG -----" ./.travis/generate_changelog.sh +git add CHANGELOG.md echo "---- COMMIT AND PUSH CHANGES ----" git commit -m "[ci skip] release $GIT_TAG" diff --git a/.travis/tagger.sh b/.travis/tagger.sh index d3b7f8faf5..1b179b7c1c 100755 --- a/.travis/tagger.sh +++ b/.travis/tagger.sh @@ -24,19 +24,6 @@ if [ ! -f .gitignore ]; then exit 1 fi -# Embed new version in files which need it. -# This wouldn't be needed if we could use `git tag` everywhere. -function embed_version() { - VERSION="$1" - MAJOR=$(echo "$GIT_TAG" | cut -d . -f 1 | cut -d v -f 2) - MINOR=$(echo "$GIT_TAG" | cut -d . -f 2) - PATCH=$(echo "$GIT_TAG" | cut -d . -f 3 | cut -d '-' -f 1) - sed -i "s/\\[VERSION_MAJOR\\], \\[.*\\]/\\[VERSION_MAJOR\\], \\[$MAJOR\\]/" configure.ac - sed -i "s/\\[VERSION_MINOR\\], \\[.*\\]/\\[VERSION_MINOR\\], \\[$MINOR\\]/" configure.ac - sed -i "s/\\[VERSION_PATCH\\], \\[.*\\]/\\[VERSION_PATCH\\], \\[$PATCH\\]/" configure.ac - git add configure.ac -} - # Figure out what will be new release candidate tag based only on previous ones. # This assumes that RELEASES are in format of "v0.1.2" and prereleases (RCs) are using "v0.1.2-rc0" function release_candidate() { @@ -71,5 +58,4 @@ if [ -z "${GIT_TAG}" ]; then ;; esac fi -embed_version "$GIT_TAG" export GIT_TAG diff --git a/configure.ac b/configure.ac index 8458c9eb7f..9ed1e83873 100644 --- a/configure.ac +++ b/configure.ac @@ -4,24 +4,19 @@ # AC_PREREQ(2.60) -define([VERSION_MAJOR], [1]) -define([VERSION_MINOR], [12]) -define([VERSION_FIX], [1]) -define([VERSION_NUMBER], VERSION_MAJOR[.]VERSION_MINOR[.]VERSION_FIX) - # We do not use m4_esyscmd_s to support older autoconf. -define([VERSION_STRING], m4_esyscmd(git describe 2>/dev/null | sed 's/^v//' | tr -d '\n')) -m4_ifval(VERSION_STRING, [], [define([VERSION_STRING], VERSION_NUMBER)]) +define([VERSION_STRING], m4_esyscmd([git describe 2>/dev/null | tr -d '\n'])) +define([VERSION_FROM_FILE], m4_esyscmd([cat packaging/version | tr -d '\n'])) +m4_ifval(VERSION_STRING, [], [define([VERSION_STRING], VERSION_FROM_FILE)]) AC_INIT([netdata], VERSION_STRING[]) AM_MAINTAINER_MODE([disable]) if test x"$USE_MAINTAINER_MODE" = xyes; then AC_MSG_NOTICE(***************** MAINTAINER MODE *****************) -PACKAGE_BUILT_DATE=$(date '+%d %b %Y') fi -PACKAGE_RPM_VERSION="VERSION_NUMBER" +PACKAGE_RPM_VERSION="VERSION_STRING" AC_SUBST([PACKAGE_RPM_VERSION]) # ----------------------------------------------------------------------------- diff --git a/packaging/makeself/jobs/99-makeself.install.sh b/packaging/makeself/jobs/99-makeself.install.sh index 742bb4b424..42c075b87f 100755 --- a/packaging/makeself/jobs/99-makeself.install.sh +++ b/packaging/makeself/jobs/99-makeself.install.sh @@ -8,35 +8,16 @@ run cd "${NETDATA_SOURCE_PATH}" || exit 1 # ----------------------------------------------------------------------------- # find the netdata version -NOWNER="unknown" -ORIGIN="$(git config --get remote.origin.url || echo "unknown")" -if [[ "${ORIGIN}" =~ ^git@github.com:.*/netdata.*$ ]] - then - NOWNER="${ORIGIN/git@github.com:/}" - NOWNER="$( echo ${NOWNER} | cut -d '/' -f 1 )" - -elif [[ "${ORIGIN}" =~ ^https://github.com/.*/netdata.*$ ]] - then - NOWNER="${ORIGIN/https:\/\/github.com\//}" - NOWNER="$( echo ${NOWNER} | cut -d '/' -f 1 )" +VERSION="$(git describe 2>/dev/null)" +if [ -z "${VERSION}" ]; then + VERSION=$(cat packaging/version) fi -# make sure it does not have any slashes in it -NOWNER="${NOWNER//\//_}" - -if [ "${NOWNER}" = "netdata" ] - then - NOWNER= -else - NOWNER="-${NOWNER}" +if [ "${VERSION}" == "" ]; then + echo >&2 "Cannot find version number. Create makeself executable from source code with git tree structure." + exit 1 fi -VERSION="$(git describe || echo "undefined")" -[ -z "${VERSION}" ] && VERSION="undefined" - -FILE_VERSION="${VERSION}-$(uname -m)-$(date +"%Y%m%d-%H%M%S")${NOWNER}" - - # ----------------------------------------------------------------------------- # copy the files needed by makeself installation @@ -84,7 +65,7 @@ run rm "${NETDATA_INSTALL_PATH}/sbin" \ # ----------------------------------------------------------------------------- # create the makeself archive -run sed "s|NETDATA_VERSION|${FILE_VERSION}|g" <"${NETDATA_MAKESELF_PATH}/makeself.lsm" >"${NETDATA_MAKESELF_PATH}/makeself.lsm.tmp" +run sed "s|NETDATA_VERSION|${VERSION}|g" <"${NETDATA_MAKESELF_PATH}/makeself.lsm" >"${NETDATA_MAKESELF_PATH}/makeself.lsm.tmp" run "${NETDATA_MAKESELF_PATH}/makeself.sh" \ --gzip \ @@ -107,11 +88,7 @@ run rm "${NETDATA_MAKESELF_PATH}/makeself.lsm.tmp" # ----------------------------------------------------------------------------- # copy it to the netdata build dir -FILE="netdata-${FILE_VERSION}.gz.run" - -run cp "${NETDATA_INSTALL_PATH}.gz.run" "${FILE}" -echo >&2 "Self-extracting installer copied to '${FILE}'" +FILE="netdata-${VERSION}.gz.run" -[ -f netdata-latest.gz.run ] && rm netdata-latest.gz.run -run ln -s "${FILE}" netdata-latest.gz.run -echo >&2 "Self-extracting installer linked to 'netdata-latest.gz.run'" +run mv "${NETDATA_INSTALL_PATH}.gz.run" "${FILE}" +echo >&2 "Self-extracting installer moved to '${FILE}'" |