Skip to content

Implement trustkit android release GitHub actions - #118

Merged
alexanderdibenedetto merged 5 commits into
masterfrom
mts1-542-implement-trustkit-android-release-github-actions
Nov 5, 2026
Merged

alexanderdibenedetto merged 5 commits into
masterfrom
mts1-542-implement-trustkit-android-release-github-actions

Conversation

@alexanderdibenedetto

@alexanderdibenedetto alexanderdibenedetto commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Release TrustKit 1.2.0 to Maven Central from GitHub releases

Publishing a GitHub release now verifies the version, builds a signed Maven bundle (AAR, POM, module metadata, sources, javadoc, checksums, signatures), attaches it to the release, and publishes it to Maven Central.

  • Release logic lives in scripts/. Publishing config moved into trustkit/build.gradle.
  • CI runs on every PR. Lint runs first. Then unit tests, script tests, the release bundle, the demo apps and instrumentation tests run in parallel.
  • Fixed instrumentation tests broken by live-site certificate changes. Live tests now use only datatheorem.com, yahoo.com and badssl.com, with the same pins as TrustKit iOS.
  • README: release instructions and a Maven Central badge.

Before the first release: create a maven-central environment with MAVEN_CENTRAL_USERNAME, MAVEN_CENTRAL_PASSWORD, SIGNING_KEY and SIGNING_KEY_PASSWORD, and publish the signing key's public half to a keyserver.

Alexander DiBenedetto added 4 commits November 2, 2026 14:00
CI now runs on every pull request: lint first, then unit tests, the
release bundle, demo apps and instrumentation tests in parallel. A
published GitHub release attaches the signed bundle zip and uploads
the same zip to Maven Central. Build and release logic lives in
scripts/, and publishing config moves into trustkit/build.gradle.
Replace facebook, microsoft and google hosts with yahoo.com and
datatheorem.com equivalents. Stop re-running CI at release time, and
replace the dead Bintray badge with a Maven Central badge.

@claude claude Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Findings marked 🟡 are optional suggestions and need no follow-up push.

Comment thread .github/workflows/ci.yml Resolved
Comment thread .github/workflows/release.yml Resolved
Comment thread trustkit/build.gradle Resolved
marcantoineg
marcantoineg previously approved these changes Nov 3, 2026

@marcantoineg marcantoineg left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 After comments

Comment thread .github/workflows/ci.yml Resolved
Comment thread .github/workflows/release.yml Resolved
Comment thread .github/workflows/release.yml Resolved
Comment thread scripts/build_release_bundle.sh Resolved
Comment thread trustkit/build.gradle Resolved
- Read the tag from release.tag_name and use one concurrency group per tag
- Print the bundle contents from zip instead of a second listing
- List Data Theorem Support as the POM developer
- Document the localbroadcastmanager dependency for report receivers

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Maintainer validation of real PGP signing and Central Portal acceptance is still needed before the first irreversible release because CI covers only unsigned bundles and mocked API interactions.

No open issues 🎉

What changed in this PR

Automates TrustKit Android 1.2.0 releases to Maven Central through GitHub Releases, consolidates publishing configuration, and reorganizes CI.

Changes:

  • Adds version verification, signed Maven bundle creation, release attachment, and Maven Central publishing.
  • Runs lint first, then tests, release-bundle builds, and demo builds in parallel using shared setup.
  • Refreshes instrumentation-test hosts and pins, bumps the library version, and documents release steps.
File Description
trustkit/​src/​androidTest/​res/​xml/​network_security_config.xml Updates test domains and certificate pins.
trustkit/​src/​androidTest/​java/​com/​datatheorem/​android/​trustkit/​reporting/​BackgroundReporterTest.java Switches reporting-test hostnames to Yahoo.
trustkit/​src/​androidTest/​java/​com/​datatheorem/​android/​trustkit/​reporting/​BackgroundReporterTaskTest.java Moves failing test endpoints to Data Theorem.
trustkit/​src/​androidTest/​java/​com/​datatheorem/​android/​trustkit/​pinning/​SSLSocketFactoryTest.java Aligns socket tests with updated hosts and intermediate pinning.
trustkit/​build.gradle Configures Maven publication, documentation artifacts, and environment-based signing.
scripts/​verify_release_version.sh Checks tag consistency and whether the version already exists on Maven Central.
scripts/​test_publish_maven_central.sh Tests publishing outcomes and credential handling with a fake HTTP client.
scripts/​publish_maven_central.sh Uploads signed bundles and polls deployment status.
scripts/​lib.sh Provides shared shell settings, error handling, and version lookup.
scripts/​enable_kvm.sh Extracts emulator hardware-acceleration setup.
scripts/​build_release_bundle.sh Builds and archives the versioned Maven repository.
README.md Documents releases and the optional broadcast dependency; updates the Maven badge.
gradle/​libs.versions.toml Sets version 1.2.0 and increments the version code.
deploymentScripts/​publish-mavencentral.gradle Removes the legacy publishing configuration.
.gitignore Excludes generated release output.
.github/​workflows/​release.yml Adds release verification, bundle attachment, and publishing jobs.
.github/​workflows/​ci.yml Expands PR coverage and separates lint-dependent build and test jobs.
.github/​actions/​setup/​action.yml Centralizes JDK and Gradle setup.

Review effort: Balanced

@alexanderdibenedetto
alexanderdibenedetto merged commit 0b3ce10 into master Nov 5, 2026
9 of 15 checks passed
@alexanderdibenedetto
alexanderdibenedetto deleted the mts1-542-implement-trustkit-android-release-github-actions branch November 5, 2026 17:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants