-
Notifications
You must be signed in to change notification settings - Fork 39
feat: implement unified build system [WPB-8645] #4059
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
ac489b2
to
e043798
Compare
Built wire-android-dev-debug-pr-4059.apk is available for download |
|
Built wire-android-dev-debug-pr-4059.apk is available for download |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements a unified build system for Wire Android by consolidating various branch‐specific workflows into a single, reusable, and matrix-based configuration. Key changes include:
- Introduction of unified workflows for quality gates, build, deployment, and release management.
- Consolidation of build configurations using JSON matrices for flexible, multi-target builds.
- Addition of a composite action for keystore setup to streamline signing operations.
Reviewed Changes
Copilot reviewed 8 out of 15 changed files in this pull request and generated 2 comments.
Show a summary per file
File | Description |
---|---|
.github/workflows/quality-gates.yml | New workflow to run code analysis, UI tests, and unit tests with summary reporting. |
.github/workflows/deploy.yml | Deployment workflow supporting S3, Google Play, and GitHub Releases with lowercase conversion. |
.github/workflows/build-unified.yml | Unified build workflow orchestrating quality gates, environment setup, artifact generation, etc. |
.github/workflows/build-release-candidate-unified.yml | Unified build workflow for release candidate branch with validation and deployment support. |
.github/workflows/build-production-unified.yml | Unified build workflow for production releases including version comparison validation. |
.github/workflows/build-main-unified.yml | Unified build workflow for the main branch with trigger validation. |
.github/workflows/build-develop-unified.yml | Unified build workflow for the develop branch with support for internal and external deployments. |
.github/actions/setup-keystore/action.yml | Composite action to decode and set up the keystore based on the specified keystore type. |
Comments suppressed due to low confidence (1)
.github/workflows/deploy.yml:51
- There is an inconsistency in the naming between the input ('build-flavor') and the output variable ('build-flavour'). Please consider using consistent naming to avoid confusion.
echo "build-flavour=$(echo '${{ inputs.build-flavor }}' | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
|
||
# Build matrix job - only runs if quality gates pass | ||
build: | ||
name: "Build ${{ matrix.flavor }}${{ matrix.variant }}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] The job name concatenates flavor and variant without a clear separator. Adding a delimiter (e.g., a hyphen) would improve readability.
name: "Build ${{ matrix.flavor }}${{ matrix.variant }}" | |
name: "Build ${{ matrix.flavor }}-${{ matrix.variant }}" |
Copilot uses AI. Check for mistakes.
name: ${{ matrix.flavor }}-${{ matrix.variant }}-artifacts | ||
path: | | ||
app/build/outputs/ | ||
${{ matrix.generate-version-file == true && 'app/version.txt' || '' }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] The inline conditional for including the version file path could be made clearer by explicitly handling the true/false cases to ensure no unintended empty string values affect the artifact upload.
${{ matrix.generate-version-file == true && 'app/version.txt' || '' }} | |
${{ matrix.generate-version-file == true ? 'app/version.txt' : '' }} |
Copilot uses AI. Check for mistakes.
PR Submission Checklist for internal contributors
The PR Title
SQPIT-764
The PR Description
What's new in this PR?
Issues
the current pipeline is hard to extend or change, and a lot of the stuff are not clearly visible
Solutions
Pipeline Architecture
Workflow Mapping
develop
branchbuild-develop-app.yml.disabled
build-develop-unified.yml
main
branchbuild-beta-app.yml.disabled
build-main-unified.yml
release/candidate
build-rc-app.yml.disabled
build-release-candidate-unified.yml
build-prod-app.yml.disabled
build-production-unified.yml
build-fdroid-app.yml.disabled
build-production-unified.yml
build-edge-env.yml.disabled
build-develop-unified.yml
Key Improvements
1. Unified Architecture
build-unified.yml
handles all build logicquality-gates.yml
,deploy.yml
2. Matrix-Based Builds
3. Enhanced Deployment
Build Configuration Examples
Develop Branch (Validation)
Production Release
Testing
Test Coverage (Optional)
How to Test
Briefly describe how this change was tested and if applicable the exact steps taken to verify that it works as expected.
Notes (Optional)
Specify here any other facts that you think are important for this issue.
Attachments (Optional)
Attachments like images, videos, etc. (drag and drop in the text box)
PR Post Submission Checklist for internal contributors (Optional)
PR Post Merge Checklist for internal contributors
References
feat(conversation-list): Sort conversations by most emojis in the title #SQPIT-764
.