Skip to content

Commit 6f9f202

Browse files
committed
[ci] Use github actions
1 parent 34aa1d0 commit 6f9f202

File tree

9 files changed

+132
-72
lines changed

9 files changed

+132
-72
lines changed

.ci/build.sh

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
6+
function build_regression_tester() {
7+
echo "::group::Install OpenJDK 8+11"
8+
install_openjdk 8
9+
install_openjdk 11 # last one is the default
10+
echo "::endgroup::"
11+
12+
echo "::group::Install dependencies"
13+
gem install bundler
14+
bundle config set --local path vendor/bundle
15+
bundle install
16+
echo "::endgroup::"
17+
18+
echo "::group::Build with rake"
19+
bundle exec rake check_manifest
20+
bundle exec rake rubocop
21+
bundle exec rake clean test
22+
bundle exec rake clean integration-test
23+
bundle exec rake install_gem
24+
bundle exec pmdtester -h
25+
echo "::endgroup::"
26+
27+
# builds on forks or builds for pull requests stop here
28+
if [[ "${PMD_CI_REPO}" != "pmd/pmd-regression-tester" || -n "${PMD_CI_PULL_REQUEST_NUMBER}" ]]; then
29+
exit 0
30+
fi
31+
32+
# if this is a release build from a tag...
33+
if [[ "${PMD_CI_REPO}" == "pmd/pmd-regression-tester" && "${PMD_CI_GIT_REF}" == refs/tags/* ]]; then
34+
echo "::group::Publish to rubygems"
35+
setup_secrets
36+
37+
git stash --all
38+
gem build pmdtester.gemspec
39+
gem push pmdtester-*.gem
40+
echo "::endgroup::"
41+
fi
42+
43+
}
44+
45+
## helper functions
46+
47+
function install_openjdk() {
48+
OPENJDK_VERSION=$1
49+
echo "Installing OpenJDK ${OPENJDK_VERSION}"
50+
JDK_OS=linux
51+
COMPONENTS_TO_STRIP=1 # e.g. openjdk-11.0.3+7/bin/java
52+
DOWNLOAD_URL=$(curl --silent -X GET "https://api.adoptopenjdk.net/v3/assets/feature_releases/${OPENJDK_VERSION}/ga?architecture=x64&heap_size=normal&image_type=jdk&jvm_impl=hotspot&os=${JDK_OS}&page=0&page_size=1&project=jdk&sort_method=DEFAULT&sort_order=DESC&vendor=adoptopenjdk" \
53+
-H "accept: application/json" \
54+
| jq -r ".[0].binaries[0].package.link")
55+
OPENJDK_ARCHIVE=$(basename ${DOWNLOAD_URL})
56+
CACHE_DIR=${HOME}/.cache/openjdk
57+
TARGET_DIR=${HOME}/openjdk${OPENJDK_VERSION}
58+
mkdir -p ${CACHE_DIR}
59+
mkdir -p ${TARGET_DIR}
60+
if [ ! -e ${CACHE_DIR}/${OPENJDK_ARCHIVE} ]; then
61+
echo "Downloading from ${DOWNLOAD_URL} to ${CACHE_DIR}"
62+
curl --location --output ${CACHE_DIR}/${OPENJDK_ARCHIVE} "${DOWNLOAD_URL}"
63+
else
64+
echo "Skipped download, file ${CACHE_DIR}/${OPENJDK_ARCHIVE} already exists"
65+
fi
66+
tar --extract --file ${CACHE_DIR}/${OPENJDK_ARCHIVE} -C ${TARGET_DIR} --strip-components=${COMPONENTS_TO_STRIP}
67+
export JAVA_HOME="${TARGET_DIR}"
68+
export PATH="${TARGET_DIR}/bin:${PATH}"
69+
java -version
70+
echo "Java is available at ${TARGET_DIR}"
71+
}
72+
73+
function setup_secrets() {
74+
echo "Setting up secrets..."
75+
# Required secrets are: GEM_HOST_API_KEY
76+
local -r env_file=".ci/files/env"
77+
printenv PMD_CI_SECRET_PASSPHRASE | gpg --batch --yes --decrypt \
78+
--passphrase-fd 0 \
79+
--output ${env_file} ${env_file}.gpg
80+
source ${env_file} >/dev/null 2>&1
81+
rm ${env_file}
82+
}
83+
84+
85+
build_regression_tester

.ci/files/env.gpg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
� &���X�Ҏ?�I��v#R��D�Hջ�e�xY�ϴE^�<���@�))ˍ: r�cA��j�R�NNJ�6��r<^C��������`%�T�算�i�ڦ+-�#�� f`0AqJ�1s�a�Y�d�U������,��$�e`���h�j_�

.github/workflows/build.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: build
2+
3+
on:
4+
push:
5+
branches: [ master ]
6+
tags:
7+
- '**'
8+
pull_request:
9+
branches: [ master ]
10+
11+
jobs:
12+
build:
13+
runs-on: ubuntu-latest
14+
continue-on-error: false
15+
if: ${{ !contains(github.event.head_commit.message, '[skip ci]') }}
16+
steps:
17+
- uses: actions/checkout@v2
18+
- uses: actions/cache@v2
19+
with:
20+
path: |
21+
~/.m2/repository
22+
~/.cache
23+
vendor/bundle
24+
key: ${{ runner.os }}-${{ hashFiles('pmdtester.gemspec') }}
25+
restore-keys: |
26+
${{ runner.os }}-
27+
- name: Set up Ruby
28+
uses: ruby/setup-ruby@v1
29+
with:
30+
ruby-version: 2.7
31+
- name: Build
32+
run: .ci/build.sh
33+
shell: bash
34+
env:
35+
MAVEN_OPTS: -Dmaven.wagon.httpconnectionManager.ttlSeconds=180 -Dmaven.wagon.http.retryHandler.count=3
36+
PMD_CI_SECRET_PASSPHRASE: ${{ secrets.PMD_CI_SECRET_PASSPHRASE }}
37+
PMD_CI_REPO: ${{ github.repository }}
38+
PMD_CI_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
39+
PMD_CI_GIT_REF: ${{ github.ref }}

.github/workflows/ruby.yml

Lines changed: 0 additions & 26 deletions
This file was deleted.

.hoerc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
exclude: !ruby/regexp /tmp$|\.(git|idea)\/|\.project|target|test\/|Gemfile\.lock|\.bundle\/|install-jdk.sh|vendor\/cache|localtests/
1+
exclude: !ruby/regexp /tmp$|\.(git|idea)\/|\.project|target|test\/|Gemfile\.lock|\.bundle\/|vendor\/bundle|localtests/

.travis.yml

Lines changed: 0 additions & 40 deletions
This file was deleted.

Manifest.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
.github/workflows/ruby.yml
1+
.ci/build.sh
2+
.ci/files/env.gpg
3+
.github/workflows/build.yml
24
.gitignore
35
.hoerc
46
.rubocop.yml
57
.rubocop_todo.yml
68
.ruby-version
7-
.travis.yml
89
Gemfile
910
History.md
1011
LICENSE

README.rdoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ home :: https://pmd.github.io
44
code :: https://github.com/pmd/pmd-regression-tester
55
bugs :: https://github.com/pmd/pmd-regression-tester/issues
66

7-
build-status :: {<img src="https://travis-ci.com/pmd/pmd-regression-tester.svg?branch=master" alt="Build Status" />}[https://travis-ci.com/pmd/pmd-regression-tester]
7+
build-status :: {<img src="https://github.com/pmd/pmd-regression-tester/workflows/build/badge.svg?branch=master" alt="Build Status" />}[https://github.com/pmd/pmd-regression-tester/actions?query=workflow%3Abuild]
88

99
== DESCRIPTION:
1010

pmdtester.gemspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ Gem::Specification.new do |s|
1111
s.metadata = { "bug_tracker_uri" => "https://github.com/pmd/pmd-regression-tester/issues", "homepage_uri" => "https://pmd.github.io", "source_code_uri" => "https://github.com/pmd/pmd-regression-tester" } if s.respond_to? :metadata=
1212
s.require_paths = ["lib".freeze]
1313
s.authors = ["Andreas Dangel".freeze, "Binguo Bao".freeze]
14-
s.date = "2020-11-05"
14+
s.date = "2020-11-17"
1515
s.description = "A regression testing tool ensure that new problems and unexpected behaviors will not be introduced to PMD project after fixing an issue , and new rules can work as expected.".freeze
1616
s.email = ["[email protected]".freeze, "[email protected]".freeze]
1717
s.executables = ["pmdtester".freeze]
1818
s.extra_rdoc_files = ["History.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze]
19-
s.files = [".github/workflows/ruby.yml".freeze, ".gitignore".freeze, ".hoerc".freeze, ".rubocop.yml".freeze, ".rubocop_todo.yml".freeze, ".ruby-version".freeze, ".travis.yml".freeze, "Gemfile".freeze, "History.md".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/pmdtester".freeze, "config/all-java.xml".freeze, "config/design.xml".freeze, "config/project-list.xml".freeze, "config/projectlist_1_0_0.xsd".freeze, "config/projectlist_1_1_0.xsd".freeze, "lib/pmdtester.rb".freeze, "lib/pmdtester/builders/diff_builder.rb".freeze, "lib/pmdtester/builders/diff_report/configerrors.rb".freeze, "lib/pmdtester/builders/diff_report/errors.rb".freeze, "lib/pmdtester/builders/diff_report/violations.rb".freeze, "lib/pmdtester/builders/diff_report_builder.rb".freeze, "lib/pmdtester/builders/html_report_builder.rb".freeze, "lib/pmdtester/builders/pmd_report_builder.rb".freeze, "lib/pmdtester/builders/project_builder.rb".freeze, "lib/pmdtester/builders/rule_set_builder.rb".freeze, "lib/pmdtester/builders/simple_progress_logger.rb".freeze, "lib/pmdtester/builders/summary_report/branch_name_row.rb".freeze, "lib/pmdtester/builders/summary_report_builder.rb".freeze, "lib/pmdtester/cmd.rb".freeze, "lib/pmdtester/parsers/options.rb".freeze, "lib/pmdtester/parsers/pmd_report_document.rb".freeze, "lib/pmdtester/parsers/projects_parser.rb".freeze, "lib/pmdtester/pmd_branch_detail.rb".freeze, "lib/pmdtester/pmd_configerror.rb".freeze, "lib/pmdtester/pmd_error.rb".freeze, "lib/pmdtester/pmd_report_detail.rb".freeze, "lib/pmdtester/pmd_violation.rb".freeze, "lib/pmdtester/project.rb".freeze, "lib/pmdtester/report_diff.rb".freeze, "lib/pmdtester/resource_locator.rb".freeze, "lib/pmdtester/runner.rb".freeze, "pmdtester.gemspec".freeze, "resources/css/maven-base.css".freeze, "resources/css/maven-theme.css".freeze]
19+
s.files = [".ci/build.sh".freeze, ".ci/files/env.gpg".freeze, ".github/workflows/build.yml".freeze, ".gitignore".freeze, ".hoerc".freeze, ".rubocop.yml".freeze, ".rubocop_todo.yml".freeze, ".ruby-version".freeze, "Gemfile".freeze, "History.md".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/pmdtester".freeze, "config/all-java.xml".freeze, "config/design.xml".freeze, "config/project-list.xml".freeze, "config/projectlist_1_0_0.xsd".freeze, "config/projectlist_1_1_0.xsd".freeze, "lib/pmdtester.rb".freeze, "lib/pmdtester/builders/diff_builder.rb".freeze, "lib/pmdtester/builders/diff_report/configerrors.rb".freeze, "lib/pmdtester/builders/diff_report/errors.rb".freeze, "lib/pmdtester/builders/diff_report/violations.rb".freeze, "lib/pmdtester/builders/diff_report_builder.rb".freeze, "lib/pmdtester/builders/html_report_builder.rb".freeze, "lib/pmdtester/builders/pmd_report_builder.rb".freeze, "lib/pmdtester/builders/project_builder.rb".freeze, "lib/pmdtester/builders/rule_set_builder.rb".freeze, "lib/pmdtester/builders/simple_progress_logger.rb".freeze, "lib/pmdtester/builders/summary_report/branch_name_row.rb".freeze, "lib/pmdtester/builders/summary_report_builder.rb".freeze, "lib/pmdtester/cmd.rb".freeze, "lib/pmdtester/parsers/options.rb".freeze, "lib/pmdtester/parsers/pmd_report_document.rb".freeze, "lib/pmdtester/parsers/projects_parser.rb".freeze, "lib/pmdtester/pmd_branch_detail.rb".freeze, "lib/pmdtester/pmd_configerror.rb".freeze, "lib/pmdtester/pmd_error.rb".freeze, "lib/pmdtester/pmd_report_detail.rb".freeze, "lib/pmdtester/pmd_violation.rb".freeze, "lib/pmdtester/project.rb".freeze, "lib/pmdtester/report_diff.rb".freeze, "lib/pmdtester/resource_locator.rb".freeze, "lib/pmdtester/runner.rb".freeze, "pmdtester.gemspec".freeze, "resources/css/maven-base.css".freeze, "resources/css/maven-theme.css".freeze]
2020
s.homepage = "https://pmd.github.io".freeze
2121
s.licenses = ["BSD-2-Clause".freeze]
2222
s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]

0 commit comments

Comments
 (0)