.ci/build.sh in pmdtester-1.1.2 vs .ci/build.sh in pmdtester-1.2.0

- old
+ new

@@ -1,67 +1,99 @@ #!/usr/bin/env bash -source $(dirname $0)/inc/install-openjdk.inc - +# Exit this script immediately if a command/function exits with a non-zero status. set -e +SCRIPT_INCLUDES="log.bash utils.bash setup-secrets.bash openjdk.bash github-releases-api.bash" +# shellcheck source=inc/fetch_ci_scripts.bash +source "$(dirname "$0")/inc/fetch_ci_scripts.bash" && fetch_ci_scripts -function build_regression_tester() { - echo "::group::Install OpenJDK 8+11" - install_openjdk 8 - install_openjdk 11 # last one is the default - echo "::endgroup::" +function build() { + pmd_ci_log_group_start "Install OpenJDK 8+11" + pmd_ci_openjdk_install_adoptopenjdk 11 + pmd_ci_openjdk_install_adoptopenjdk 8 + pmd_ci_openjdk_setdefault 11 + pmd_ci_log_group_end - echo "::group::Install dependencies" - gem install bundler - bundle config set --local path vendor/bundle - bundle install - echo "::endgroup::" + pmd_ci_log_group_start "Install dependencies" + gem install --user-install bundler + bundle config set --local path vendor/bundle + bundle install + pmd_ci_log_group_end - echo "::group::Build with rake" - bundle exec rake check_manifest - bundle exec rake rubocop - bundle exec rake clean test - echo "::endgroup::" + echo + local version + version="$(bundle exec ruby -I. -e 'require "lib/pmdtester"; print PmdTester::VERSION;')" + pmd_ci_log_info "=======================================================================" + pmd_ci_log_info "Building pmd-regression-tester ${version}" + pmd_ci_log_info "=======================================================================" + pmd_ci_utils_determine_build_env pmd/pmd-regression-tester + echo - echo "::group::Run Integration Tests" - bundle exec rake clean integration-test - echo "::endgroup::" + pmd_ci_log_group_start "Build with rake" + bundle exec rake check_manifest + bundle exec rake rubocop + bundle exec rake clean test + pmd_ci_log_group_end - echo "::group::Build Package" - bundle exec rake install_gem - bundle exec pmdtester -h - echo "::endgroup::" + pmd_ci_log_group_start "Run Integration Tests" + bundle exec rake clean integration-test + pmd_ci_log_group_end - # builds on forks or builds for pull requests stop here - if [[ "${PMD_CI_REPO}" != "pmd/pmd-regression-tester" || -n "${PMD_CI_PULL_REQUEST_NUMBER}" ]]; then + pmd_ci_log_group_start "Build Package" + bundle exec rake install_gem + bundle exec pmdtester -h + pmd_ci_log_group_end + + if pmd_ci_utils_is_fork_or_pull_request; then + # builds on forks or builds for pull requests stop here exit 0 fi - # if this is a release build from a tag... - if [[ "${PMD_CI_REPO}" == "pmd/pmd-regression-tester" && "${PMD_CI_GIT_REF}" == refs/tags/* ]]; then - echo "::group::Publish to rubygems" - setup_secrets + # only builds on pmd/pmd-regression-tester continue here + pmd_ci_log_group_start "Setup environment" + pmd_ci_setup_secrets_private_env + pmd_ci_log_group_end - git stash --all - gem build pmdtester.gemspec - gem push pmdtester-*.gem - echo "::endgroup::" - fi + if isReleaseBuild "$version"; then + pmd_ci_log_group_start "Publish to rubygems" + gem build pmdtester.gemspec + local gempkgfile + gempkgfile="$(echo pmdtester-*.gem)" + gem push "${gempkgfile}" + pmd_ci_log_group_end -} + pmd_ci_log_group_start "Update Github Releases" + # create a draft github release + pmd_ci_gh_releases_createDraftRelease "${PMD_CI_TAG}" "$(git rev-list -n 1 "${PMD_CI_TAG}")" + GH_RELEASE="$RESULT" -## helper functions + # Deploy to github releases + pmd_ci_gh_releases_uploadAsset "$GH_RELEASE" "${gempkgfile}" -function setup_secrets() { - echo "Setting up secrets..." - # Required secrets are: GEM_HOST_API_KEY - local -r env_file=".ci/files/env" - printenv PMD_CI_SECRET_PASSPHRASE | gpg --batch --yes --decrypt \ - --passphrase-fd 0 \ - --output ${env_file} ${env_file}.gpg - source ${env_file} >/dev/null 2>&1 - rm ${env_file} + # extract the release notes + RELEASE_NAME="${version}" + BEGIN_LINE=$(grep -n "^# " History.md|head -1|cut -d ":" -f 1) + BEGIN_LINE=$((BEGIN_LINE + 1)) + END_LINE=$(grep -n "^# " History.md|head -2|tail -1|cut -d ":" -f 1) + END_LINE=$((END_LINE - 1)) + RELEASE_BODY="$(head -$END_LINE History.md | tail -$((END_LINE - BEGIN_LINE)))" + + pmd_ci_gh_releases_updateRelease "$GH_RELEASE" "$RELEASE_NAME" "$RELEASE_BODY" + + # Publish release - this sends out notifications on github + pmd_ci_gh_releases_publishRelease "$GH_RELEASE" + pmd_ci_log_group_end + fi } +function isReleaseBuild() { + local version="$1" -build_regression_tester + if [[ "${version}" != *-SNAPSHOT && "${PMD_CI_TAG}" != "" ]]; then + return 0 + fi + + return 1 +} + +build