Fastlane match — iOS code signing setup #167
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/pal-e-platform#167
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Infra
Lineage
project-capacitor-mobile→ Board item (platform infrastructure)Repo
forgejo_admin/pal-e-platformUser Story
As a dev agent
I want signing certificates managed automatically via Fastlane match
So that iOS builds are signed without manual Xcode intervention
Context
Fastlane match stores signing certificates and provisioning profiles in a git repo. Using
gitstorage mode with a private Forgejo repoforgejo_admin/ios-certificates. This is platform infrastructure — serves all iOS apps.Blocked by: Apple Developer enrollment (pal-e-platform #164).
File Targets
Files to create:
forgejo_admin/ios-certificates(private)Files NOT to touch:
Acceptance Criteria
ios-certificatescreatedfastlane match initconfigured with git storage pointing to Forgejo repofastlane match developmentgenerates dev certificate + profilefastlane match appstoregenerates distribution certificate + profileTest Expectations
fastlane match appstore --readonlyretrieves certs without errorConstraints
Checklist
Related
project-capacitor-mobile— signing architectureTicket Scope Review: #167
TEMPLATE COMPLIANCE
Checked against
template-issue(the canonical Forgejo issue template).### Lineageproject-capacitor-mobile-> Board item)### Repoforgejo_admin/pal-e-platform)### User Story### Context### File Targets### Acceptance Criteria### Test Expectations### Constraints### Checklist### RelatedExtra section:
### Type(value: "Infra") -- not in the template. Non-blocking, but this is not a standard template field. Thetype:infralabel on the board item already conveys this. Recommend removing to keep issues template-clean.Lineage format: Uses
project-capacitor-mobile -> Board item (platform infrastructure)which is correct underconvention-kanban-over-plans(plans are obsolete, board is the decomposition tool). No plan ancestry expected.TRACEABILITY CHECK
story:cap-buildcap-build: "I want CI to build an iOS binary and upload to TestFlight automatically"arch:signingtype:infraconsumer:westsideAll story: and arch: labels trace to documented entries on project-capacitor-mobile. Traceability triangle is intact.
FORGEJO LABEL GAP
The Forgejo issue has zero labels applied (labels array is empty). The board item on board-capacitor-mobile has labels
story:cap-build,arch:signing,type:infra,consumer:westside-- but those are board-level labels only. The Forgejo issue itself should carry matching labels for discoverability and hook compatibility (e.g.,status:*labels set by QA hooks).Action required: Apply Forgejo labels to the issue:
story:cap-build,arch:signing,type:infra,consumer:westside.FILE TARGETS ASSESSMENT
Specificity: Adequate for agent execution.
forgejo_admin/ios-certificates(private) -- clear targetGap: No explicit file path for where the Matchfile template lives. Is it committed to
ios-certificates? Topal-e-platform? The agent will need to decide. Recommend specifying: "CreateMatchfileinios-certificatesrepo root" or wherever it belongs.ACCEPTANCE CRITERIA ASSESSMENT
All 5 criteria are testable:
fastlane match initconfigured -- verifiable by running commandfastlane match developmentgenerates certs -- verifiable by running commandfastlane match appstoregenerates certs -- verifiable by running commandTEST EXPECTATIONS ASSESSMENT
Both test expectations are verifiable:
fastlane match appstore --readonlyretrieves certs -- command-line verificationGap: No bundle ID is specified anywhere in the issue. The agent needs to know the exact bundle ID (e.g.,
com.westsidebasketball.appor similar). This should be stated in Context or Constraints.DEPENDENCY CHECK
BOARD ALIGNMENT
story:cap-build,arch:signing,type:infra,consumer:westsideITEMS TO FIX
story:cap-build,arch:signing,type:infra,consumer:westsideas Forgejo issue labels (not just board-item labels)### Typesection -- Not in template-issue; type is already conveyed by thetype:infraboard labelVERDICT: NEEDS WORK
Two required items before this ticket is ready for next_up:
Ticket Fix (QA review remediation)
Bundle ID (specified)
com.westsidekingsandqueens.app— as defined incapacitor.config.ts(PR #83).Forgejo Labels
Need to apply:
domain:infra,status:new(or appropriate status label for hook compatibility).Blocker
This ticket IS blocked by Apple Developer enrollment (#164,
blocker:external— budget). Fastlane match requires a paid Apple Developer account to generate signing certificates. Cannot proceed without it.Labels updated on board item:
blocker:externaladded.Ticket #167 Re-Review
Re-review following QA scope review (comment 1) which found two required items, and the fix comment (comment 2) which addressed them.
FINDING 1: Bundle ID -- RESOLVED
The fix comment specifies
com.westsidekingsandqueens.app. Verified against source of truth:/home/ldraney/westside-app/capacitor.config.tsline 4:appId: 'com.westsidekingsandqueens.app'/home/ldraney/westside-app/ios/App/App/capacitor.config.jsonline 2: confirms same valueThis finding is fully resolved. The agent now has the bundle ID needed to generate signing certificates.
FINDING 2: Forgejo Labels -- NOT RESOLVED
The fix comment states "Need to apply:
domain:infra,status:new" but this has two problems:A) Labels not actually applied. The Forgejo issue still has zero labels (
labels: []). The fix comment describes intent but did not execute. The labels must be applied to the issue, not just mentioned in a comment.B) Suggested labels do not exist on this repo. Available Forgejo labels on pal-e-platform are:
domain:backend,domain:devops,domain:frontendstatus:approved,status:in-progress,status:needs-fix,status:qatype:bug,type:devops,type:featureNeither
domain:infranorstatus:newexist. The correct labels to apply from available options would be:domain:devops(closest match for infrastructure/signing work)type:devops(matches the infra nature of the work)No
status:*label needed at this point -- the QA hooks setstatus:approvedorstatus:needs-fixautomatically when a PR is reviewed. For a ticket still in backlog with no PR, no status label is expected.Note: The traceability labels (
story:cap-build,arch:signing,consumer:westside) are board-item labels in pal-e-docs, not Forgejo issue labels. This is correct -- the board is the traceability tool. The original review's ask was specifically about Forgejo labels for discoverability and hook compatibility, which meansdomain:*andtype:*labels.TRACEABILITY VERIFICATION
story:cap-buildarch:signingblocker:externalconsumer:westsideTraceability triangle is intact. All board-level labels trace correctly to project-capacitor-mobile.
BLOCKER STATUS
Confirmed: This ticket is correctly blocked by #164 (Apple Developer Program enrollment,
blocker:external-- budget). Theblocker:externallabel was added to the board item as stated in the fix comment. The dependency chain is valid -- Fastlane match cannot generate signing certificates without a paid Apple Developer account.REMAINING ACTION
One item remains before this ticket is ready for next_up:
domain:devopsandtype:devops(from the available label set). This is a 10-second action via the Forgejo UI or API.The bundle ID gap is closed. The Matchfile location ambiguity (nit from original review) was not addressed but remains non-blocking -- the agent can infer it from context.
VERDICT: NOT APPROVED
One required finding remains unresolved: Forgejo labels are still not applied to the issue. The fix comment described what labels to add but (a) did not apply them and (b) referenced labels that do not exist on this repo. Apply
domain:devops+type:devopsfrom the available label set, and this ticket is ready.