refs #13610 Merge branch '13610-projects-hierarchy'
authorDaniel Kos <daniel.kos@contractors.roche.com>
Tue, 12 Jun 2018 21:30:03 +0000 (23:30 +0200)
committerDaniel Kos <daniel.kos@contractors.roche.com>
Tue, 12 Jun 2018 21:30:38 +0000 (23:30 +0200)
Arvados-DCO-1.1-Signed-off-by: Daniel Kos <daniel.kos@contractors.roche.com>

Dockerfile [new file with mode: 0644]
Makefile
run-tests-build.sh [deleted file]

diff --git a/Dockerfile b/Dockerfile
new file mode 100644 (file)
index 0000000..8f33282
--- /dev/null
@@ -0,0 +1,10 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
+FROM node:latest
+MAINTAINER Ward Vandewege <ward@curoverse.com>
+RUN apt-get update
+RUN apt-get -q -y install libsecret-1-0 libsecret-1-dev rpm
+RUN apt-get install -q -y ruby ruby-dev rubygems build-essential
+RUN gem install --no-ri --no-rdoc fpm
index f2f61f7ecace63d26dcb08c85933f68b7f433d52..a543d4649364f0b1a5e87abf02ad39b8dce45e29 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,44 @@
 #
 # SPDX-License-Identifier: Apache-2.0
 
+APP_NAME?=arvados-workbench2
+
+# GIT_TAG is the last tagged stable release (i.e. 1.2.0)
+GIT_TAG?=$(shell git describe --abbrev=0)
+
+# TS_GIT is the timestamp in the current directory (i.e. 1528815021).
+# Note that it will only change if files change.
+TS_GIT?=$(shell git log -n1 --first-parent "--format=format:%ct" .)
+
+# DATE_FROM_TS_GIT is the human(ish)-readable version of TS_GIT
+# 1528815021 -> 20180612145021
+DATE_FROM_TS_GIT?=$(shell date -ud @$(TS_GIT) +%Y%m%d%H%M%S)
+
+# VERSION uses all the above to produce X.Y.Z.timestamp
+# something in the lines of 1.2.0.20180612145021, this will be the package version
+# it can be overwritten when invoking make as in make packages VERSION=1.2.0
+VERSION?=$(GIT_TAG).$(DATE_FROM_TS_GIT)
+
+# ITERATION is the package iteration, intended for manual change if anything non-code related
+# changes in the package. (i.e. example config files externally added
+ITERATION?=1
+
+DESCRIPTION=Arvados Workbench2 - Arvados is a free and open source platform for big data science.
+MAINTAINER=Ward Vandewege <wvandewege@veritasgenetics.com>
+
+# DEST_DIR will have the build package copied.
+DEST_DIR=/var/www/arvados-workbench2/workbench2/
+
+# Debian package file
+DEB_FILE=$(APP_NAME)_$(VERSION)-$(ITERATION)_amd64.deb
+
+# redHat package file
+RPM_FILE=$(APP_NAME)_$(VERSION)-$(ITERATION).x86_64.rpm
+
 export WORKSPACE?=$(shell pwd)
+
+.PHONY: help clean* yarn-install test build packages packages-with-version 
+
 help:
        @echo >&2
        @echo >&2 "There is no default make target here.  Did you mean 'make test'?"
@@ -14,10 +51,48 @@ help:
        @echo >&2
        @false
 
-test:
-       @yarn install
-       @yarn test      --no-watchAll
+clean-deb:
+       rm -f $(WORKSPACE)/*.deb
+
+clean-rpm:
+       rm -f $(WORKSPACE)/*.rpm
+
+clean-node-modules:
+       rm -rf $(WORKSPACE)/node_modules
+
+clean: clean-rpm clean-deb clean-node-modules
+
+yarn-install:
+       yarn install
+
+test: yarn-install
+       yarn test       --no-watchAll --bail --ci
+
+build: test
+       yarn build
+
+$(DEB_FILE): build
+       fpm \
+        -s dir \
+        -t deb \
+        -n "$(APP_NAME)" \
+        -v "$(VERSION)" \
+        --iteration "$(ITERATION)" \
+        --maintainer="$(MAINTAINER)" \
+        --description="$(DESCRIPTION)" \
+        --deb-no-default-config-files \
+       $(WORKSPACE)/build/=$(DEST_DIR)
+
+$(RPM_FILE): build
+       fpm \
+        -s dir \
+        -t rpm \
+        -n "$(APP_NAME)" \
+        -v "$(VERSION)" \
+        --iteration "$(ITERATION)" \
+        --maintainer="$(MAINTAINER)" \
+        --description="$(DESCRIPTION)" \
+        $(WORKSPACE)/build/=$(DEST_DIR)
 
-build:
-       @yarn install
-       @yarn build
+# use FPM to create DEB and RPM
+packages: $(DEB_FILE) $(RPM_FILE)
diff --git a/run-tests-build.sh b/run-tests-build.sh
deleted file mode 100755 (executable)
index e55b1e0..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/bash -x
-# Copyright (C) The Arvados Authors. All rights reserved.
-#
-# SPDX-License-Identifier: AGPL-3.0
-# The script uses the docker image composer-build:latest
-# Usage docker run -ti -v /var/lib/jenkins/workspace/build-packages-workbench2/:/tmp/workbench2 composer-build:latest /tmp/workbench2/run-tests-build.sh --build_version 1.0.1
-format_last_commit_here() {
-    local format="$1"; shift
-    TZ=UTC git log -n1 --first-parent "--format=format:$format" .
-}
-
-version_from_git() {
-    # Output the version being built, or if we're building a
-    # dev/prerelease, output a version number based on the git log for
-    # the current working directory.
-    if [[ -n "$ARVADOS_BUILDING_VERSION" ]]; then
-        echo "$ARVADOS_BUILDING_VERSION"
-        return
-    fi
-
-    local git_ts git_hash prefix
-    if [[ -n "$1" ]] ; then
-        prefix="$1"
-    else
-        prefix="0.1"
-    fi
-
-    declare $(format_last_commit_here "git_ts=%ct git_hash=%h")
-    ARVADOS_BUILDING_VERSION="$(git describe --abbrev=0).$(date -ud "@$git_ts" +%Y%m%d%H%M%S)"
-    echo "$ARVADOS_BUILDING_VERSION"
-} 
-
-nohash_version_from_git() {
-    version_from_git $1 | cut -d. -f1-3
-}
-
-timestamp_from_git() {
-    format_last_commit_here "%ct"
-}
-
-WORKDIR="/tmp/workbench2"
-cd $WORKDIR
-if [[ -n "$2" ]]; then
-    build_version="$2"
-else
-    build_version="$(version_from_git)"
-fi
-rm -Rf $WORKDIR/node_modules
-rm -f $WORKDIR/*.deb; rm -f $WORKDIR/*.rpm
-# run test and build dist 
-make test
-#make build
-yarn build
-
-# Build deb and rpm packages using fpm from dist passing the destination folder for the deploy to be /var/www/arvados-workbench2/
-fpm -s dir -t deb  -n arvados-workbench2 -v "$build_version" "--maintainer=Ward Vandewege <ward@curoverse.com>" --description "workbench2 Package" --deb-no-default-config-files $WORKDIR/build/=/var/www/arvados-workbench2/workbench2/
-fpm -s dir -t rpm  -n arvados-workbench2 -v "$build_version" "--maintainer=Ward Vandewege <ward@curoverse.com>" --description "workbench2 Package" $WORKDIR/build/=/var/www/arvados-workbench2/workbench2/
-
-mkdir $WORKDIR/packages
-mkdir $WORKDIR/packages/centos7
-mkdir $WORKDIR/packages/ubuntu1404
-mkdir $WORKDIR/packages/ubuntu1604
-mkdir $WORKDIR/packages/debian8
-mkdir $WORKDIR/packages/debian9
-cp $WORKDIR/*.rpm $WORKDIR/packages/centos7/
-cp $WORKDIR/*.deb $WORKDIR/packages/ubuntu1404/
-cp $WORKDIR/*.deb $WORKDIR/packages/ubuntu1604/
-cp $WORKDIR/*.deb $WORKDIR/packages/debian8
-cp $WORKDIR/*.deb $WORKDIR/packages/debian9