CI/CD improvements: SwiftLint integration, automated releases, and branch protection#17
Merged
Merged
Conversation
…tection docs - Add .swiftlint.yml with strict configuration - Add SwiftLint step to testing workflow - Add lint lane to Fastfile for local use - Create release.yml workflow for tag-triggered releases (v*.*.*) - Create BRANCH_PROTECTION.md guide for repository settings - Update README.md with new workflows and lanes
- Add error handling for SwiftLint installation - Remove --strict flag to avoid crashes - Disable strict opt-in rules that cause issues - Add warning message for lint failures
SwiftLint currently crashes with Xcode 26.x on CI runners. Making it non-blocking with continue-on-error until compatibility is fixed. Developers can still run 'bundle exec fastlane lint' locally.
- Replace manual brew install with official SwiftLint GitHub Action - Simplify .swiftlint.yml config to avoid potential crash triggers - Remove strict mode from Fastlane lint lane - Keep SwiftLint non-blocking until Xcode 26 support is confirmed
SwiftLint crashes on Xcode 26 due to LLVM incompatibility (known issue). Solution: Run lint on macos-14 with Xcode 15.4 (compatible), tests on macos-15 with Xcode 26. - lint job: macos-14, Xcode 15.4, norio-nomura/action-swiftlint - test job: macos-15, Xcode 26.x, Fastlane tests
Docker container actions don't work on macOS runners. Using 'brew install swiftlint' on macos-14 with Xcode 15.4.
- Use macos-15 for lint job (same as test job) - Remove glob patterns from .swiftlint.yml that may cause CI issues - Disable type_name and identifier_name rules for project compatibility
…de 26) SwiftLint 0.63.0 crashes on Xcode 26 due to LLVM incompatibility. Using Xcode 16.2 for lint job, Xcode 26 for tests.
SwiftLint is not pre-installed on ubuntu-latest, so we use the norio-nomura/action-swiftlint Docker action which packages SwiftLint.
Branch protection rules must be configured manually in GitHub UI. This file was just documentation with no practical value.
- Remove unnecessary comments from release.yml - Remove fastlane lint lane (CI uses Docker action instead) - Update README to remove fastlane lint reference
- Release triggers when PR from release/* is merged to main - Version extracted from branch name (release/1.2.0 → 1.2.0) - Auto-creates git tag after successful build - Allow /build comments on release/* branches for QA testing - Update README with new release flow
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds CI/CD improvements to enhance code quality and automate releases with a proper QA testing flow.
Changes
1. SwiftLint Integration
.swiftlint.ymlconfigurationlintjob in testing workflow using Docker-based action on Ubuntuneeds: lint) - failures block the test jobnorio-nomura/action-swiftlint@3.2.1onubuntu-latestto avoid macOS 15/Xcode 26 crashes2. Release Workflow with QA Testing Flow
release/*branch is merged tomainrelease/1.2.0→1.2.0)release/*branches to/buildcommand for QA testingRelease Flow: