From aaa94e2b6523bcff211baaf0c4556ea2e0394bbb Mon Sep 17 00:00:00 2001 From: Tobias Nett Date: Sat, 16 Mar 2024 17:55:40 +0100 Subject: [PATCH] build(ci): publish artifacts to Terasology artifactory (#20) * build(ci): combine workflows into a single one * build(ci): upgrade action dependencies * build: update Terasology artifactory URL --------- Co-authored-by: jdrueckert --- .github/workflows/allInOne.yml | 125 +++++++++++++++++++++++++++ .github/workflows/linux_amd64.yml | 36 -------- .github/workflows/macosx_aarch64.yml | 34 -------- .github/workflows/macosx_amd64.yml | 35 -------- build.gradle | 14 +-- 5 files changed, 132 insertions(+), 112 deletions(-) create mode 100644 .github/workflows/allInOne.yml delete mode 100644 .github/workflows/linux_amd64.yml delete mode 100644 .github/workflows/macosx_aarch64.yml delete mode 100644 .github/workflows/macosx_amd64.yml diff --git a/.github/workflows/allInOne.yml b/.github/workflows/allInOne.yml new file mode 100644 index 000000000..4ee7bb838 --- /dev/null +++ b/.github/workflows/allInOne.yml @@ -0,0 +1,125 @@ +name: Build and Publish for all Platforms + +on: [push] + +jobs: + validate-gradle-wrapper: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Validate Gradle Wrapper + uses: gradle/wrapper-validation-action@v2 + build-linux-windows-amd64: + runs-on: ubuntu-latest + needs: validate-gradle-wrapper + steps: + - name: Install SWIG + run: sudo apt-get install swig mingw-w64 + - uses: actions/checkout@v4 + with: + submodules: true + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'adopt' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + - name: Build + run: ./gradlew buildNatives + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: linux-windows-amd64-artifacts + path: | + build/natives/*/*.so + build/natives/*/*.dll + build/natives/*/*.dylib + build-macos-amd64: + runs-on: macos-12 + needs: validate-gradle-wrapper + steps: + - name: Install SWIG and CMake + run: | + brew install swig + brew install cmake + - uses: actions/checkout@v4 + with: + submodules: true + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'adopt' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + - name: Build + run: ./gradlew native_macosx_amd64_clang + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: macosx-amd64-artifacts + path: | + build/natives/*/*.so + build/natives/*/*.dll + build/natives/*/*.dylib + build-macos-aarch64: + runs-on: macos-14 + needs: validate-gradle-wrapper + steps: + - name: Install SWIG and CMake + run: | + brew install swig + brew install cmake + - uses: actions/checkout@v4 + with: + submodules: true + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'adopt' + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + - name: Build + run: ./gradlew native_macosx_aarch64_clang + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: macosx-aarch64-artifacts + path: | + build/natives/*/*.so + build/natives/*/*.dll + build/natives/*/*.dylib + publish: + runs-on: ubuntu-latest + needs: [validate-gradle-wrapper,build-linux-windows-amd64, build-macos-amd64, build-macos-aarch64] + if: github.ref == 'refs/heads/master' + steps: + - name: Install SWIG + run: sudo apt-get install swig mingw-w64 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'adopt' + - uses: actions/checkout@v4 + with: + submodules: true + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: build/natives + merge-multiple: true + - name: Build and Zip Natives + run: ./gradlew build zipNatives + - run: | + ls -R build/natives/ + ls -R build/libs/ + - name: Publish + run: ./gradlew -Dorg.gradle.internal.publish.checksums.insecure=true publish -PmavenUser=${artifactoryUser} -PmavenPass=${artifactoryPass} + env: + artifactoryUser: ${{ secrets.ARTIFACTORY_USER }} + artifactoryPass: ${{ secrets.ARTIFACTORY_PASS }} diff --git a/.github/workflows/linux_amd64.yml b/.github/workflows/linux_amd64.yml deleted file mode 100644 index bf1063cf5..000000000 --- a/.github/workflows/linux_amd64.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Linux amd64 - -on: [push] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Install SWIG - run: sudo apt-get install swig mingw-w64 - - uses: actions/checkout@v3 - with: - submodules: true - - name: Set up JDK - uses: actions/setup-java@v3 - with: - java-version: '11' - distribution: 'adopt' - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 - - name: Setup Gradle - uses: gradle/gradle-build-action@v2 - - name: Download all artifacts - uses: actions/download-artifact@v2 - with: - path: . - - name: Build - run: ./gradlew buildNatives - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: linux-windows-amd64-artifacts - path: | - build/natives/*/*.so - build/natives/*/*.dll - build/natives/*/*.dylib diff --git a/.github/workflows/macosx_aarch64.yml b/.github/workflows/macosx_aarch64.yml deleted file mode 100644 index 1c7e991f4..000000000 --- a/.github/workflows/macosx_aarch64.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: MacOS aarch64 (M1) - -on: [push] - -jobs: - build: - runs-on: macos-14 - steps: - - name: Install SWIG and CMake - run: | - brew install swig - brew install cmake - - uses: actions/checkout@v3 - with: - submodules: true - - name: Set up JDK - uses: actions/setup-java@v3 - with: - java-version: '11' - distribution: 'adopt' - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 - - name: Setup Gradle - uses: gradle/gradle-build-action@v2 - - name: Build - run: ./gradlew native_macosx_aarch64_clang - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: macosx-aarch64-artifacts - path: | - build/natives/*/*.so - build/natives/*/*.dll - build/natives/*/*.dylib diff --git a/.github/workflows/macosx_amd64.yml b/.github/workflows/macosx_amd64.yml deleted file mode 100644 index 8ad6e8dd1..000000000 --- a/.github/workflows/macosx_amd64.yml +++ /dev/null @@ -1,35 +0,0 @@ -# This workflow builds and tests the project on a MacOS amd64 machine (Intel Mac). -name: MacOS amd64 - -on: [push] - -jobs: - build: - runs-on: macos-12 - steps: - - name: Install SWIG and CMake - run: | - brew install swig - brew install cmake - - uses: actions/checkout@v3 - with: - submodules: true - - name: Set up JDK - uses: actions/setup-java@v3 - with: - java-version: '11' - distribution: 'adopt' - - name: Validate Gradle Wrapper - uses: gradle/wrapper-validation-action@v1 - - name: Setup Gradle - uses: gradle/gradle-build-action@v2 - - name: Build - run: ./gradlew native_macosx_amd64_clang - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: macosx-amd64-artifacts - path: | - build/natives/*/*.so - build/natives/*/*.dll - build/natives/*/*.dylib diff --git a/build.gradle b/build.gradle index 68906b067..e211ca802 100644 --- a/build.gradle +++ b/build.gradle @@ -45,8 +45,7 @@ repositories { } else { // Our default is the main virtual repo containing everything except repos for testing Artifactory itself name "Terasology Artifactory" - url "http://artifactory.terasology.org/artifactory/virtual-repo-live" - allowInsecureProtocol true // 😱 + url "https://artifactory.terasology.io/artifactory/virtual-repo-live" } } } @@ -157,7 +156,9 @@ task zipNatives(type: Zip){ } buildNatives.dependsOn generateSources -zipNatives.dependsOn buildNatives +// Building natives is a prerequisite for zipping them, but we don't want to re-compute them every time. +// Also, we build natives on different platforms and combine them to a single zip, so we can't just depend on the native tasks anyway. +//zipNatives.dependsOn buildNatives javadoc { failOnError = false @@ -207,12 +208,11 @@ publishing { repositories { maven { - name = 'TerasologyOrg' - allowInsecureProtocol true // 😱 - no https on our Artifactory yet + name = 'TerasologyOrg' if (rootProject.hasProperty("publishRepo")) { // This first option is good for local testing, you can set a full explicit target repo in gradle.properties - url = "http://artifactory.terasology.org/artifactory/$publishRepo" + url = "https://artifactory.terasology.io/artifactory/$publishRepo" logger.info("Changing PUBLISH repoKey set via Gradle property to {}", publishRepo) } else { @@ -231,7 +231,7 @@ publishing { } logger.info("The final deduced publish repo is {}", deducedPublishRepo) - url = "http://artifactory.terasology.org/artifactory/$deducedPublishRepo" + url = "https://artifactory.terasology.io/artifactory/$deducedPublishRepo" } if (rootProject.hasProperty("mavenUser") && rootProject.hasProperty("mavenPass")) {