如何在 GitHub 操作上 运行 Kotlin 脚本?
How to run a Kotlin script on GitHub Actions?
我想 运行 在 CI 中使用 Kotlin 脚本而不依赖 Gradle 项目,这样我就可以轻松地完成使用 shell/bash/batch 难以编程的操作,这样我就可以在需要时使用库。
仅在 Ubuntu/Linux 上使用 Kotlin 脚本 运行 很好,但理想情况下,有一种方法可以在 Windows 和 macOS 目标上使其成为 运行平台特定项目。
更新: Kotlin 现已预装在 GitHub Actions 运行 用户上,无需再预先安装。
首先,确保你有一个正确的 Kotlin 脚本,以 .kts
结尾,或者更好,.main.kts
因为后者会被 IDE 更好地识别(例如 IntelliJ IDEA,Android Studio),尤其是涉及到自动完成和类型分析时。
其次,确保它的第一行是指向正确位置的 shebang:
#!/usr/bin/env kotlin
这将有助于在 CI 中 运行 之前在本地测试脚本,因为 IDE 将在装订线中显示一个 运行 按钮,旁边shebang。
如果您向文件添加执行权限(Linux/macOS 上的 chmod +x YouScript.main.kts
),您还可以 运行 它就像任何其他脚本一样,而无需键入 kotlinc -script
之前,这也适用于 GitHub 操作。
最后,这是一个示例手册 GitHub 操作(又名。工作流文件),它将接受输入并将其传递给您的 Kotlin 脚本(可在 args
property/parameter 中使用)安装 Kotlin 后:
name: Run Kotlin script
on:
workflow_dispatch:
inputs:
awesome-input:
description: 'Awesome parameter'
default: 'You'
required: true
jobs:
awesome-action:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Kotlin script
run: kotlinc -script ./YourScript.main.kts ${{ github.event.inputs.awesome-input }}
请注意,如果脚本具有执行 (x
) 权限,如我之前所说,您可以删除 kotlinc -script
部分,它仍然会 运行.
好处:通过将 kotlin 用作 shell,可以在工作流文件中直接包含 Kotlin 代码(尽管我不建议这样做)。
请参阅此 YouTrack 评论以了解操作方法:https://youtrack.jetbrains.com/issue/KT-43534#focus=Comments-27-4640716.0-0
Kotlin 运行ner 现已预安装在 GitHub Actions 环境 (GitHub issue, YouTube video) 上。
参考GitHub Actions virtual environments page查看所有安装的软件。
因此,您可以轻松地 运行 您的 .main.kts 脚本,如下所示:
name: Example
on:
push:
branches:
- master
jobs:
example-action:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run the script
run: kotlin /path/in/repo/to/my-script.main.kts
这是一个示例 我的脚本。main.kts 文件:
@file:JvmName("MyScript")
@file:CompilerOptions("-jvm-target", "11")
@file:Repository("https://repo.maven.apache.org/maven2")
// @file:DependsOn("com.example:library:1.2.3")
import java.io.File
val input = File("README.md") // Assuming you ran checkout before
val output = File("result.txt")
val readmeFirstLine = input.readLines().first()
output.writeText(readmeFirstLine)
还有一个名为 setup-kotlin that lets you install your desired version of Kotlin and also provides some more features. Check out this issue 的 GitHub 操作。
...
- uses: actions/checkout@v2
- uses: fwilhe2/setup-kotlin@main
with:
version: 1.5.0
- name: Run the script
run: kotlin /path/in/repo/to/my-script.main.kts
我想 运行 在 CI 中使用 Kotlin 脚本而不依赖 Gradle 项目,这样我就可以轻松地完成使用 shell/bash/batch 难以编程的操作,这样我就可以在需要时使用库。
仅在 Ubuntu/Linux 上使用 Kotlin 脚本 运行 很好,但理想情况下,有一种方法可以在 Windows 和 macOS 目标上使其成为 运行平台特定项目。
更新: Kotlin 现已预装在 GitHub Actions 运行 用户上,无需再预先安装。
首先,确保你有一个正确的 Kotlin 脚本,以 .kts
结尾,或者更好,.main.kts
因为后者会被 IDE 更好地识别(例如 IntelliJ IDEA,Android Studio),尤其是涉及到自动完成和类型分析时。
其次,确保它的第一行是指向正确位置的 shebang:
#!/usr/bin/env kotlin
这将有助于在 CI 中 运行 之前在本地测试脚本,因为 IDE 将在装订线中显示一个 运行 按钮,旁边shebang。
如果您向文件添加执行权限(Linux/macOS 上的 chmod +x YouScript.main.kts
),您还可以 运行 它就像任何其他脚本一样,而无需键入 kotlinc -script
之前,这也适用于 GitHub 操作。
最后,这是一个示例手册 GitHub 操作(又名。工作流文件),它将接受输入并将其传递给您的 Kotlin 脚本(可在 args
property/parameter 中使用)安装 Kotlin 后:
name: Run Kotlin script
on:
workflow_dispatch:
inputs:
awesome-input:
description: 'Awesome parameter'
default: 'You'
required: true
jobs:
awesome-action:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Kotlin script
run: kotlinc -script ./YourScript.main.kts ${{ github.event.inputs.awesome-input }}
请注意,如果脚本具有执行 (x
) 权限,如我之前所说,您可以删除 kotlinc -script
部分,它仍然会 运行.
好处:通过将 kotlin 用作 shell,可以在工作流文件中直接包含 Kotlin 代码(尽管我不建议这样做)。 请参阅此 YouTrack 评论以了解操作方法:https://youtrack.jetbrains.com/issue/KT-43534#focus=Comments-27-4640716.0-0
Kotlin 运行ner 现已预安装在 GitHub Actions 环境 (GitHub issue, YouTube video) 上。
参考GitHub Actions virtual environments page查看所有安装的软件。
因此,您可以轻松地 运行 您的 .main.kts 脚本,如下所示:
name: Example
on:
push:
branches:
- master
jobs:
example-action:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run the script
run: kotlin /path/in/repo/to/my-script.main.kts
这是一个示例 我的脚本。main.kts 文件:
@file:JvmName("MyScript")
@file:CompilerOptions("-jvm-target", "11")
@file:Repository("https://repo.maven.apache.org/maven2")
// @file:DependsOn("com.example:library:1.2.3")
import java.io.File
val input = File("README.md") // Assuming you ran checkout before
val output = File("result.txt")
val readmeFirstLine = input.readLines().first()
output.writeText(readmeFirstLine)
还有一个名为 setup-kotlin that lets you install your desired version of Kotlin and also provides some more features. Check out this issue 的 GitHub 操作。
...
- uses: actions/checkout@v2
- uses: fwilhe2/setup-kotlin@main
with:
version: 1.5.0
- name: Run the script
run: kotlin /path/in/repo/to/my-script.main.kts