generated from TBD54566975/tbd-project-template
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Issue #217 - Convert and port Gradle to Maven build for web5-kt
* No security or license issues * All modules build and tests pass * Dependencies all correctly set via dependencyManagement which may be consumed by other projects (ie. tbDEX) * Ported Dokka to use Dokka CLI in GitHub Actions and instructions to run locally * Change: API Docs via Dokka now have no left sidebar because Gradle plugin enabled multimodule for us. * Detekt ported through Maven plugin * Ported Kover; we have coverage via CodeCov * Switched to use TBD Artifactory for single repo declaration to get 3rdparty deps not in Maven Central * Update README to reflect new build usage * Publish to TBD Artifactory * While we are at it, renames to GitHub Actions for clarity and correctness * Set Surefire patterns to run Test Vectors * Publish every build as a SNAPSHOT in format X.Y.Z-commit-$shortSHA-SNAPSHOT * Validate that SNAPSHOT publishing has a version defined that ends in -SNAPSHOT TODO: * Releasing to Maven Central * Do not publish to TBD Artifactory twice (the build/test/deploy workflow runs in 2 environments, Ubuntu and MacOS) * Update the GU Actions workflows to run on main, not this branch, before we merge it Issue #217: Add Kover
- Loading branch information
1 parent
f3e8a88
commit f30f1cc
Showing
36 changed files
with
2,339 additions
and
734 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
name: Build, Test, and Deploy SNAPSHOT | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
version: | ||
description: 'Version to publish. For example "1.0.0-SNAPSHOT". If not supplied, will default to version specified in the POM.' | ||
required: false | ||
default: '0.0.0-SNAPSHOT' | ||
push: | ||
branches: | ||
- issue-217/maven-build | ||
# Put this back and remove section above before merging to main | ||
#pull_request: | ||
# branches: | ||
# - '*' | ||
|
||
jobs: | ||
build: | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
matrix: | ||
os: [ ubuntu-latest, macos-latest ] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: true | ||
|
||
# https://cashapp.github.io/hermit/usage/ci/ | ||
- name: Init Hermit | ||
uses: cashapp/activate-hermit@v1 | ||
|
||
- uses: actions/cache@v3 | ||
with: | ||
path: ~/.m2/repository | ||
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} | ||
restore-keys: | | ||
${{ runner.os }}-maven- | ||
- name: hash test inputs | ||
run: | | ||
if ! which sha256sum; then brew install coreutils; fi | ||
sha256sum $(find test-vectors -name '*.json') > test-vector-hashes.txt | ||
- name: Build, Test, and Deploy SNAPSHOT | ||
run: | | ||
# Version resolution: use provided | ||
if [ -n "${{ github.event.inputs.version }}" ]; then | ||
resolvedVersion=${{ github.event.inputs.version }} | ||
# Otherwise, construct a version for deployment in form X.Y.Z-commit-$shortSHA-SNAPSHOT | ||
else | ||
mvnVersion=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout) | ||
longSHA=$(git rev-parse --verify HEAD) | ||
version=$(echo "$mvnVersion" | cut -d'-' -f1) | ||
shortSHA=$(echo "${longSHA:0:7}") | ||
resolvedVersion="$version-commit-$shortSHA-SNAPSHOT" | ||
echo "Requesting deployment as version: $resolvedVersion" | ||
fi | ||
# Postcondition check; only allow this to proceed if we have a version ending in "-SNAPSHOT" | ||
if [[ ! "$resolvedVersion" =~ -SNAPSHOT$ ]]; then | ||
echo "Error: The version does not end with \"-SNAPSHOT\": $resolvedVersion" | ||
exit 1 | ||
fi | ||
# Set newly resolved version in POM config | ||
mvn \ | ||
versions:set \ | ||
--batch-mode \ | ||
-DnewVersion=$resolvedVersion | ||
# Maven deploy lifecycle will build, run tests, verify, and deploy | ||
mvn \ | ||
deploy \ | ||
--batch-mode \ | ||
--settings .maven_settings.xml | ||
env: | ||
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} | ||
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} | ||
|
||
# Upload Web5 Vector test resultsß | ||
- uses: actions/upload-artifact@v3 | ||
with: | ||
name: test-results | ||
path: | | ||
**/target/surefire-reports/*Web5TestVectors*.xml | ||
test-vector-hashes.txt | ||
- name: Upload coverage reports to Codecov | ||
uses: codecov/codecov-action@v4 | ||
with: | ||
token: ${{ secrets.CODECOV_TOKEN }} | ||
verbose: true | ||
flags: ${{ runner.os }} | ||
|
||
- uses: actions/upload-artifact@v3 | ||
with: | ||
name: tests-report-junit | ||
path: | | ||
**/target/surefire-reports/*.xml | ||
- name: Generate an access token to trigger downstream repo | ||
uses: actions/create-github-app-token@2986852ad836768dfea7781f31828eb3e17990fa # v1.6.2 | ||
id: generate_token | ||
if: github.ref == 'refs/heads/main' | ||
with: | ||
app-id: ${{ secrets.CICD_ROBOT_GITHUB_APP_ID }} | ||
private-key: ${{ secrets.CICD_ROBOT_GITHUB_APP_PRIVATE_KEY }} | ||
owner: TBD54566975 | ||
repositories: sdk-report-runner | ||
|
||
- name: Trigger sdk-report-runner report build | ||
if: github.ref == 'refs/heads/main' | ||
run: | | ||
curl -L \ | ||
-H "Authorization: Bearer ${APP_TOKEN}" \ | ||
-H "X-GitHub-Api-Version: 2022-11-28" \ | ||
-H "Content-Type: application/json" \ | ||
--fail \ | ||
--data '{"ref": "main"}' \ | ||
https://api.github.com/repos/TBD54566975/sdk-report-runner/actions/workflows/build-report.yaml/dispatches | ||
env: | ||
APP_TOKEN: ${{ steps.generate_token.outputs.token }} |
This file was deleted.
Oops, something went wrong.
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
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
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
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
<settings> | ||
<servers> | ||
<server> | ||
<id>tbd-oss-releases</id> | ||
<username>${env.ARTIFACTORY_USERNAME}</username> | ||
<password>${env.ARTIFACTORY_PASSWORD}</password> | ||
</server> | ||
<server> | ||
<id>tbd-oss-snapshots</id> | ||
<username>${env.ARTIFACTORY_USERNAME}</username> | ||
<password>${env.ARTIFACTORY_PASSWORD}</password> | ||
</server> | ||
</servers> | ||
</settings> |
Oops, something went wrong.