如何在 GitHub Actions 上运行 Kotlin 脚本?

2024-05-03

我想在 CI 中运行 Kotlin 脚本而不依赖于 Gradle 项目,这样我就可以轻松地执行使用 shell/bash/batch 难以编程的操作,并且可以在需要时使用库。

让 Kotlin 脚本仅在 Ubuntu/Linux 上运行是可以的,但理想情况下,有一种方法可以使其在 Windows 和 macOS 目标以及特定于平台的项目上运行。


UPDATE:Kotlin 现在已预安装在 GitHub Actions 运行器上,不再需要预先安装。

首先,确保您有一个正确的 Kotlin 脚本,以结尾.kts, 或更好,.main.kts因为后者会被 IDE(例如 IntelliJ IDEA、Android Studio)更好地识别,特别是在自动完成和类型分析方面。

其次,确保其第一行是指向正确位置的 shebang:

#!/usr/bin/env kotlin

这有助于在 CI 中运行之前在本地测试脚本,因为 IDE 将在 shebang 旁边的装订线中显示一个运行按钮。 如果给文件添加执行权限(chmod +x YouScript.main.kts在 Linux/macOS 上),您还可以像任何其他脚本一样运行它,而无需键入kotlinc -script之前,这也适用于 GitHub Actions。

最后,这里有一个示例手册 GitHub Action(又名工作流程文件),它将接受输入并将其传递给您的 Kotlin 脚本(可在args安装 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 https://youtrack.jetbrains.com/issue/KT-43534#focus=Comments-27-4640716.0-0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 GitHub Actions 上运行 Kotlin 脚本? 的相关文章

随机推荐

  • Azure DevOps 扩展自定义 UI

    我的任务是开发 Azure DevOps 的扩展以自动化构建过程 自定义构建任务 需要注意的是 实际上我正在开发的是一系列构建任务 每个任务都包含常规输入 但由于历史原因 所有这些构建任务都应该分组 用户可以从管道设置中任务页面的下拉列表中
  • wpf 调试错误输出 System.WIndows.Data 错误 25

    我有一个自定义样式的组合框 效果很好 它被放置在用户控件内并绑定到数据结构 我使用 DisplayMemberPath 仅显示组合框文本框中的一个元素 ComboBox 样式取自 MSDN 并被多次使用 所以这里就不显示了
  • Python Suds URLError 名称或服务未知问题

    有一个奇怪的问题 我可以成功创建一个 suds 客户端并将其打印出来 gt gt gt client Client the wsdl url gt gt gt print client Suds https fedorahosted org
  • Node2vec 的工作原理

    我一直在读关于node2vec https cs stanford edu jure pubs node2vec kdd16 pdf嵌入算法 我有点困惑它是如何工作的 作为参考 node2vec 由 p 和 q 参数化 并通过模拟来自节点的
  • C#:如何在虚拟模式下有效过滤(隐藏)ListView 项目?

    C 如何在虚拟模式下有效过滤 隐藏 ListView 项目 我正在寻找一种在虚拟模式下过滤 隐藏 显示 ListView 中的项目的方法 我将我的项目缓存在列表视图项目数组中 如何有效地使其在按下过滤按钮时仅显示特定的列表视图项目 然后在按
  • 使用多个列组重塑 Pandas Dataframe

    我目前有一个宽数据框 如下所示 Index ID1 ID2 Foc A Foc B Foc C Sat A Sat B Sat C 0 r 1 10 15 17 100 105 107 1 r 2 20 25 27 110 115 117
  • 为什么GCC不报告未初始化的变量?

    include
  • 单例模式面试

    我最近在一次采访中被问到与java相关的问题 代码如下 因为我对java非常陌生 几乎没有用Java编写代码 所以我真的不知道下面的代码是做什么的 问题是 使用以下代码选择描述最糟糕情况的选项 public class Bolton pri
  • java.lang.IllegalStateException:密码未初始化

    我已经在 Android 应用程序中实现了加密 解密 我添加了一个加密类 该类已成为单例类 部分代码如下 public class Encryption private SecretKeySpec mKey null private Cip
  • 获取当前 URL/URI,不带某些 $_GET 变量

    在 Yii 中如何获取当前页面的 URL 例如 http www yoursite com your yii application lg pl id 15 但不包括 GET lg 无需手动解析字符串 我的意思是 我正在寻找类似的东西Yii
  • android:应用内计费:错误响应:7:项目已拥有

    我正在学习为我的应用程序实现应用程序内计费 以便人们可以在按下捐赠按钮时捐赠美元 用户可以多次捐赠 即购买的是消耗品 下面的代码来自 TrivalDrive 示例和网上的一些教程 Code IabHelper mHelper static
  • 如何使用jq通配符

    我有以下 json details car bmw addresses ext 118 21 8 0 29 version 4 addr 89 Psr version 6 addr 56 apT The key ext 118 21 8 0
  • 应用程序从最近的应用程序列表中滑出后,Android 服务崩溃

    我有一项由活动启动 未绑定 的服务 如果活动被破坏 例如按后退按钮 服务将继续运行 这当然是有意的 但是 如果我将活动从 最近的应用程序 列表中删除 该服务将立即重新启动 这是可重现的 每次活动 应用程序从列表中滑出时 都会对服务的 onC
  • 在哪里使用引号?

    CSS 中应在何处以及如何使用引号 width 150px or width 150px height 50 or height 50 font family Verdana or font family Verdana 仅当属性值中包含空
  • 与 .Net 中的 IIS SMTP 服务器进行有意义的交互

    我们的公司每周都会向大量订阅者发送新闻通讯 当公司还很年轻时 在我加入之前 他们使用了一些群发邮件程序的 免费 版本 花了六个小时才发送 5K 封邮件 并且违反了互联网上的每一次反向 DNS 检查 我将其升级为定制的 Net 小部件 该小部
  • PostSharp AssemblyLoadException Autofac

    我正在设置一个新的解决方案 我想在其中使用最新的 Autofac 3 4 和 PostSharp 3 1 42 引用 NuGet 包后 出现以下错误 并且我无法弄清楚发生了什么 我从未选择 Autofac 3 3 0 包 包 config
  • Rails 是否支持侦听 UDP 套接字的简洁方式?

    在 Rails 中 集成更新模型某些元素的 UDP 侦听过程的最佳方式是什么 特别是向其中一个表添加行 简单的答案似乎是在同一进程中使用 UDP 套接字对象启动一个线程 但不清楚我应该在哪里执行适合 Rails 方式的操作 有没有一种巧妙的
  • 制作单行带有水平滚动条的 div

    好吧 我想我已经使用空白修复了这个问题 无换行 它在 Chrome 中工作 但在其他方面不起作用 我有这样的事情 div class outer ul li div class inner a href img src eg1 jpg a
  • 带有引用数组的 Mongoose 模型架构:CastError:值“[object Object]”转换为 ObjectId 失败

    我用express js 和mongoosejs 构建了一个博客网站 一篇文章可能有一个或多个类别 当我创建新文章时 出现错误 CastError Cast to ObjectId failed for value object Objec
  • 如何在 GitHub Actions 上运行 Kotlin 脚本?

    我想在 CI 中运行 Kotlin 脚本而不依赖于 Gradle 项目 这样我就可以轻松地执行使用 shell bash batch 难以编程的操作 并且可以在需要时使用库 让 Kotlin 脚本仅在 Ubuntu Linux 上运行是可以