Skip to content

Commit

Permalink
fix: github actions build (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
aallam authored Mar 14, 2022
1 parent a895923 commit bcf0c46
Show file tree
Hide file tree
Showing 20 changed files with 160 additions and 80 deletions.
2 changes: 2 additions & 0 deletions .github/semantic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Always validate the PR title, and ignore the commits
titleOnly: true
66 changes: 66 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Build

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

env:
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false"

concurrency:
group: ${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1

- name: Configure JDK
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: 11

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-version: wrapper

- name: Run lint
run: ./gradlew spotlessCheck

build:
name: Test
runs-on: macos-11
needs: lint
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1

- name: Configure JDK
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: 11

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-version: wrapper

- name: Build
run: ./gradlew :openai-client:{jvmTest,jsTest,macosX64Test}
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
28 changes: 0 additions & 28 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,36 +7,9 @@ env:
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false"

jobs:
all-platforms:
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ macos-11, ubuntu-latest, windows-latest ]

steps:
- name: Checkout
uses: actions/checkout@v2

- name: Configure JDK
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: 11

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-version: wrapper

- name: Build
run: ./gradlew build

publish:
name: Publish Unix to Sonatype
runs-on: macos-11
needs: all-platforms
steps:
- name: Checkout
uses: actions/checkout@v2
Expand Down Expand Up @@ -64,7 +37,6 @@ jobs:
publish-mingw:
name: Publish MinGW to Sonatype
runs-on: windows-latest
needs: all-platforms
steps:
- name: Checkout
uses: actions/checkout@v2
Expand Down
16 changes: 16 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import com.diffplug.gradle.spotless.SpotlessExtension
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent.*
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
Expand All @@ -12,12 +13,15 @@ buildscript {
classpath(kotlin("serialization", version = kotlinVersion))
classpath("com.vanniktech:gradle-maven-publish-plugin:0.18.0")
classpath("org.jetbrains.kotlinx:binary-compatibility-validator:0.8.0")
classpath("com.diffplug.spotless:spotless-plugin-gradle:6.3.0")
}
}

allprojects {
repositories {
mavenCentral()
maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
maven { url = uri("https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/") }
}

tasks.withType<KotlinCompile>().configureEach {
Expand All @@ -33,4 +37,16 @@ allprojects {
showStandardStreams = false
}
}

afterEvaluate {
if (plugins.hasPlugin("com.diffplug.spotless")) {
configure<SpotlessExtension> {
kotlin {
target("**/*.kt")
trimTrailingWhitespace()
endWithNewline()
}
}
}
}
}
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ kotlin.mpp.stability.nowarn=true
kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.mpp.enableCompatibilityMetadataVariant=true
kotlin.native.enableDependencyPropagation=false
kotlin.native.binary.memoryModel=experimental

# Lib
GROUP=com.aallam.openai
Expand Down
4 changes: 2 additions & 2 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[versions]
coroutines = "1.6.0-native-mt"
serialization = "1.3.1"
ktor = "2.0.0-beta-1"
serialization = "1.3.2"
ktor = "2.0.0-eap-327"
okio = "3.0.0"
logback = "1.2.3"

Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
1 change: 1 addition & 0 deletions openai-client/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ plugins {
kotlin("plugin.serialization")
id("com.vanniktech.maven.publish")
id("binary-compatibility-validator")
id("com.diffplug.spotless")
id("build-support")
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.aallam.openai.client

import com.aallam.openai.api.engine.*
import com.aallam.openai.api.engine.Engine
import com.aallam.openai.api.engine.EngineId


/**
* OpenAI’s API provides access to several different engines - [Ada], [Babbage], [Curie] and [Davinci].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,17 @@ package com.aallam.openai.client.internal
import com.aallam.openai.client.OpenAIConfig
import com.aallam.openai.client.internal.extension.toKtorLogLevel
import com.aallam.openai.client.internal.extension.toKtorLogger
import io.ktor.client.*
import io.ktor.client.plugins.*
import io.ktor.client.plugins.auth.*
import io.ktor.client.plugins.auth.providers.*
import io.ktor.client.plugins.logging.*
import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.serialization.kotlinx.*
import io.ktor.client.HttpClient
import io.ktor.client.plugins.auth.Auth
import io.ktor.client.plugins.auth.providers.BearerTokens
import io.ktor.client.plugins.auth.providers.bearer
import io.ktor.client.plugins.contentnegotiation.ContentNegotiation
import io.ktor.client.plugins.defaultRequest
import io.ktor.client.plugins.logging.Logging
import io.ktor.client.request.accept
import io.ktor.http.ContentType
import io.ktor.http.URLProtocol
import io.ktor.serialization.kotlinx.KotlinxSerializationConverter
import kotlinx.serialization.json.Json

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ import com.aallam.openai.api.ExperimentalOpenAI
import com.aallam.openai.api.answer.Answer
import com.aallam.openai.api.answer.AnswerRequest
import com.aallam.openai.client.Answers
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.request.url
import io.ktor.http.ContentType
import io.ktor.http.contentType

/**
* Implementation of [Answers].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ import com.aallam.openai.api.ExperimentalOpenAI
import com.aallam.openai.api.classification.Classification
import com.aallam.openai.api.classification.ClassificationRequest
import com.aallam.openai.client.Classifications
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.request.url
import io.ktor.http.ContentType
import io.ktor.http.contentType

/**
* Implementation of [Classifications].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@ import com.aallam.openai.client.Completions
import com.aallam.openai.client.internal.JsonLenient
import com.aallam.openai.client.internal.api.EnginesApi.Companion.EnginesPath
import com.aallam.openai.client.internal.extension.toStreamRequest
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import io.ktor.client.utils.*
import io.ktor.client.utils.EmptyContent.contentType
import io.ktor.http.*
import io.ktor.utils.io.*
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.request.url
import io.ktor.client.statement.HttpResponse
import io.ktor.client.utils.EmptyContent
import io.ktor.http.ContentType
import io.ktor.http.contentType
import io.ktor.utils.io.ByteReadChannel
import io.ktor.utils.io.readUTF8Line
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import kotlinx.serialization.decodeFromString
Expand Down Expand Up @@ -56,4 +59,4 @@ internal class CompletionsApi(private val httpClient: HttpClient) : Completions
private const val StreamPrefix = "data:"
private const val StreamEndToken = "$StreamPrefix [DONE]"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import com.aallam.openai.api.engine.Engine
import com.aallam.openai.api.engine.EngineId
import com.aallam.openai.api.engine.EnginesResponse
import com.aallam.openai.client.Engines
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.get
import io.ktor.client.request.url

/**
* Implementation of [Engines].
Expand All @@ -24,4 +25,4 @@ internal class EnginesApi(private val httpClient: HttpClient) : Engines {
companion object {
const val EnginesPath = "/v1/engines"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,18 @@ import com.aallam.openai.api.file.FileId
import com.aallam.openai.api.file.FileRequest
import com.aallam.openai.api.file.FileResponse
import com.aallam.openai.client.Files
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.plugins.*
import io.ktor.client.request.*
import io.ktor.client.request.forms.*
import io.ktor.http.*
import io.ktor.http.content.*
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.delete
import io.ktor.client.request.forms.FormBuilder
import io.ktor.client.request.forms.append
import io.ktor.client.request.forms.formData
import io.ktor.client.request.forms.submitFormWithBinaryData
import io.ktor.client.request.get
import io.ktor.client.request.url
import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode
import io.ktor.http.content.PartData
import okio.FileSystem
import okio.Path.Companion.toPath

Expand All @@ -36,12 +41,8 @@ internal class FilesApi(
}

override suspend fun file(fileId: FileId): File? {
return try {
httpClient.get { url(path = "$FilesPath/$fileId") }.body()
} catch (exception: ClientRequestException) {
if (exception.response.status == HttpStatusCode.NotFound) return null
throw exception
}
val response = httpClient.get { url(path = "$FilesPath/$fileId") }
return if (response.status == HttpStatusCode.NotFound) null else response.body()
}

override suspend fun delete(fileId: FileId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@ import com.aallam.openai.api.search.SearchResponse
import com.aallam.openai.api.search.SearchResult
import com.aallam.openai.client.Searches
import com.aallam.openai.client.internal.api.EnginesApi.Companion.EnginesPath
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.request.*
import io.ktor.http.*
import io.ktor.client.HttpClient
import io.ktor.client.call.body
import io.ktor.client.request.post
import io.ktor.client.request.setBody
import io.ktor.client.request.url
import io.ktor.http.ContentType
import io.ktor.http.contentType

/**
* Implementation of [Searches].
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package com.aallam.openai.client.internal.extension

import com.aallam.openai.api.logging.LogLevel
import com.aallam.openai.api.logging.Logger
import io.ktor.client.plugins.logging.*
import io.ktor.client.plugins.logging.DEFAULT
import io.ktor.client.plugins.logging.EMPTY
import io.ktor.client.plugins.logging.SIMPLE
import io.ktor.client.plugins.logging.LogLevel as KLogLevel
import io.ktor.client.plugins.logging.Logger as KLogger

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,7 @@ class TestOpenAI {
runTest {
val response = openAI.files()
assertNotNull(response)
assertTrue(response.isNotEmpty())
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@ package com.aallam.openai.client.internal
internal actual fun env(name: String): String? {
return js("process.env[name]").unsafeCast<String?>()
}

Loading

0 comments on commit bcf0c46

Please sign in to comment.