From cf4dd8c71c79e97f91adc0620d753760c144816f Mon Sep 17 00:00:00 2001 From: martinfrancois Date: Mon, 19 Aug 2019 18:12:05 +0200 Subject: [PATCH] add build scripts for CD (cherry picked from commit 9ccc613c9c4c1dfb756ea189302e6d7a5e52c59b) --- .github/.travis.settings.xml | 9 +++++ .github/deploy_bintray_central.sh | 15 +++++++ .github/deploy_prepare.sh | 51 ++++++++++++++++++++++++ .travis.yml | 66 ++++++++++++++++++++++++++++--- 4 files changed, 135 insertions(+), 6 deletions(-) create mode 100644 .github/.travis.settings.xml create mode 100644 .github/deploy_bintray_central.sh create mode 100644 .github/deploy_prepare.sh diff --git a/.github/.travis.settings.xml b/.github/.travis.settings.xml new file mode 100644 index 00000000..541775d4 --- /dev/null +++ b/.github/.travis.settings.xml @@ -0,0 +1,9 @@ + + + + bintray-${env.BINTRAY_SUBJECT}-${env.BINTRAY_REPO} + ${env.BINTRAY_USER} + ${env.BINTRAY_API_KEY} + + + \ No newline at end of file diff --git a/.github/deploy_bintray_central.sh b/.github/deploy_bintray_central.sh new file mode 100644 index 00000000..809c2c10 --- /dev/null +++ b/.github/deploy_bintray_central.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +echo "Copy settings.xml for deployment" +cp .github/.travis.settings.xml $HOME/.m2/settings.xml +echo "Deploy to Bintray" +mvn deploy -DskipTests +echo "Sync to Maven Central" +result=$(curl -X POST -u $BINTRAY_USER:$BINTRAY_API_KEY https://api.bintray.com/maven_central_sync/$BINTRAY_SUBJECT/$BINTRAY_REPO/$BINTRAY_PACKAGE/versions/$TRAVIS_TAG) +if [[ $result == *"Successfully synced and closed repo."* ]] +then + echo Successfully synced to Maven Central + exit 0 +else + echo Failed sync to Maven Central: $result + exit 1 +fi diff --git a/.github/deploy_prepare.sh b/.github/deploy_prepare.sh new file mode 100644 index 00000000..7d9744ac --- /dev/null +++ b/.github/deploy_prepare.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +# Script will zip the javadoc for upload to the release later, generate the changelog and increment the version in the pom.xml file to the one of the tag + +echo TRAVIS_TAG=$TRAVIS_TAG +echo TAG_BRANCH=$TAG_BRANCH + +if [[ "$TRAVIS_PULL_REQUEST" != "false" || ("$TAG_BRANCH" != "master" && "$TAG_BRANCH" != "master-11") || "$TRAVIS_TAG" == "" ]] +then + echo "No tag was made from master or master-11, skipping deployment preparation." + exit 0 +fi + +rev=$(git rev-parse --short HEAD) + +echo "Install Dependencies for Changelog Generation" +gem install rack -v 1.6.4 +gem install github_changelog_generator +echo "Finished Install Dependencies for Changelog Generation" + +git config user.name "Travis CI" +git config user.email "build@travis-ci.org" + +echo "Prepare Git for Commits" +git remote add upstream "https://$GITHUB_TOKEN@github.com/$TRAVIS_REPO_SLUG.git" +git fetch upstream +git checkout $TAG_BRANCH +echo "Finished Prepare Git for Commits" + +echo "Generate Changelog" +github_changelog_generator -t $GITHUB_TOKEN +git add -A CHANGELOG.md +git commit -m "update changelog at ${rev}" +echo "Finished Generate Changelog" + +echo "Increment Version" +mvn versions:set -DnewVersion=$TRAVIS_TAG -DoldVersion=* -DgroupId=* -DartifactId=* +# increment version of children modules +mvn versions:update-child-modules +git commit -am "increment version to ${TRAVIS_TAG}" +echo "Finished Increment Version" + +echo "Push commits" +git push upstream $TAG_BRANCH +echo "Finished Push commits" + +echo "Running mvn package" +mvn package -DskipTests +echo "Making zip of javadoc" +cd ${TRAVIS_BUILD_DIR}/CalendarFXView/target/apidocs +zip -r ${TRAVIS_BUILD_DIR}/javadoc.zip . diff --git a/.travis.yml b/.travis.yml index 0c477e7b..9aac9138 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,63 @@ language: java + +# to make the build work with oraclejdk8: https://travis-ci.community/t/solved-oraclejdk8-installation-failing-still-again/3428 +dist: trusty + +sudo: false # Linux OS: run in container + +env: + global: + # get all the branches referencing this commit + - TAG_BRANCH=$(git ls-remote origin | sed -n "\|$TRAVIS_COMMIT\s\+refs/heads/|{s///p}") + +# Necessary environment variables on Travis CI: +# +# GITHUB_TOKEN: Token from here: https://github.com/settings/tokens => with scope "public_repo" +# BINTRAY_USER: Bintray username +# BINTRAY_API_KEY: API key from here: https://bintray.com/profile/edit => API Key +# +# The Bintray URL follows the following pattern: https://bintray.com/subject/repo/package +# BINTRAY_SUBJECT=subject +# BINTRAY_REPO=repo +# BINTRAY_PACKAGE=package + +jdk: oraclejdk8 + +addons: + apt: + packages: + - p7zip-full + +before_install: + - if [[ "${TRAVIS_OS_NAME}" == linux ]]; then export DISPLAY=:99.0; sh -e /etc/init.d/xvfb start; fi + +install: true + cache: directories: - - $HOME/.m2/ -before_script: - - mvn -v -script: mvn package -jdk: openjdk11 -env: TERM=dumb + - $HOME/.m2 + +script: mvn test -B + +after_success: + - .github/deploy_prepare.sh + +deploy: + - provider: releases + api_key: $GITHUB_TOKEN + file_glob: true + file: + - javadoc.zip + - /**/target/*.jar + skip_cleanup: true + name: Release $TRAVIS_TAG + body: See [CHANGELOG.md](https://github.com/$TRAVIS_REPO_SLUG/blob/master/CHANGELOG.md) + on: &on + repo: $TRAVIS_REPO_SLUG + tags: true + all_branches: true + condition: $TAG_BRANCH =~ ^(master|master-11)$ + - provider: script + script: .github/deploy_bintray_central.sh + skip_cleanup: true + on: *on