mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-06 22:18:28 +00:00
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:
@@ -28,6 +28,7 @@ before_install:
|
|||||||
- mkdir -p $GOPATH/src/github.com/smira
|
- mkdir -p $GOPATH/src/github.com/smira
|
||||||
- ln -s $TRAVIS_BUILD_DIR $GOPATH/src/github.com/smira || true
|
- ln -s $TRAVIS_BUILD_DIR $GOPATH/src/github.com/smira || true
|
||||||
- cd $GOPATH/src/github.com/smira/aptly
|
- cd $GOPATH/src/github.com/smira/aptly
|
||||||
|
- make version
|
||||||
install:
|
install:
|
||||||
- make prepare
|
- make prepare
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
GOVERSION=$(shell go version | awk '{print $$3;}')
|
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
|
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
|
PYTHON?=python
|
||||||
TESTS?=
|
TESTS?=
|
||||||
BINPATH?=$(GOPATH)/bin
|
BINPATH?=$(GOPATH)/bin
|
||||||
@@ -39,12 +39,12 @@ check:
|
|||||||
gometalinter --vendor --vendored-linters --config=linter.json ./...
|
gometalinter --vendor --vendored-linters --config=linter.json ./...
|
||||||
|
|
||||||
install:
|
install:
|
||||||
go install -v
|
go install -x -v -ldflags "-X main.Version=$(VERSION)"
|
||||||
|
|
||||||
system-test: install
|
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-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
|
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
|
travis: $(TRAVIS_TARGET) check system-test
|
||||||
|
|
||||||
@@ -79,4 +79,7 @@ goxc:
|
|||||||
man:
|
man:
|
||||||
make -C man
|
make -C man
|
||||||
|
|
||||||
.PHONY: coverage.out man
|
version:
|
||||||
|
@echo $(VERSION)
|
||||||
|
|
||||||
|
.PHONY: coverage.out man version
|
||||||
|
|||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package aptly
|
package aptly
|
||||||
|
|
||||||
// Version of aptly
|
// Version of aptly (filled in at link time)
|
||||||
const Version = "0.9.8~dev"
|
var Version string
|
||||||
|
|
||||||
// EnableDebug triggers some debugging features
|
// EnableDebug triggers some debugging features
|
||||||
const EnableDebug = false
|
const EnableDebug = false
|
||||||
|
|||||||
@@ -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~svn1245", "1.0~beta1"), Equals, -1)
|
||||||
c.Check(CompareVersions("1.0~beta1", "1.0"), 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) {
|
func (s *VersionSuite) TestParseDependency(c *C) {
|
||||||
|
|||||||
@@ -3,9 +3,19 @@ package main
|
|||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/smira/aptly/aptly"
|
||||||
"github.com/smira/aptly/cmd"
|
"github.com/smira/aptly/cmd"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Version variable, filled in at link time
|
||||||
|
var Version string
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
if Version == "" {
|
||||||
|
Version = "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
aptly.Version = Version
|
||||||
|
|
||||||
os.Exit(cmd.Run(cmd.RootCommand(), os.Args[1:], true))
|
os.Exit(cmd.Run(cmd.RootCommand(), os.Args[1:], true))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,6 +98,12 @@ def run(include_long_tests=False, capture_results=False, tests=None, filters=Non
|
|||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
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])))
|
os.chdir(os.path.realpath(os.path.dirname(sys.argv[0])))
|
||||||
random.seed()
|
random.seed()
|
||||||
include_long_tests = False
|
include_long_tests = False
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
aptly version: 0.9.8~dev
|
aptly version: ${APTLY_VERSION}
|
||||||
|
|||||||
@@ -9,5 +9,6 @@ class VersionTest(BaseTest):
|
|||||||
"""
|
"""
|
||||||
version should match
|
version should match
|
||||||
"""
|
"""
|
||||||
|
gold_processor = BaseTest.expand_environ
|
||||||
|
|
||||||
runCmd = "aptly version"
|
runCmd = "aptly version"
|
||||||
|
|||||||
@@ -21,6 +21,6 @@ End command output: ------------------------------
|
|||||||
4) [Running]: version
|
4) [Running]: version
|
||||||
|
|
||||||
Begin command output: ----------------------------
|
Begin command output: ----------------------------
|
||||||
aptly version: 0.9.8~dev
|
aptly version: ${APTLY_VERSION}
|
||||||
|
|
||||||
End command output: ------------------------------
|
End command output: ------------------------------
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ class RunTask1Test(BaseTest):
|
|||||||
"""
|
"""
|
||||||
task run: simple commands, 1-word command
|
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"
|
runCmd = "aptly task run repo list, repo create local, repo drop local, version"
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
import requests_unixsocket
|
import requests_unixsocket
|
||||||
import time
|
|
||||||
import urllib
|
import urllib
|
||||||
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
from lib import BaseTest
|
from lib import BaseTest
|
||||||
|
|
||||||
|
|
||||||
class SystemdAPIHandoverTest(BaseTest):
|
class SystemdAPIHandoverTest(BaseTest):
|
||||||
aptly_server = None
|
aptly_server = None
|
||||||
socket_path = "/tmp/_aptly_systemdapihandovertest.sock"
|
socket_path = "/tmp/_aptly_systemdapihandovertest.sock"
|
||||||
@@ -37,9 +38,9 @@ class SystemdAPIHandoverTest(BaseTest):
|
|||||||
Verify we can listen on a unix domain socket.
|
Verify we can listen on a unix domain socket.
|
||||||
"""
|
"""
|
||||||
def check(self):
|
def check(self):
|
||||||
if self.aptly_server == None:
|
if self.aptly_server is None:
|
||||||
print("Skipping test as we failed to setup a listener.")
|
print("Skipping test as we failed to setup a listener.")
|
||||||
return
|
return
|
||||||
session = requests_unixsocket.Session()
|
session = requests_unixsocket.Session()
|
||||||
r = session.get('http+unix://%s/api/version' % urllib.quote(self.socket_path, safe=''))
|
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']})
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import requests_unixsocket
|
import requests_unixsocket
|
||||||
import time
|
import time
|
||||||
|
import os
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
from lib import BaseTest
|
from lib import BaseTest
|
||||||
|
|
||||||
|
|
||||||
class UnixSocketAPITest(BaseTest):
|
class UnixSocketAPITest(BaseTest):
|
||||||
aptly_server = None
|
aptly_server = None
|
||||||
socket_path = "/tmp/_aptly_test.sock"
|
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=''))
|
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.
|
# Just needs to come back, we actually don't care much about the code.
|
||||||
# Only needs to verify that the socket is actually responding.
|
# 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']})
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from api_lib import APITest
|
from api_lib import APITest
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
class VersionAPITest(APITest):
|
class VersionAPITest(APITest):
|
||||||
@@ -7,4 +8,4 @@ class VersionAPITest(APITest):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def check(self):
|
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']})
|
||||||
|
|||||||
Reference in New Issue
Block a user