diff --git a/.github/workflows/notifications-test-and-build-workflow.yml b/.github/workflows/notifications-test-and-build-workflow.yml index dd031a77..4f758317 100644 --- a/.github/workflows/notifications-test-and-build-workflow.yml +++ b/.github/workflows/notifications-test-and-build-workflow.yml @@ -8,7 +8,73 @@ name: Test and Build Notifications on: [push, pull_request] jobs: - build: + Get-CI-Image-Tag: + uses: opensearch-project/opensearch-build/.github/workflows/get-ci-image-tag.yml@main + with: + product: opensearch + + build-linux: + needs: Get-CI-Image-Tag + strategy: + # This setting says that all jobs should finish, even if one fails + fail-fast: false + matrix: + java: [11, 17] + + # Job name + name: Build Notifications with JDK ${{ matrix.java }} on linux + runs-on: ubuntu-latest + container: + # using the same image which is used by opensearch-build team to build the OpenSearch Distribution + # this image tag is subject to change as more dependencies and updates will arrive over time + image: ${{ needs.Get-CI-Image-Tag.outputs.ci-image-version-linux }} + # need to switch to root so that github actions can install runner binary on container without permission issues. + options: --user root + + steps: + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@v2 + with: + distribution: temurin # Temurin is a distribution of adoptium + java-version: ${{ matrix.java }} + + # notifications + - name: Checkout Notifications + uses: actions/checkout@v2 + + - name: Build with Gradle + run: | + chown -R 1000:1000 `pwd` + cd notifications + su `id -un 1000` -c "./gradlew build" + + - name: Upload coverage + uses: codecov/codecov-action@v1 + with: + flags: opensearch-notifications + directory: notifications/ + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Create Artifact Path + run: | + mkdir -p notifications-build/{notifications,notifications-core} + cp -r ./notifications/notifications/build/distributions/*.zip notifications-build/notifications/ + cp -r ./notifications/core/build/distributions/*.zip notifications-build/notifications-core/ + shell: bash + + - name: Upload Artifacts for notifications plugin + uses: actions/upload-artifact@v1 + with: + name: notifications-plugin-${{ matrix.os }} + path: notifications-build/notifications + + - name: Upload Artifacts for notifications-core plugin + uses: actions/upload-artifact@v1 + with: + name: notifications-core-plugin-${{ matrix.os }} + path: notifications-build/notifications-core + + build-windows-macos: env: BUILD_ARGS: ${{ matrix.os_build_args }} WORKING_DIR: ${{ matrix.working_directory }}. @@ -17,7 +83,7 @@ jobs: fail-fast: false matrix: java: [11, 17] - os: [ ubuntu-latest, windows-latest, macos-latest ] + os: [ windows-latest, macos-latest ] include: - os: windows-latest os_build_args: -x integTest -x jacocoTestReport @@ -55,14 +121,6 @@ jobs: env: _JAVA_OPTIONS: ${{ matrix.os_java_options }} - - name: Upload coverage - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: codecov/codecov-action@v1 - with: - flags: opensearch-notifications - directory: notifications/ - token: ${{ secrets.CODECOV_TOKEN }} - - name: Create Artifact Path run: | mkdir -p notifications-build/{notifications,notifications-core}