Automatic versioning for aptly

New version format:

* for releases, `x.y.z` (follows tag without leading `v`)
* for nightly builds, `x.y.z+N+hash` (previous version, not the upcoming one)

This means that each nightly build `aptly` would report
correct version now.

Version is now complied into the aptly binary, system tests
automatically check for current version, no need to update them
anymore.
This commit is contained in:
Andrey Smirnov
2017-03-25 00:18:45 +03:00
parent 91219e3a0a
commit 2943422d5d
13 changed files with 43 additions and 13 deletions
+1
View File
@@ -28,6 +28,7 @@ before_install:
- mkdir -p $GOPATH/src/github.com/smira
- ln -s $TRAVIS_BUILD_DIR $GOPATH/src/github.com/smira || true
- cd $GOPATH/src/github.com/smira/aptly
- make version
install:
- make prepare
+7 -4
View File
@@ -1,6 +1,6 @@
GOVERSION=$(shell go version | awk '{print $$3;}')
VERSION=$(shell git describe --tags | sed 's@^v@@' | sed 's@-@+@g')
PACKAGES=context database deb files http query swift s3 utils
ALL_PACKAGES=api aptly context cmd console database deb files http query swift s3 utils
PYTHON?=python
TESTS?=
BINPATH?=$(GOPATH)/bin
@@ -39,12 +39,12 @@ check:
gometalinter --vendor --vendored-linters --config=linter.json ./...
install:
go install -v
go install -x -v -ldflags "-X main.Version=$(VERSION)"
system-test: install
if [ ! -e ~/aptly-fixture-db ]; then git clone https://github.com/aptly-dev/aptly-fixture-db.git ~/aptly-fixture-db/; fi
if [ ! -e ~/aptly-fixture-pool ]; then git clone https://github.com/aptly-dev/aptly-fixture-pool.git ~/aptly-fixture-pool/; fi
PATH=$(BINPATH)/:$(PATH) $(PYTHON) system/run.py --long $(TESTS)
APTLY_VERSION=$(VERSION) PATH=$(BINPATH)/:$(PATH) $(PYTHON) system/run.py --long $(TESTS)
travis: $(TRAVIS_TARGET) check system-test
@@ -79,4 +79,7 @@ goxc:
man:
make -C man
.PHONY: coverage.out man
version:
@echo $(VERSION)
.PHONY: coverage.out man version
+2 -2
View File
@@ -1,7 +1,7 @@
package aptly
// Version of aptly
const Version = "0.9.8~dev"
// Version of aptly (filled in at link time)
var Version string
// EnableDebug triggers some debugging features
const EnableDebug = false
+3
View File
@@ -96,6 +96,9 @@ func (s *VersionSuite) TestCompareVersions(c *C) {
c.Check(CompareVersions("1.0~beta1~svn1245", "1.0~beta1"), Equals, -1)
c.Check(CompareVersions("1.0~beta1", "1.0"), Equals, -1)
c.Check(CompareVersions("1.0-133-avc", "1.1"), Equals, -1)
c.Check(CompareVersions("1.0-133-avc", "1.0"), Equals, 1)
}
func (s *VersionSuite) TestParseDependency(c *C) {
+10
View File
@@ -3,9 +3,19 @@ package main
import (
"os"
"github.com/smira/aptly/aptly"
"github.com/smira/aptly/cmd"
)
// Version variable, filled in at link time
var Version string
func main() {
if Version == "" {
Version = "unknown"
}
aptly.Version = Version
os.Exit(cmd.Run(cmd.RootCommand(), os.Args[1:], true))
}
+6
View File
@@ -98,6 +98,12 @@ def run(include_long_tests=False, capture_results=False, tests=None, filters=Non
sys.exit(1)
if __name__ == "__main__":
if 'APTLY_VERSION' not in os.environ:
try:
os.environ['APTLY_VERSION'] = os.popen("make version").read().strip()
except BaseException, e:
print "Failed to capture current version: ", e
os.chdir(os.path.realpath(os.path.dirname(sys.argv[0])))
random.seed()
include_long_tests = False
+1 -1
View File
@@ -1 +1 @@
aptly version: 0.9.8~dev
aptly version: ${APTLY_VERSION}
+1
View File
@@ -9,5 +9,6 @@ class VersionTest(BaseTest):
"""
version should match
"""
gold_processor = BaseTest.expand_environ
runCmd = "aptly version"
+1 -1
View File
@@ -21,6 +21,6 @@ End command output: ------------------------------
4) [Running]: version
Begin command output: ----------------------------
aptly version: 0.9.8~dev
aptly version: ${APTLY_VERSION}
End command output: ------------------------------
+2
View File
@@ -5,6 +5,8 @@ class RunTask1Test(BaseTest):
"""
task run: simple commands, 1-word command
"""
gold_processor = BaseTest.expand_environ
runCmd = "aptly task run repo list, repo create local, repo drop local, version"
+4 -3
View File
@@ -1,10 +1,11 @@
import requests_unixsocket
import time
import urllib
import os
import os.path
from lib import BaseTest
class SystemdAPIHandoverTest(BaseTest):
aptly_server = None
socket_path = "/tmp/_aptly_systemdapihandovertest.sock"
@@ -37,9 +38,9 @@ class SystemdAPIHandoverTest(BaseTest):
Verify we can listen on a unix domain socket.
"""
def check(self):
if self.aptly_server == None:
if self.aptly_server is None:
print("Skipping test as we failed to setup a listener.")
return
session = requests_unixsocket.Session()
r = session.get('http+unix://%s/api/version' % urllib.quote(self.socket_path, safe=''))
self.check_equal(r.json(), {'Version': '0.9.8~dev'})
self.check_equal(r.json(), {'Version': os.environ['APTLY_VERSION']})
+3 -1
View File
@@ -1,9 +1,11 @@
import requests_unixsocket
import time
import os
import urllib
from lib import BaseTest
class UnixSocketAPITest(BaseTest):
aptly_server = None
socket_path = "/tmp/_aptly_test.sock"
@@ -33,4 +35,4 @@ class UnixSocketAPITest(BaseTest):
r = session.get('http+unix://%s/api/version' % urllib.quote(UnixSocketAPITest.socket_path, safe=''))
# Just needs to come back, we actually don't care much about the code.
# Only needs to verify that the socket is actually responding.
self.check_equal(r.json(), {'Version': '0.9.8~dev'})
self.check_equal(r.json(), {'Version': os.environ['APTLY_VERSION']})
+2 -1
View File
@@ -1,4 +1,5 @@
from api_lib import APITest
import os
class VersionAPITest(APITest):
@@ -7,4 +8,4 @@ class VersionAPITest(APITest):
"""
def check(self):
self.check_equal(self.get("/api/version").json(), {'Version': '0.9.8~dev'})
self.check_equal(self.get("/api/version").json(), {'Version': os.environ['APTLY_VERSION']})