ci: polish release workflows#1018
Conversation
This comment has been minimized.
This comment has been minimized.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
|
Probably makes sense to close for now :( |
|
Drafted to see how far it can "help" for mitigating security risks, or if, indeed, it should be closed and replaced by a different changeset. |
I reworked the workflow gates instead of closing this PR. The production A malicious workflow can still be started from a branch, but it cannot access the release environment secrets unless GitHub allows that job to deploy to the release environment. With v* restricted at the environment level, arbitrary branches should be blocked before secrets are released. Resolved in 2c2b2d4 |
piotr-iohk
left a comment
There was a problem hiding this comment.
Tested the updated flows... release and release-internal - looking good.
One slight concern is that produced aab is slightly bigger than usual... apparently the reason is:
Found the smoking gun: the GitHub AAB has about 33.4 MB of BUNDLE-METADATA/com.android.tools.build.debugsymbols/*.sym entries, and the terminal AAB doesn’t.
We need to verify if this is fine, but this can be done in the scope of: #988
Verified this and made it explicit in Gradle. The AAB delta is AGP This does not replace the fuller external Recap:
Resolved in 0699101 |
Closes #1006
This PR:
/releasecommand into the GitHub-hosted store release workflow.just releasewith the same NDK version used by the workflows.just runlaunch detached by default, withjust run logsavailable when logcat should stay attached.release-internalenvironment approval gate.Description
This PR finishes the release workflow follow-up from #1011. The release command now dispatches
release.yml, waits for the run, downloads the expected artifact, verifies checksums, and uploads the workflow-built APK to the draft GitHub release.The workflow artifacts now use traceable names like
bitkit-release-185-1andbitkit-release-internal-185-1. The release jobs also install NDK28.1.13356709, pass it into Gradle, and fail if any APK/AAB native library still contains debug sections. This keeps oversized unstripped Rust binaries out of final release artifacts while preserving the workflow as the authoritative build path.Release builds now explicitly set native
SYMBOL_TABLEmetadata for AABs. That makes theBUNDLE-METADATA/com.android.tools.build.debugsymbols/*.symentries intentional and reproducible between localjust releasebuilds and GitHub release workflow builds. This is separate from the fuller native debug symbol archive work in #988, which is waiting on Rust package releases.The production
releaseworkflow now only proceeds onv*tags. The internal workflow intentionally accepts arbitrary branches so QA can create signed-mainnet internal builds from WIP branches, with access to signing material controlled by therelease-internalenvironment reviewers.For local development,
just runnow builds, installs, launches, and returns without streaming device logs. Usejust run logsto attach logcat, orjust run docker logswhen running with the docker port reverses and attached logs.Preview
N/A
QA Notes
Manual Tests
bitkit-release-{buildNumber}-{runNumber}.release-internalenvironment reviewer approval, then succeeds and uploadsbitkit-release-internal-{buildNumber}-{runNumber}.release: required reviewers are configured and deployment refs are restricted tov*tags.release-internal: required reviewers are configured and deployment refs are intentionally unrestricted for WIP branch QA builds.Automated Checks
actionlint .github/workflows/release.yml .github/workflows/release-internal.ymlgit diff --checkjust releaseNDK_VERSION=28.1.13356709 ./gradlew :app:tasks --no-daemonNDK_VERSION=28.1.13356709 ./gradlew bundleMainnetRelease --no-daemonjust --dry-run runjust --dry-run run logsjust --dry-run run docker logs.soentries have no.debug_*sections.app/build/outputs/bundle/mainnetRelease/bitkit-mainnet-release-182.aabcontainsBUNDLE-METADATA/com.android.tools.build.debugsymbols/*.symentries.