From 7aae28c09fc52f67d18babb0238dc8a4d397c2ad Mon Sep 17 00:00:00 2001 From: Stefan M Date: Thu, 1 Sep 2022 16:27:11 +0200 Subject: [PATCH] Use GitHub Actions Artifacts to store snapshots instead of S3 (#2630) * Use GitHub Actions Artifacts for snapshots * Delete s3-cleanup.yml * Fix trigger event * Fix path * Fix path again * Maybe this path is better * Restore env variable to save output to a known place * Add retention days * Replace stdlib with coroutines * Replace S3Project with TestOutputCopier * Restore S3 upload * Change job name * Fix imports * Add TestOutputCopier to SdtlibIntegrationTest * Save stdlib on S3 again * Rename env variable * Increase rentention-days * Remove .kt as filter for test * Fix skiping copying message * Update Gradle and Kotlin version --- .../gh-actions-artifacts-snapshots.yml | 83 +++++++++++++++++++ .github/workflows/s3-snapshots.yml | 35 +++++++- .../kotlin/CoroutinesGradleIntegrationTest.kt | 8 +- .../SerializationGradleIntegrationTest.kt | 4 +- .../kotlin/StdlibGradleIntegrationTest.kt | 4 +- .../dokka/it/maven/BiojavaIntegrationTest.kt | 2 +- .../it/{S3Project.kt => TestOutputCopier.kt} | 6 +- 7 files changed, 127 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/gh-actions-artifacts-snapshots.yml rename integration-tests/src/main/kotlin/org/jetbrains/dokka/it/{S3Project.kt => TestOutputCopier.kt} (59%) diff --git a/.github/workflows/gh-actions-artifacts-snapshots.yml b/.github/workflows/gh-actions-artifacts-snapshots.yml new file mode 100644 index 0000000000..3bac4340a7 --- /dev/null +++ b/.github/workflows/gh-actions-artifacts-snapshots.yml @@ -0,0 +1,83 @@ +name: Build example projects and publish them to GitHub Actions Artifacts + +on: + pull_request: + push: + branches: + - master + +jobs: + coroutines: + runs-on: ubuntu-latest + if: github.repository == 'Kotlin/dokka' + steps: + - name: Checkout dokka + uses: actions/checkout@v3 + with: + submodules: true + - uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 12 + - name: Document coroutines + uses: gradle/gradle-build-action@v2 + with: + arguments: :integration-tests:gradle:integrationTest --tests org.jetbrains.dokka.it.gradle.kotlin.CoroutinesGradleIntegrationTest --stacktrace + env: + DOKKA_TEST_OUTPUT_PATH: /home/runner/work/dokka/coroutines + - name: Copy files to GitHub Actions Artifacts + uses: actions/upload-artifact@v3 + with: + name: dokka-coroutines + path: /home/runner/work/dokka/coroutines + retention-days: 7 + + serialization: + runs-on: ubuntu-latest + if: github.repository == 'Kotlin/dokka' + steps: + - name: Checkout dokka + uses: actions/checkout@v3 + with: + submodules: true + - uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 12 + - name: Document serialization + uses: gradle/gradle-build-action@v2 + with: + arguments: :integration-tests:gradle:integrationTest --tests org.jetbrains.dokka.it.gradle.kotlin.SerializationGradleIntegrationTest --stacktrace + env: + DOKKA_TEST_OUTPUT_PATH: /home/runner/work/dokka/serialization + - name: Copy files to GitHub Actions Artifacts + uses: actions/upload-artifact@v3 + with: + name: dokka-serialization + path: /home/runner/work/dokka/serialization + retention-days: 7 + + biojava: + runs-on: ubuntu-latest + if: github.repository == 'Kotlin/dokka' + steps: + - name: Checkout dokka + uses: actions/checkout@v3 + with: + submodules: true + - uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 12 + - name: Document biojava-core + uses: gradle/gradle-build-action@v2 + with: + arguments: :integration-tests:maven:integrationTest --tests org.jetbrains.dokka.it.maven.BiojavaIntegrationTest --stacktrace + env: + DOKKA_TEST_OUTPUT_PATH: /home/runner/work/dokka/biojava + - name: Copy files to GitHub Actions Artifacts + uses: actions/upload-artifact@v3 + with: + name: dokka-biojava + path: /home/runner/work/dokka/biojava + retention-days: 7 diff --git a/.github/workflows/s3-snapshots.yml b/.github/workflows/s3-snapshots.yml index 2e84050ff8..fdfb34608b 100644 --- a/.github/workflows/s3-snapshots.yml +++ b/.github/workflows/s3-snapshots.yml @@ -24,7 +24,7 @@ jobs: with: arguments: :integration-tests:gradle:integrationTest --tests org.jetbrains.dokka.it.gradle.kotlin.StdlibGradleIntegrationTest --stacktrace env: - DOKKA_IT_AWS_PATH: /home/runner/work/dokka/stdlib + DOKKA_TEST_OUTPUT_PATH: /home/runner/work/dokka/stdlib - name: Configure AWS credentials for S3 access uses: aws-actions/configure-aws-credentials@v1 with: @@ -36,6 +36,35 @@ jobs: - name: Print link run: echo https://dokka-snapshots.s3.eu-central-1.amazonaws.com/${{ env.branch-name }}/stdlib/${GITHUB_SHA::7}/index.html + coroutines: + runs-on: ubuntu-latest + if: github.repository == 'Kotlin/dokka' + steps: + - name: Checkout dokka + uses: actions/checkout@v3 + with: + submodules: true + - uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 12 + - name: Document coroutines + uses: gradle/gradle-build-action@v2 + with: + arguments: :integration-tests:gradle:integrationTest --tests org.jetbrains.dokka.it.gradle.kotlin.CoroutinesGradleIntegrationTest --stacktrace + env: + DOKKA_TEST_OUTPUT_PATH: /home/runner/work/dokka/coroutines + - name: Configure AWS credentials for S3 access + uses: aws-actions/configure-aws-credentials@v1 + with: + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: eu-central-1 + - name: Copy files to dokka's S3 bucket + run: ./integration-tests/aws_sync.sh s3://${{ env.bucket-name }} coroutines ../coroutines + - name: Print link + run: echo https://dokka-snapshots.s3.eu-central-1.amazonaws.com/${{ env.branch-name }}/coroutines/${GITHUB_SHA::7}/index.html + serialization: runs-on: ubuntu-latest if: github.repository == 'Kotlin/dokka' @@ -53,7 +82,7 @@ jobs: with: arguments: :integration-tests:gradle:integrationTest --tests org.jetbrains.dokka.it.gradle.kotlin.SerializationGradleIntegrationTest --stacktrace env: - DOKKA_IT_AWS_PATH: /home/runner/work/dokka/serialization + DOKKA_TEST_OUTPUT_PATH: /home/runner/work/dokka/serialization - name: Configure AWS credentials for S3 access uses: aws-actions/configure-aws-credentials@v1 with: @@ -82,7 +111,7 @@ jobs: with: arguments: :integration-tests:maven:integrationTest --tests org.jetbrains.dokka.it.maven.BiojavaIntegrationTest --stacktrace env: - DOKKA_IT_AWS_PATH: /home/runner/work/dokka/biojava + DOKKA_TEST_OUTPUT_PATH: /home/runner/work/dokka/biojava - name: Configure AWS credentials for S3 access uses: aws-actions/configure-aws-credentials@v1 with: diff --git a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/CoroutinesGradleIntegrationTest.kt b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/CoroutinesGradleIntegrationTest.kt index 5a300767a4..099046b024 100644 --- a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/CoroutinesGradleIntegrationTest.kt +++ b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/CoroutinesGradleIntegrationTest.kt @@ -1,7 +1,7 @@ package org.jetbrains.dokka.it.gradle.kotlin import org.gradle.testkit.runner.TaskOutcome -import org.jetbrains.dokka.it.S3Project +import org.jetbrains.dokka.it.TestOutputCopier import org.jetbrains.dokka.it.copyAndApplyGitDiff import org.jetbrains.dokka.it.gradle.* import org.junit.runners.Parameterized @@ -9,14 +9,14 @@ import java.io.File import kotlin.test.* class CoroutinesGradleIntegrationTest(override val versions: BuildVersions) : AbstractGradleIntegrationTest(), - S3Project { + TestOutputCopier { companion object { @get:JvmStatic @get:Parameterized.Parameters(name = "{0}") val versions = BuildVersions.permutations( - gradleVersions = listOf("6.8.3"), - kotlinVersions = listOf("1.6.0") + gradleVersions = listOf("6.9.1"), + kotlinVersions = listOf("1.6.10") ) } diff --git a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/SerializationGradleIntegrationTest.kt b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/SerializationGradleIntegrationTest.kt index 465231f1a6..c05e80e6fd 100644 --- a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/SerializationGradleIntegrationTest.kt +++ b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/SerializationGradleIntegrationTest.kt @@ -1,7 +1,7 @@ package org.jetbrains.dokka.it.gradle.kotlin import org.gradle.testkit.runner.TaskOutcome -import org.jetbrains.dokka.it.S3Project +import org.jetbrains.dokka.it.TestOutputCopier import org.jetbrains.dokka.it.copyAndApplyGitDiff import org.jetbrains.dokka.it.gradle.* import org.junit.runners.Parameterized @@ -9,7 +9,7 @@ import java.io.File import kotlin.test.* class SerializationGradleIntegrationTest(override val versions: BuildVersions) : AbstractGradleIntegrationTest(), - S3Project { + TestOutputCopier { companion object { @get:JvmStatic diff --git a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/StdlibGradleIntegrationTest.kt b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/StdlibGradleIntegrationTest.kt index ba51a1ceb8..84178fe8ef 100644 --- a/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/StdlibGradleIntegrationTest.kt +++ b/integration-tests/gradle/src/integrationTest/kotlin/org/jetbrains/dokka/it/gradle/kotlin/StdlibGradleIntegrationTest.kt @@ -1,7 +1,7 @@ package org.jetbrains.dokka.it.gradle.kotlin import org.gradle.testkit.runner.TaskOutcome -import org.jetbrains.dokka.it.S3Project +import org.jetbrains.dokka.it.TestOutputCopier import org.jetbrains.dokka.it.copyAndApplyGitDiff import org.jetbrains.dokka.it.gradle.AbstractGradleIntegrationTest import org.jetbrains.dokka.it.gradle.BuildVersions @@ -10,7 +10,7 @@ import java.io.File import kotlin.test.* class StdlibGradleIntegrationTest(override val versions: BuildVersions) : AbstractGradleIntegrationTest(), - S3Project { + TestOutputCopier { companion object { @get:JvmStatic diff --git a/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt b/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt index 4037cc08a1..bf5148ef74 100644 --- a/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt +++ b/integration-tests/maven/src/integrationTest/kotlin/org/jetbrains/dokka/it/maven/BiojavaIntegrationTest.kt @@ -7,7 +7,7 @@ import kotlin.test.Test import kotlin.test.assertEquals import kotlin.test.assertTrue -class BiojavaIntegrationTest : AbstractIntegrationTest(), S3Project { +class BiojavaIntegrationTest : AbstractIntegrationTest(), TestOutputCopier { private val currentDokkaVersion: String = checkNotNull(System.getenv("DOKKA_VERSION")) private val mavenBinaryFile: File = File(checkNotNull(System.getenv("MVN_BINARY_PATH"))) diff --git a/integration-tests/src/main/kotlin/org/jetbrains/dokka/it/S3Project.kt b/integration-tests/src/main/kotlin/org/jetbrains/dokka/it/TestOutputCopier.kt similarity index 59% rename from integration-tests/src/main/kotlin/org/jetbrains/dokka/it/S3Project.kt rename to integration-tests/src/main/kotlin/org/jetbrains/dokka/it/TestOutputCopier.kt index ee69ef62b8..3077083804 100644 --- a/integration-tests/src/main/kotlin/org/jetbrains/dokka/it/S3Project.kt +++ b/integration-tests/src/main/kotlin/org/jetbrains/dokka/it/TestOutputCopier.kt @@ -3,14 +3,14 @@ package org.jetbrains.dokka.it import org.junit.After import java.io.File -interface S3Project { +interface TestOutputCopier { val projectOutputLocation: File @After fun copyToLocation() { - System.getenv("DOKKA_IT_AWS_PATH")?.also { location -> + System.getenv("DOKKA_TEST_OUTPUT_PATH")?.also { location -> println("Copying to ${File(location).absolutePath}") projectOutputLocation.copyRecursively(File(location)) - } ?: println("No copy path provided, skipping") + } ?: println("No path via env. varbiable 'DOKKA_TEST_OUTPUT_PATH' provided, skipping copying") } }