Setup the Kotlin™ cli compiler in GitHub Actions
This action downloads the Kotlin™ compiler and installs it to the path. It won't touch the installed JREs.
By default, the latest released version of Kotlin is installed.
This can be overriden via the version
flag.
It allows you to use the kotlinc
and the kotlin
tool to compile source code and run scripts.
⚠️ Note: You probably don't need this action. GitHub now pre-installs Kotlin, if this works for you, there is no need to use this action. See this issue for more details. Furthermore, you don't need this action if you want to build a Kotlin project using Maven/Gradle as they will download the compiler for you. This action is useful if you need or want to use thekotlin
/kotlinc
/kotlinc-native
cli tools, if you want to install a specific version of them or if you run workflows in a container/runner where Kotlin is not preinstalled.
See this repo for usage examples.
name: CI
on:
push:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: fwilhe2/setup-kotlin@main
- run: kotlinc myProgram.kt -include-runtime -d /tmp/hello.jar; java -jar /tmp/hello.jar
- run: kotlin myScript.main.kts
You can also build os-native binaries using kotlinc-native
as in this example:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
steps:
- uses: actions/checkout@v2
- uses: fwilhe2/setup-kotlin@main
with:
install-native: true
- run: kotlinc-native foo.kt
- run: ./program.exe
if: ${{ matrix.os == 'windows-latest' }}
- run: ./program.kexe
if: ${{ matrix.os != 'windows-latest' }}
If you provide a string-argument script
, the action will execute it via kotlin-main-kts
script definition jar, see this example:
- uses: fwilhe2/setup-kotlin@main
with:
script: |
#!/usr/bin/env kotlin
//more kotlin script code here
Starting with version 1.4.30
, you can configure kotlin
as a shell in Actions like in this example:
- uses: fwilhe2/setup-kotlin@main
with:
version: 2.0.21
- run: |
java.io.File(".").listFiles().forEach {it -> println(it.getName().toString())}
shell: kotlin -howtorun .main.kts {0}
See https://youtrack.jetbrains.com/issue/KT-43534 and actions/runner#813 for more details.
This software is not affiliated with or endorsed by the owner of the Kotlin trademark. The name is used to describe what this software does.
This software is released under the MIT License (MIT), see LICENSE for details.