Как запустить сценарий Kotlin на GitHub Actions?
Я хочу запускать сценарии Kotlin в CI, не полагаясь на проект Gradle, поэтому я могу легко выполнять операции, которые было бы сложно запрограммировать с помощью оболочки /bash/batch, и чтобы при необходимости я мог использовать библиотеки.
Запуск сценария Kotlin только на Ubuntu/Linux - это нормально, хотя в идеале есть способ запустить его на целевых компьютерах Windows и macOS, а также для проектов, специфичных для платформы.
2 ответа
TL;DR: важная команда, которую нужно запустить в вашем скрипте перед попыткой запустить ваш скрипт Kotlin, следующая:
sudo snap install --classic kotlin
Во-первых, убедитесь, что у вас есть правильный сценарий Kotlin, заканчивающийся на
.kts
, или лучше,
.main.kts
поскольку последний будет лучше распознаваться IDE (например, IntelliJ IDEA, Android Studio), особенно когда дело доходит до автозаполнения и анализа типов.
Во-вторых, убедитесь, что его первая строка - это шебанг, указывающий в нужное место:
#!/usr/bin/env kotlin
Это будет полезно для локального тестирования сценария перед запуском в CI, так как IDE покажет кнопку запуска в желобе рядом с shebang. Если вы добавите разрешение на выполнение к файлу (
chmod +x YouScript.main.kts
в Linux / macOS), вы также сможете запускать его, как любой другой скрипт, без необходимости вводить текст раньше, и это также будет применяться к действиям GitHub.
Наконец, вот пример ручного действия 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: Install Kotlin
run: sudo snap install --classic kotlin
- name: Run Kotlin script
run: kotlinc -script ./YourScript.main.kts ${{ github.event.inputs.awesome-input }}
Команда, используемая для установки Kotlin как пакета span, взята с официального сайта Kotlin: https://kotlinlang.org/docs/command-line.html#snap-package
Обратите внимание, что если в сценарии есть команда execute (
x
) разрешение, как я уже говорил ранее, вы можете удалить
kotlinc -script
часть, и он все равно будет работать.
Kotlin теперь предустановлен в средах действий GitHub (проблема GitHub (от вас!), Объявление на YouTube ).
Итак, вы можете легко запускать свои скрипты .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
а вот пример my-script.main.kts :
@file:JvmName("MyScript")
@file:CompilerOptions("-jvm-target", "11")
@file:Repository("https://repo.maven.apache.org/maven2")
@file:Repository("https://jcenter.bintray.com")
@file:Repository("https://jitpack.io")
// @file:DependsOn("com.example:library:1.2.3")
import java.io.File
val inputFile = File("README.md") // Assuming you ran checkout before
val outputFile = File("result.txt")
val readmeFirstLine = inputFile.readLines().first()
outputFile.writeText(readmeFirstLine)
Существует также действие GitHub, называемое setup-kotlin, которое позволяет вам установить желаемую версию Kotlin, а также предоставляет некоторые дополнительные функции. Ознакомьтесь с этим выпуском .
...
- uses: actions/checkout@v2
- uses: fwilhe2/setup-kotlin@main
with:
version: 1.5.0
- name: Run the script
run: kotlin scripts/generate-github-changelog.main.kts