upgrade upload-artifact to version 3 (#1252) #3099
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Test and Build Workflow | |
on: | |
pull_request: | |
branches: | |
- "**" | |
push: | |
branches: | |
- "**" | |
env: | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
jobs: | |
Get-CI-Image-Tag: | |
uses: opensearch-project/opensearch-build/.github/workflows/get-ci-image-tag.yml@main | |
with: | |
product: opensearch | |
test-and-build-linux: | |
needs: Get-CI-Image-Tag | |
env: | |
TEST_FILTER: ${{ matrix.test_filter }} | |
strategy: | |
# This setting says that all jobs should finish, even if one fails | |
fail-fast: false | |
# This starts three jobs, setting these environment variables uniquely for the different jobs | |
matrix: | |
java: [11, 17, 21] | |
feature: [ism, non-ism] | |
include: | |
- feature: ism | |
test_filter: -PincludeTests="org.opensearch.indexmanagement.indexstatemanagement*" | |
- feature: non-ism | |
test_filter: -PexcludeTests="org.opensearch.indexmanagement.indexstatemanagement*" | |
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: | |
# This step uses the setup-java Github action: https://github.com/actions/setup-java | |
- name: Set Up JDK ${{ matrix.java }} | |
uses: actions/setup-java@v2 | |
with: | |
distribution: temurin # Temurin is a distribution of adoptium | |
java-version: ${{ matrix.java }} | |
# build index management | |
- name: Checkout Branch | |
uses: actions/checkout@v2 | |
# This is a hack, but this step creates a link to the X: mounted drive, which makes the path | |
# short enough to work on Windows | |
- name: Build with Gradle | |
run: | | |
chown -R 1000:1000 `pwd` | |
su `id -un 1000` -c "./gradlew build ${{ env.TEST_FILTER }}" | |
- name: Upload failed logs | |
uses: actions/upload-artifact@v4 | |
if: ${{ failure() }} | |
with: | |
name: logs-${{ matrix.java }}-${{ matrix.feature }} | |
path: build/testclusters/integTest-*/logs/* | |
- name: Create Artifact Path | |
run: | | |
mkdir -p index-management-artifacts | |
cp ./build/distributions/*.zip index-management-artifacts | |
- name: Uploads coverage | |
uses: codecov/codecov-action@v1 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
# This step uses the upload-artifact Github action: https://github.com/actions/upload-artifact | |
- name: Upload Artifacts | |
# v4 requires node.js 20 which is not supported | |
uses: actions/upload-artifact@v3 | |
with: | |
name: index-management-plugin-ubuntu-latest-${{ matrix.java }} | |
path: index-management-artifacts | |
overwrite: 'true' | |
test-and-build-windows-macos: | |
env: | |
BUILD_ARGS: ${{ matrix.os_build_args }} | |
WORKING_DIR: ${{ matrix.working_directory }}. | |
TEST_FILTER: ${{ matrix.test_filter }} | |
strategy: | |
# This setting says that all jobs should finish, even if one fails | |
fail-fast: false | |
# This starts three jobs, setting these environment variables uniquely for the different jobs | |
matrix: | |
java: [11, 17, 21] | |
os: [windows-latest, macos-latest] | |
feature: [ism, non-ism] | |
include: | |
- os: windows-latest | |
os_build_args: -x integTest -x jacocoTestReport | |
working_directory: X:\ | |
os_java_options: -Xmx4096M | |
- os: macos-latest | |
os_build_args: -x integTest -x jacocoTestReport | |
- feature: ism | |
test_filter: -PincludeTests="org.opensearch.indexmanagement.indexstatemanagement*" | |
- feature: non-ism | |
test_filter: -PexcludeTests="org.opensearch.indexmanagement.indexstatemanagement*" | |
runs-on: ${{ matrix.os }} | |
steps: | |
# This step uses the setup-java Github action: https://github.com/actions/setup-java | |
- name: Set Up JDK ${{ matrix.java }} | |
uses: actions/setup-java@v2 | |
with: | |
distribution: temurin # Temurin is a distribution of adoptium | |
java-version: ${{ matrix.java }} | |
# build index management | |
- name: Checkout Branch | |
uses: actions/checkout@v2 | |
# This is a hack, but this step creates a link to the X: mounted drive, which makes the path | |
# short enough to work on Windows | |
- name: Shorten Path | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: subst 'X:' . | |
- name: Build with Gradle | |
working-directory: ${{ env.WORKING_DIR }} | |
run: ./gradlew build ${{ env.BUILD_ARGS }} ${{ env.TEST_FILTER }} | |
env: | |
_JAVA_OPTIONS: ${{ matrix.os_java_options }} | |
- name: Create Artifact Path | |
run: | | |
mkdir -p index-management-artifacts | |
cp ./build/distributions/*.zip index-management-artifacts | |
# This step uses the upload-artifact Github action: https://github.com/actions/upload-artifact | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: index-management-plugin-${{ matrix.os }}-${{ matrix.java }} | |
path: index-management-artifacts | |
overwrite: 'true' |