diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..c32d137 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,41 @@ +name: Nebula Build +permissions: + contents: read + actions: write +on: + push: + branches: + - 'main' + pull_request: + +jobs: + buildmultijdk: + runs-on: ubuntu-latest + strategy: + matrix: + # test against latest update of some major Java version(s), as well as specific LTS version(s) + java: [17, 21, 25] + name: Gradle Build without Publish + steps: + - uses: actions/checkout@v4 + - name: Setup git user + run: | + git config --global user.name "Nebula Plugin Maintainers" + git config --global user.email "nebula-plugins-oss@netflix.com" + - name: Set up JDKs + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: | + 17 + 21 + ${{ matrix.java }} + java-package: jdk + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + cache-overwrite-existing: true + - name: Gradle build + run: ./gradlew --stacktrace build + env: + JDK_VERSION_FOR_TESTS: ${{ matrix.java }} \ No newline at end of file diff --git a/.github/workflows/nebula.yml b/.github/workflows/nebula.yml deleted file mode 100644 index 889d210..0000000 --- a/.github/workflows/nebula.yml +++ /dev/null @@ -1,149 +0,0 @@ -name: Nebula Build -on: - push: - branches: - - '*' - tags: - - v*.*.* - - v*.*.*-rc.* - pull_request: - -jobs: - validation: - name: "Gradle Wrapper Validation" - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: gradle/wrapper-validation-action@v1 - buildmultijdk: - if: (!startsWith(github.ref, 'refs/tags/v')) - needs: validation - runs-on: ubuntu-latest - strategy: - matrix: - # test against latest update of some major Java version(s), as well as specific LTS version(s) - java: [17, 21] - name: Gradle Build without Publish - steps: - - uses: actions/checkout@v4 - - name: Setup git user - run: | - git config --global user.name "Nebula Plugin Maintainers" - git config --global user.email "nebula-plugins-oss@netflix.com" - - name: Set up JDKs - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: | - 17 - ${{ matrix.java }} - java-package: jdk - - uses: actions/cache@v4 - id: gradle-cache - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle/dependency-locks/*.lockfile') }} - restore-keys: | - - ${{ runner.os }}-gradle- - - uses: actions/cache@v4 - id: gradle-wrapper-cache - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }} - restore-keys: | - - ${{ runner.os }}-gradlewrapper- - - name: Gradle build - run: ./gradlew --info --stacktrace build - env: - JDK_VERSION_FOR_TESTS: ${{ matrix.java }} - validatepluginpublication: - if: startsWith(github.ref, 'refs/tags/v') - needs: validation - runs-on: ubuntu-latest - name: Gradle Plugin Publication Validation - env: - NETFLIX_OSS_SONATYPE_USERNAME: ${{ secrets.ORG_SONATYPE_USERNAME }} - NETFLIX_OSS_SONATYPE_PASSWORD: ${{ secrets.ORG_SONATYPE_PASSWORD }} - steps: - - uses: actions/checkout@v4 - - name: Setup git user - run: | - git config --global user.name "Nebula Plugin Maintainers" - git config --global user.email "nebula-plugins-oss@netflix.com" - - name: Set up JDKs - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: | - 17 - 21 - java-package: jdk - - uses: actions/cache@v4 - id: gradle-cache - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle/dependency-locks/*.lockfile') }} - restore-keys: | - - ${{ runner.os }}-gradle- - - uses: actions/cache@v4 - id: gradle-wrapper-cache - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }} - restore-keys: | - - ${{ runner.os }}-gradlewrapper- - - name: Verify plugin publication - if: | - startsWith(github.ref, 'refs/tags/v') && - (!contains(github.ref, '-rc.')) - run: ./gradlew --stacktrace -Dgradle.publish.key=${{ secrets.gradlePublishKey }} -Dgradle.publish.secret=${{ secrets.gradlePublishSecret }} -Prelease.useLastTag=true final publishPlugin --validate-only -x check -x signPluginMavenPublication - publish: - if: startsWith(github.ref, 'refs/tags/v') - needs: validatepluginpublication - runs-on: ubuntu-latest - name: Gradle Build and Publish - env: - NETFLIX_OSS_SONATYPE_USERNAME: ${{ secrets.ORG_SONATYPE_USERNAME }} - NETFLIX_OSS_SONATYPE_PASSWORD: ${{ secrets.ORG_SONATYPE_PASSWORD }} - NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} - NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} - NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} - NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} - steps: - - uses: actions/checkout@v4 - - name: Setup git user - run: | - git config --global user.name "Nebula Plugin Maintainers" - git config --global user.email "nebula-plugins-oss@netflix.com" - - name: Set up JDKs - uses: actions/setup-java@v4 - with: - distribution: 'zulu' - java-version: | - 17 - 21 - java-package: jdk - - uses: actions/cache@v4 - id: gradle-cache - with: - path: ~/.gradle/caches - key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle/dependency-locks/*.lockfile') }} - restore-keys: | - - ${{ runner.os }}-gradle- - - uses: actions/cache@v4 - id: gradle-wrapper-cache - with: - path: ~/.gradle/wrapper - key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }} - restore-keys: | - - ${{ runner.os }}-gradlewrapper- - - name: Publish candidate - if: | - startsWith(github.ref, 'refs/tags/v') && - contains(github.ref, '-rc.') - run: ./gradlew --info --stacktrace -Prelease.useLastTag=true candidate - - name: Publish release - if: | - startsWith(github.ref, 'refs/tags/v') && - (!contains(github.ref, '-rc.')) - run: ./gradlew --info --stacktrace -Dgradle.publish.key=${{ secrets.gradlePublishKey }} -Dgradle.publish.secret=${{ secrets.gradlePublishSecret }} -Prelease.useLastTag=true final diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..8b76336 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,50 @@ +name: Release +on: + push: + tags: + - v*.*.* + - v*.*.*-rc.* + +jobs: + publish: + runs-on: ubuntu-latest + name: Gradle Build and Publish + environment: + name: Publish + url: "https://repo1.maven.org/maven2/com/netflix/nebula/nebula-project-plugin/" + env: + NETFLIX_OSS_SONATYPE_USERNAME: ${{ secrets.ORG_SONATYPE_USERNAME }} + NETFLIX_OSS_SONATYPE_PASSWORD: ${{ secrets.ORG_SONATYPE_PASSWORD }} + NETFLIX_OSS_SIGNING_KEY: ${{ secrets.ORG_SIGNING_KEY }} + NETFLIX_OSS_SIGNING_PASSWORD: ${{ secrets.ORG_SIGNING_PASSWORD }} + NETFLIX_OSS_REPO_USERNAME: ${{ secrets.ORG_NETFLIXOSS_USERNAME }} + NETFLIX_OSS_REPO_PASSWORD: ${{ secrets.ORG_NETFLIXOSS_PASSWORD }} + GRADLE_PUBLISH_KEY: ${{ secrets.ORG_GRADLE_PUBLISH_KEY }} + GRADLE_PUBLISH_SECRET: ${{ secrets.ORG_GRADLE_PUBLISH_SECRET }} + steps: + - uses: actions/checkout@v4 + - name: Setup git user + run: | + git config --global user.name "Nebula Plugin Maintainers" + git config --global user.email "nebula-plugins-oss@netflix.com" + - name: Set up JDKs + uses: actions/setup-java@v4 + with: + distribution: 'zulu' + java-version: | + 17 + 21 + java-package: jdk + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v5 + with: + cache-overwrite-existing: true + - name: Verify plugin publication + if: (!contains(github.ref, '-rc.')) + run: ./gradlew --stacktrace -Prelease.useLastTag=true final publishPlugin --validate-only -x check + - name: Publish candidate + if: contains(github.ref, '-rc.') + run: ./gradlew --info --stacktrace -Prelease.useLastTag=true candidate + - name: Publish release + if: (!contains(github.ref, '-rc.')) + run: ./gradlew --stacktrace -Prelease.useLastTag=true final \ No newline at end of file