Refactor vote federation change tests #1035
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Test | |
on: | |
push: | |
branches: | |
- "master" | |
- "*-rc" | |
pull_request: | |
types: [opened, reopened, synchronize] | |
branches: | |
- "**" | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
container: | |
image: openjdk:8-jdk | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup System Tools | |
run: | | |
apt update -y | |
apt install -y gnupg2 curl | |
- name: Verify files | |
run: | | |
curl -sSL https://secchannel.rsk.co/SUPPORT.asc | gpg2 --import - | |
gpg2 --verify SHA256SUMS.asc && sha256sum --check SHA256SUMS.asc | |
- uses: actions/cache@v4 | |
name: Cache Gradle | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Get gradle wrapper and build dependencies | |
if: steps.cache-gradle.outputs.cache-hit != 'true' | |
run: | | |
./configure.sh | |
./gradlew --no-daemon dependencies | |
- name: Build | |
run: | | |
./gradlew --no-daemon --stacktrace build -x test | |
- name: Archive build artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-files | |
path: | | |
rskj-core/build | |
smell-test: | |
needs: unit-tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup Java JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- uses: actions/cache@v4 | |
name: Restore Gradle cache | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Get gradle wrapper and build dependencies | |
run: | | |
if [ ! -f gradle/wrapper/gradle-wrapper.jar ]; then | |
./configure.sh | |
./gradlew --no-daemon dependencies | |
fi | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: | | |
rskj-core/build | |
- name: Download test results | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-results | |
path: | | |
rskj-core/build/test-results/ | |
- name: Download test reports | |
uses: actions/download-artifact@v4 | |
with: | |
name: test-reports | |
path: | | |
rskj-core/build/reports/ | |
- name: Run SonarQube analysis | |
env: | |
GH_EVENT: ${{ github.event_name }} | |
GH_PR_NUMBER: ${{ github.event.pull_request.number }} | |
GH_PR_BASE_REF: ${{ github.base_ref }} | |
GH_PR_HEAD_REF: ${{ github.head_ref }} | |
GH_REF: ${{ github.ref }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} | |
run: | | |
if [ "$GH_EVENT" = pull_request ]; then | |
./gradlew sonarqube --no-daemon -x build -x test \ | |
-Dsonar.pullrequest.base="$GH_PR_BASE_REF" \ | |
-Dsonar.pullrequest.branch="$GH_PR_HEAD_REF" \ | |
-Dsonar.pullrequest.key="$GH_PR_NUMBER" \ | |
-Dsonar.organization=rsksmart \ | |
-Dsonar.projectKey=rskj \ | |
-Dsonar.host.url="https://sonarcloud.io" \ | |
-Dsonar.junit.reportPaths=rskj-core/build/test-results/ \ | |
-Dsonar.coverage.jacoco.xmlReportPaths=rskj-core/build/reports/jacoco/test/jacocoTestReport.xml \ | |
-Dsonar.token="$SONAR_TOKEN" | |
else | |
./gradlew sonarqube --no-daemon -x build -x test \ | |
-Dsonar.branch.name="$GH_REF" \ | |
-Dsonar.organization=rsksmart \ | |
-Dsonar.projectKey=rskj \ | |
-Dsonar.host.url="https://sonarcloud.io" \ | |
-Dsonar.junit.reportPaths=rskj-core/build/test-results/ \ | |
-Dsonar.coverage.jacoco.xmlReportPaths=rskj-core/build/reports/jacoco/test/jacocoTestReport.xml \ | |
-Dsonar.token="$SONAR_TOKEN" | |
fi | |
mining-tests: | |
needs: build | |
runs-on: ubuntu-latest | |
services: | |
bitcoind1: | |
image: ghcr.io/rsksmart/rskj/mit_bitcoind1:latest | |
ports: | |
- 8331:8331 | |
- 31591:31591 | |
- 32591:32591 | |
options: --name bitcoind1 | |
bitcoind2: | |
image: ghcr.io/rsksmart/rskj/mit_bitcoind2:latest | |
ports: | |
- 8332:8332 | |
- 31592:31592 | |
- 32592:32592 | |
options: --name bitcoind2 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '12.x' | |
- name: Check Node.js version | |
run: node --version | |
- name: Checkout Mining Integration Tests Repository | |
uses: actions/checkout@v4 | |
with: | |
repository: rsksmart/mining-integration-tests | |
ref: ${{ secrets.MINING_INTEGRATION_TESTS_REF }} | |
token: ${{ secrets.GITHUB_TOKEN }} | |
path: mining-integration-tests | |
- name: Install Mining Integration Tests dependencies | |
working-directory: mining-integration-tests | |
run: | | |
npm ci | |
- name: Change mining-integration-tests bitcoind url in config.json to localhost | |
working-directory: mining-integration-tests | |
run: | | |
jq 'if .bitcoind.url? then .bitcoind.url = "localhost" else error(".bitcoind.url not found") end' config.json > config.json.tmp && mv config.json.tmp config.json | |
- name: Generate BTC blocks | |
working-directory: mining-integration-tests | |
run: | | |
node --unhandled-rejections=strict generateBtcBlocks.js | |
- name: Setup Java JDK | |
uses: actions/setup-java@v3 | |
with: | |
java-version: '17' | |
distribution: 'temurin' | |
- uses: actions/cache@v4 | |
name: Cache Gradle | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Get gradle wrapper and build dependencies | |
if: steps.cache-gradle.outputs.cache-hit != 'true' | |
run: | | |
./configure.sh | |
./gradlew --no-daemon dependencies | |
- name: Download build artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-files | |
path: | | |
rskj-core/build | |
- name: Start RSKj and Run Tests | |
working-directory: mining-integration-tests | |
run: | | |
version=$(tr -d "'\"" < ../rskj-core/src/main/resources/version.properties \ | |
| cut -d = -f 2- | paste -sd - -) | |
echo "Using RskJ version $version at ../rskj-core/build/libs/rskj-core-$version-all.jar" | |
java -Drsk.conf.file=./rsk-integration-test.conf -cp ../rskj-core/build/libs/rskj-core-"$version"-all.jar co.rsk.Start --regtest & rskpid=$! | |
tries=0 | |
MAX_TRIES=10 | |
while [ $tries -lt $MAX_TRIES ]; do | |
nc -z 127.0.0.1 4444 && break | |
echo "Waiting for RskJ..." | |
tries=$((tries+1)) | |
sleep 1 | |
done | |
if [ $tries -eq $MAX_TRIES ]; then | |
echo "RskJ unreachable after $MAX_TRIES attempts. Aborting." >&2 | |
exit 1 | |
fi | |
npm test | |
kill $rskpid | |
unit-tests: | |
needs: build | |
runs-on: ubuntu-latest | |
container: | |
image: openjdk:8-jdk | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup System Tools | |
run: | | |
apt update -y | |
apt install -y curl | |
- uses: actions/cache@v4 | |
name: Cache Gradle | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Get gradle wrapper and build dependencies | |
if: steps.cache-gradle.outputs.cache-hit != 'true' | |
run: | | |
./configure.sh | |
./gradlew --no-daemon dependencies | |
- name: Run tests | |
run: | | |
./gradlew --no-daemon --stacktrace test | |
- name: Persist test results for sonar | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-results | |
path: | | |
rskj-core/build/test-results/ | |
- name: Persist test reports for sonar | |
uses: actions/upload-artifact@v4 | |
with: | |
name: test-reports | |
path: | | |
rskj-core/build/reports/ | |
integration-tests: | |
runs-on: ubuntu-latest | |
container: | |
image: openjdk:8-jdk | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup System Tools | |
run: | | |
apt update -y | |
apt install -y curl | |
- uses: actions/cache@v4 | |
name: Cache Gradle | |
id: cache-gradle | |
with: | |
path: | | |
.gradle/caches | |
gradle/wrapper | |
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} | |
restore-keys: | | |
${{ runner.os }}-gradle- | |
- name: Get gradle wrapper and build dependencies | |
if: steps.cache-gradle.outputs.cache-hit != 'true' | |
run: | | |
./configure.sh | |
./gradlew --no-daemon dependencies | |
- name: Run tests | |
run: | | |
./gradlew --no-daemon --stacktrace integrationTest |