diff --git a/openshift.spec b/openshift.spec index ae8d351f5353..67b87d72cb11 100644 --- a/openshift.spec +++ b/openshift.spec @@ -6,11 +6,26 @@ %global commit 21fb40637c4e3507cca1fcab6c4d56b06950a149 } %global shortcommit %(c=%{commit}; echo ${c:0:7}) +# Openshift specific ldflags from hack/common.sh os::build:ldflags +%{!?ldflags: +%global ldflags -X github.com/openshift/origin/pkg/version.majorFromGit 0 -X github.com/openshift/origin/pkg/version.minorFromGit 2+ -X github.com/openshift/origin/pkg/version.versionFromGit v0.2.2-134-gc9e7c25aaf0e61-dirty -X github.com/openshift/origin/pkg/version.commitFromGit c9e7c25 -X github.com/GoogleCloudPlatform/kubernetes/pkg/version.gitCommit 72ad4f1 -X github.com/GoogleCloudPlatform/kubernetes/pkg/version.gitVersion v0.10.0-46-g72ad4f1 +} +# String used for --images flag +# If you're setting docker_registry make sure it ends in a trailing / +%if "%{dist}" == ".el7ose" + %global docker_registry registry.access.redhat.com/ + %global docker_namespace openshift3_beta + %global docker_prefix ose +%else + %global docker_namespace openshift + %global docker_prefix origin +%endif +%global docker_images %{?docker_registry}%{docker_namespace}/%{docker_prefix}-${component}:${version} Name: openshift -Version: 0.2 +Version: 0.2.2 #Release: 1git%{shortcommit}%{?dist} -Release: 3%{?dist} +Release: 4%{?dist} Summary: Open Source Platform as a Service by Red Hat License: ASL 2.0 URL: https://%{import_path} @@ -77,12 +92,10 @@ export GOPATH=$(pwd)/_build:$(pwd)/_thirdpartyhacks:%{buildroot}%{gopath}:%{gopa for cmd in openshift do #go build %{import_path}/cmd/${cmd} - go build -ldflags \ - "-X github.com/GoogleCloudPlatform/kubernetes/pkg/version.gitCommit - %{shortcommit} - -X github.com/openshift/origin/pkg/version.commitFromGit - %{shortcommit}" %{import_path}/cmd/${cmd} + go build -ldflags "%{ldflags}" %{import_path}/cmd/${cmd} done +# set the IMAGES +sed -i 's|IMAGES=.*|IMAGES=%{docker_images}|' rel-eng/openshift-{master,node}.sysconfig %install @@ -161,6 +174,9 @@ fi %changelog +* Fri Feb 06 2015 Scott Dodson +- new package built with tito + * Mon Jan 26 2015 Scott Dodson 0.2-3 - Update to 21fb40637c4e3507cca1fcab6c4d56b06950a149 - Split packaging of openshift-master and openshift-node diff --git a/rel-eng/lib/embeddedcommitbuilder/__init__.py b/rel-eng/lib/embeddedcommitbuilder/__init__.py deleted file mode 100644 index fb06d156ae47..000000000000 --- a/rel-eng/lib/embeddedcommitbuilder/__init__.py +++ /dev/null @@ -1,23 +0,0 @@ -""" -Code for tagging Spacewalk/Satellite packages. -""" - -from tito.common import get_latest_commit, run_command -from tito.builder import Builder - -class EmbeddedCommitBuilder(Builder): - """ - builder which defines 'commit' as the git hash prior to building - - Used For: - - Packages that want to know the commit in all situations - """ - - def _get_rpmbuild_dir_options(self): - git_hash = get_latest_commit() - return ('--define "_topdir %s" --define "_sourcedir %s" --define "_builddir %s" --define ' - '"_srcrpmdir %s" --define "_rpmdir %s" --define "commit %s" ' % ( - self.rpmbuild_dir, - self.rpmbuild_sourcedir, self.rpmbuild_builddir, - self.rpmbuild_basedir, self.rpmbuild_basedir, - git_hash)) diff --git a/rel-eng/lib/embeddedcommittagger/__init__.py b/rel-eng/lib/embeddedcommittagger/__init__.py deleted file mode 100644 index 8aa50fa25c7d..000000000000 --- a/rel-eng/lib/embeddedcommittagger/__init__.py +++ /dev/null @@ -1,35 +0,0 @@ -""" -Code for tagging Spacewalk/Satellite packages. -""" - -from tito.common import get_latest_commit, run_command -from tito.tagger import VersionTagger - -class EmbeddedCommitTagger(VersionTagger): - """ - Tagger which defines a specfile global with the git hash at which the tag was - created. - - Requires that your commit is written on one single line as: - %global commit 460abe2a3abe0fa22ac96c551fe71c0fc36f7475 - - Used For: - - Packages that are to be built via dist-git and need to have the git hash - available to them. - """ - - def _tag_release(self): - """ - Tag a new release of the package, add specfile global named commit. (ie: x.y.z-r+1) - """ - self._make_changelog() - new_version = self._bump_version(release=True) - git_hash = get_latest_commit() - update_commit = "sed -i 's/^%%global commit .*$/%%global commit %s/' %s" % \ - (git_hash, self.spec_file) - output = run_command(update_commit) - - - self._check_tag_does_not_exist(self._get_new_tag(new_version)) - self._update_changelog(new_version) - self._update_package_metadata(new_version) diff --git a/rel-eng/lib/openshift/__init__.py b/rel-eng/lib/openshift/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/rel-eng/lib/openshift/builder/__init__.py b/rel-eng/lib/openshift/builder/__init__.py new file mode 100644 index 000000000000..1f7c57c90d9a --- /dev/null +++ b/rel-eng/lib/openshift/builder/__init__.py @@ -0,0 +1,56 @@ +""" +Code for building Openshift v3 +""" + +from tito.common import get_latest_commit, run_command, get_script_path +from tito.builder import Builder + +class OpenshiftBuilder(Builder): + """ + builder which defines 'commit' as the git hash prior to building + + Used For: + - Packages that want to know the commit in all situations + """ + + def _get_rpmbuild_dir_options(self): + git_hash = get_latest_commit() + cmd = '. ./hack/common.sh ; echo $(os::build::ldflags)' + ldflags = run_command('bash -c \'%s\'' % (cmd) ) + + return ('--define "_topdir %s" --define "_sourcedir %s" --define "_builddir %s" ' + '--define "_srcrpmdir %s" --define "_rpmdir %s" --define "ldflags %s" ' + '--define "commit %s" ' % ( + self.rpmbuild_dir, + self.rpmbuild_sourcedir, self.rpmbuild_builddir, + self.rpmbuild_basedir, self.rpmbuild_basedir, + ldflags, git_hash)) + def _setup_test_specfile(self): + if self.test and not self.ran_setup_test_specfile: + # If making a test rpm we need to get a little crazy with the spec + # file we're building off. (note that this is a temp copy of the + # spec) Swap out the actual release for one that includes the git + # SHA1 we're building for our test package: + setup_specfile_script = get_script_path("test-setup-specfile.pl") + cmd = "%s %s %s %s %s-%s %s" % \ + ( + setup_specfile_script, + self.spec_file, + self.git_commit_id[:7], + self.commit_count, + self.project_name, + self.display_version, + self.tgz_filename, + ) + run_command(cmd) + # Custom Openshift v3 stuff follows, everything above is the standard + # builder + cmd = '. ./hack/common.sh ; echo $(os::build::ldflags)' + ldflags = run_command('bash -c \'%s\'' % (cmd) ) + update_ldflags = "sed -i 's|^%%global ldflags .*$|%%global ldflags %s|' %s" % \ + (ldflags, self.spec_file) + output = run_command(update_ldflags) + + self.build_version += ".git." + str(self.commit_count) + "." + str(self.git_commit_id[:7]) + self.ran_setup_test_specfile = True + diff --git a/rel-eng/lib/openshift/tagger/__init__.py b/rel-eng/lib/openshift/tagger/__init__.py new file mode 100644 index 000000000000..c2e253482c32 --- /dev/null +++ b/rel-eng/lib/openshift/tagger/__init__.py @@ -0,0 +1,45 @@ +""" +Code for tagging Openshift v3 packages +""" + +from tito.common import get_latest_commit, run_command +from tito.tagger import VersionTagger + +class OpenshiftTagger(VersionTagger): + """ + Tagger which defines a specfile global 'commit' with the git hash at + which the tag was created. This also defines ldflags by importing + hack/common.sh and executing os::build::ldflags Setting %commit isn't + currently used, but seems to be the norm for RPM packaging of golang apps. + + Requires that your commit is written on one single line as: + %global commit 460abe2a3abe0fa22ac96c551fe71c0fc36f7475 + + And that your ldflags are similarly on a single line, ie: + %global ldflags -X foo -X bar + + Used For: + - Openshift v3, probably not much else + """ + + def _tag_release(self): + """ + Tag a new release of the package, add specfile global named commit. (ie: + x.y.z-r+1) and ldflags from hack/common.sh os::build::ldflags + """ + self._make_changelog() + new_version = self._bump_version(release=True) + git_hash = get_latest_commit() + update_commit = "sed -i 's/^%%global commit .*$/%%global commit %s/' %s" % \ + (git_hash, self.spec_file) + output = run_command(update_commit) + + cmd = '. ./hack/common.sh ; echo $(os::build::ldflags)' + ldflags = run_command('bash -c \'%s\'' % (cmd) ) + update_ldflags = "sed -i 's|^%%global ldflags .*$|%%global ldflags %s|' %s" % \ + (ldflags, self.spec_file) + output = run_command(update_ldflags) + + self._check_tag_does_not_exist(self._get_new_tag(new_version)) + self._update_changelog(new_version) + self._update_package_metadata(new_version) diff --git a/rel-eng/openshift-master.service b/rel-eng/openshift-master.service index ddfac1afb125..eaa99a322f76 100644 --- a/rel-eng/openshift-master.service +++ b/rel-eng/openshift-master.service @@ -5,7 +5,7 @@ Documentation=https://github.com/openshift/origin [Service] Type=simple EnvironmentFile=-/etc/sysconfig/openshift-master -ExecStart=/usr/bin/openshift start $ROLE $OPTIONS +ExecStart=/usr/bin/openshift start $ROLE --images=${IMAGES} $OPTIONS WorkingDirectory=/var/lib/openshift/ [Install] diff --git a/rel-eng/openshift-master.sysconfig b/rel-eng/openshift-master.sysconfig index e0f89be30926..11834c24784d 100644 --- a/rel-eng/openshift-master.sysconfig +++ b/rel-eng/openshift-master.sysconfig @@ -1,2 +1,3 @@ ROLE="master" OPTIONS="--loglevel=0" +IMAGES='openshift/origin-${component}:${version}' diff --git a/rel-eng/openshift-node.service b/rel-eng/openshift-node.service index 301264d5847f..fef83eba4544 100644 --- a/rel-eng/openshift-node.service +++ b/rel-eng/openshift-node.service @@ -7,7 +7,7 @@ Documentation=https://github.com/openshift/origin [Service] Type=simple EnvironmentFile=-/etc/sysconfig/openshift-node -ExecStart=/usr/bin/openshift start $ROLE $OPTIONS +ExecStart=/usr/bin/openshift start $ROLE --images=${IMAGES} $OPTIONS WorkingDirectory=/var/lib/openshift/ [Install] diff --git a/rel-eng/openshift-node.sysconfig b/rel-eng/openshift-node.sysconfig index 11f20f8d5a99..3e6edfa3038b 100644 --- a/rel-eng/openshift-node.sysconfig +++ b/rel-eng/openshift-node.sysconfig @@ -3,3 +3,4 @@ OPTIONS="--loglevel=0" # If running node on a separate host please rsync the admin directory ie: # rsync root@openshift-master:/var/lib/openshift/openshift.local.certificates/admin /var/lib/openshift/openshift.local.certificates/ KUBECONFIG="/var/lib/openshift/openshift.local.certificates/admin/.kubeconfig" +IMAGES='openshift/origin-${component}:${version}' diff --git a/rel-eng/tito.props b/rel-eng/tito.props index fa6aa05a7ff8..2e9df81bb801 100644 --- a/rel-eng/tito.props +++ b/rel-eng/tito.props @@ -1,6 +1,6 @@ [buildconfig] -builder = embeddedcommitbuilder.EmbeddedCommitBuilder -tagger = embeddedcommittagger.EmbeddedCommitTagger +builder = openshift.builder.OpenshiftBuilder +tagger = openshift.tagger.OpenshiftTagger changelog_do_not_remove_cherrypick = 0 changelog_format = %s (%ae) lib_dir = rel-eng/lib