Skip to content

feat(container): add Swift and Kotlin language ecosystem support#19

Merged
matthew-on-git merged 7 commits intomainfrom
fix/pin-trivy-action-sha
Mar 25, 2026
Merged

feat(container): add Swift and Kotlin language ecosystem support#19
matthew-on-git merged 7 commits intomainfrom
fix/pin-trivy-action-sha

Conversation

@matthew-on-git
Copy link
Copy Markdown
Contributor

Summary

  • Add Swift toolchain support: SwiftLint (v0.58.0), swift-format (v601.0.0), swift test via SPM
  • Add Kotlin toolchain support: ktlint (v1.5.0), detekt-cli (v1.23.7), Gradle (v8.12), JDK 21
  • New Dockerfile builder stages: swift:6.1-slim-bookworm, eclipse-temurin:21-jdk-bookworm
  • Full Makefile target support (lint, format, fix, test, security) for both languages
  • Install scripts and verification test scripts for both languages

Test plan

  • Build container locally: docker build -t dev-toolchain:test .
  • Verify Swift tools: docker run --rm dev-toolchain:test bash tests/test-swift.sh
  • Verify Kotlin tools: docker run --rm dev-toolchain:test bash tests/test-kotlin.sh
  • Test with a Swift SPM project: add swift to .devrail.yml, run make check
  • Test with a Kotlin Gradle project: add kotlin to .devrail.yml, run make check

🤖 Generated with Claude Code

matthew-on-git and others added 7 commits March 23, 2026 10:24
All trivy-action tags before 0.35.0 were force-pushed to malicious
commits during March 19-20 2026 (aquasecurity/trivy-action#541).
Pin to SHA 57a97c7 (v0.35.0) which was not compromised.

Our CI runs on March 19 completed at ~04:58 UTC, before the attack
window (~17:43 UTC), so no secrets were exposed. This is a preventive
fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add Swift toolchain (SwiftLint, swift-format, swift test) and Kotlin
toolchain (ktlint, detekt, Gradle, JDK 21) to the dev-toolchain
container with full Makefile target support for lint, format, fix,
test, and security.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…scripts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ookworm)

eclipse-temurin images are Ubuntu-based; the bookworm variant does not
exist. Using the default 21-jdk tag since we only COPY the JDK directory.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…riant)

Swift official images do not have a -slim variant. Use swift:6.1-bookworm
as the builder stage.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
swift-format has no pre-built Linux binaries on GitHub releases.
Build from source (v602.0.0) in the swift-builder stage and COPY
the binary to runtime, matching the pattern used for Go tools.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@matthew-on-git matthew-on-git merged commit 200c0e8 into main Mar 25, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant