Как запустить сценарий 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
Другие вопросы по тегам