ci: automate release artifacts and store uploads after release PR merge
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 10/100
調査の方向性
Start with pubspec.yaml, CHANGELOG.md, docs/AUDIT.md and android/app/build.gradle.kts, which define the version, release notes, audit entry and Android signing. Then read the existing CI workflows that run the tests and builds checks. Done means a merged release PR validates its metadata and publishes the Windows ZIP, Android AAB and iOS IPA with protected secrets, while ordinary merges touch no release secrets. Credential setup, rotation and rerun steps belong in docs/RELEASING.md.
索引モデルが issue の本文から書いたものです。
説明
Goal
After a release PR merges into main, build distributable UNIUN artifacts, attach the Windows ZIP to a versioned GitHub Release, upload Android to Google Play, and upload iOS to TestFlight. The maintainer will review and submit the store updates for public release.
Release PR contract
- A release PR updates
pubspec.yaml(MAJOR.MINOR.PATCH+build), adds user-facing notes toCHANGELOG.md, and adds the release audit entry todocs/AUDIT.mdwithout deleting earlier audit history. - Validate that the version is new, the build number exceeds the last store upload, and the changelog/audit entries match the version. Fail before any upload if validation fails.
- Trigger publishing only for a merged release PR, not for ordinary merges, PR builds, or nightly builds. Require the
testsandbuildschecks to pass before publishing.
Artifacts and uploads
- Windows: build in Release mode on Windows, ZIP the complete runnable output directory, create tag
v<version>, and attach the ZIP and checksums to a GitHub Release. - Android: build a Release AAB signed with the existing production upload key, then upload it to a configured Google Play track for maintainer review. Do not use the disposable key from PR build CI.
- iOS: build and sign a Release IPA on macOS for both
in.uniun.appandin.uniun.app.ShareExtension, then upload it to App Store Connect/TestFlight. The maintainer handles App Store submission after processing and review. - Fetch the real Git LFS model asset for distributable builds; the pointer-only checkout used by PR build CI must not be shipped.
- Keep version, tag, release notes, and all three artifacts tied to the same merged commit. Make failed or partial uploads visible and safe to retry without silently incrementing or reusing a store build number.
Credentials and gates
- Store the Android upload keystore/passwords, Google Play service account access, Apple Distribution certificate/profiles, and App Store Connect API key in protected GitHub environment secrets. Never write them to the repo or expose them in logs or PR jobs.
- Limit Play permissions to the selected track. Confirm the target track before enabling upload; keep production rollout/manual submission with the maintainer.
- Document credential setup, rotation, a manual rerun path, and what to do after a partial release in
docs/RELEASING.md.
Google Play credentials
| Needed | How to get it |
|---|---|
Existing Android upload keystore (.jks), alias, store password, and key password |
Use the upload key for the current Play listing; android/app/build.gradle.kts reads it through the gitignored android/key.properties. See docs/RELEASING.md. |
| Google Play service account JSON key | In Google Cloud, enable the Google Play Developer API and create a service account. Invite its email in Play Console → Users and permissions with access to UNIUN, then create its JSON key for CI. Google setup guide. |
| Track permission | Grant Release apps to testing tracks for a test track. Grant Release to production only if automated production submission is later chosen. Play permissions. |
App Store / TestFlight credentials
| Needed | How to get it |
|---|---|
App Store Connect API key (.p8), Key ID, and Issuer ID |
App Store Connect → Users and Access → Integrations → App Store Connect API → Team Keys → Generate. Use an App Manager role for managing the build. Download the .p8 once and store it securely. Apple API key guide. |
Apple Distribution signing identity (.p12) and its password |
Export the existing distribution certificate with its private key from the Mac that holds it. Apple signing guidance. |
| Two App Store Connect provisioning profiles | Create one for in.uniun.app and one for in.uniun.app.ShareExtension, matching the distribution certificate and configured capabilities. Download them from Apple Developer → Certificates, Identifiers & Profiles → Profiles. Apple profile guide. |
Acceptance criteria
- A non-release merge never accesses release secrets or uploads anything.
- A release PR with failing checks or invalid version metadata cannot upload.
- One merged release PR produces a working Windows ZIP/GitHub Release, a Play Console AAB ready for review, and an iOS build visible in TestFlight.
- The maintainer can submit the store releases manually after checking the uploaded builds.
- 主要言語
- Dart
- スター
- 2
- フォーク
- 2
- 平均マージ
- 1日 35分
- マージ済み PR(30日)
- 36
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
basictech01/uniun のほかの issue
-
bug good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
basictech01/uniun#300 ·
メンテナーはふだん 1 日以内に返信
-
bug good first issue
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
basictech01/uniun#301 ·
メンテナーはふだん 1 日以内に返信
-
enhancement good first issue P2-Medium
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
basictech01/uniun#296 ·
メンテナーはふだん 1 日以内に返信
-
bug good first issue P2-Medium
難易度 4/5 1〜2日 初心者へのやさしさ 22/100
basictech01/uniun#293 ·
メンテナーはふだん 1 日以内に返信
-
bug P1-High
難易度 4/5 3〜5日 初心者へのやさしさ 18/100
basictech01/uniun#286 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
basictech01/uniun の issue をすべて見る
似ている issue
-
good-first-issue P3
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
flutter/dart-intellij-third-party#758 ·
メンテナーはふだん 1 日以内に返信
-
Bug: Incorrect location coordinates on logged Sound Meter data対応中かも @Jashan32 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
area/archive bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
DarkFlippers/qUnleashed#374 ·
メンテナーはふだん 1 日以内に返信
-
agent:in-progress agent:ready feature P2 · 中 区域: 悬浮窗
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
ASDW51/DanmuFloat#178 ·
メンテナーはふだん 1 日以内に返信
-
Missing workoutsオープンenhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
InlitX/GymMane#237 · コメント 1 件 ·
メンテナーはふだん 5 日以内に返信