From: Daniel Kos Date: Tue, 12 Jun 2018 21:30:03 +0000 (+0200) Subject: refs #13610 Merge branch '13610-projects-hierarchy' X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/3ad7e33a2d50e9ed2298624ea5cac7cb5cd21a6f?hp=566c26c4c699d6c548040970ef48c653e1458268 refs #13610 Merge branch '13610-projects-hierarchy' Arvados-DCO-1.1-Signed-off-by: Daniel Kos --- diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000..8f33282d7f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + +FROM node:latest +MAINTAINER Ward Vandewege +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 diff --git a/Makefile b/Makefile index f2f61f7eca..a543d46493 100644 --- 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 + +# 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 index e55b1e0e83..0000000000 --- a/run-tests-build.sh +++ /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 " --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 " --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