From 519aa22ade27974f1080acb65e48e10b51f91f46 Mon Sep 17 00:00:00 2001 From: Vacha Shah Date: Tue, 11 Apr 2023 05:45:31 +0000 Subject: [PATCH 1/3] Improve time taken by Github actions Signed-off-by: Vacha Shah --- .github/workflows/build.yml | 5 ++- .github/workflows/checkstyle.yml | 5 ++- .github/workflows/dependabot_pr.yml | 2 +- .github/workflows/links.yml | 2 +- .github/workflows/release-drafter.yml | 3 +- .../workflows/test-integration-unreleased.yml | 43 +++++++++++++------ .github/workflows/test-integration.yml | 6 ++- .github/workflows/test-unit.yml | 5 ++- 8 files changed, 48 insertions(+), 23 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 668fc8b7b5..52a131c0c3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,12 +11,13 @@ jobs: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: java-version: ${{ matrix.java }} + distribution: adopt - name: Checkout Branch - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Build with Gradle run: ./gradlew clean build -x test diff --git a/.github/workflows/checkstyle.yml b/.github/workflows/checkstyle.yml index ecc9129902..151805aae3 100644 --- a/.github/workflows/checkstyle.yml +++ b/.github/workflows/checkstyle.yml @@ -10,11 +10,12 @@ jobs: java: [ 11 ] steps: - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: java-version: ${{ matrix.java }} + distribution: adopt - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Check style and license headers run: | ./gradlew checkstyleMain checkstyleTest diff --git a/.github/workflows/dependabot_pr.yml b/.github/workflows/dependabot_pr.yml index f13889c13d..ffcdd521c1 100644 --- a/.github/workflows/dependabot_pr.yml +++ b/.github/workflows/dependabot_pr.yml @@ -18,7 +18,7 @@ jobs: installation_id: 22958780 - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: token: ${{ steps.github_app_token.outputs.token }} diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml index 2b1a29fb3d..f5d2b8dd6e 100644 --- a/.github/workflows/links.yml +++ b/.github/workflows/links.yml @@ -8,7 +8,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: lychee Link Checker id: lychee uses: lycheeverse/lychee-action@v1.5.0 diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index b25459130a..31fc028d65 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -25,9 +25,10 @@ jobs: issue-body: "Please approve or deny the release of opensearch-java. **VERSION**: ${{ steps.get_data.outputs.version }} **TAG**: ${{ github.ref_name }} **COMMIT**: ${{ github.sha }}" exclude-workflow-initiator-as-approver: true - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: java-version: 11 + distribution: adopt - name: Build with Gradle run: | ./gradlew --no-daemon publishPublishMavenPublicationToLocalRepoRepository && tar -C build -cvf artifacts.tar.gz repository diff --git a/.github/workflows/test-integration-unreleased.yml b/.github/workflows/test-integration-unreleased.yml index 7fd53b1eb1..d9da8a28b6 100644 --- a/.github/workflows/test-integration-unreleased.yml +++ b/.github/workflows/test-integration-unreleased.yml @@ -18,36 +18,55 @@ jobs: - { opensearch_ref: '1.x', java: 11 } - { opensearch_ref: '2.x', java: 11 } - { opensearch_ref: '2.x', java: 17 } - - { opensearch_ref: '2.0', java: 11 } - { opensearch_ref: 'main', java: 11 } - { opensearch_ref: 'main', java: 17 } steps: - name: Set up JDK ${{ matrix.entry.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: java-version: ${{ matrix.entry.java }} + distribution: adopt - name: Checkout OpenSearch - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: repository: opensearch-project/OpenSearch ref: ${{ matrix.entry.opensearch_ref }} path: opensearch + - name: Get OpenSearch branch top + id: get-key + working-directory: opensearch + run: echo key=`git log -1 --format='%H'` >> $GITHUB_OUTPUT + + - name: Restore cached build + id: cache-restore + uses: actions/cache/restore@v3 + with: + path: opensearch/distribution/archives/linux-tar/build/distributions + key: ${{ steps.get-key.outputs.key }} + - name: Assemble OpenSearch - run: | - cd opensearch - ./gradlew assemble + if: steps.cache-restore.outputs.cache-hit != 'true' + working-directory: opensearch + run: ./gradlew :distribution:archives:linux-tar:assemble + + - name: Save cached build + if: steps.cache-restore.outputs.cache-hit != 'true' + uses: actions/cache/save@v3 + with: + path: opensearch/distribution/archives/linux-tar/build/distributions + key: ${{ steps.get-key.outputs.key }} - # This step runs the docker image generated during gradle assemble in OpenSearch. It is tagged as opensearch:test. - # Reference: https://github.com/opensearch-project/OpenSearch/blob/2.0/distribution/docker/build.gradle#L190 - - name: Run Docker Image + - name: Run OpenSearch + working-directory: opensearch/distribution/archives/linux-tar/build/distributions run: | - docker run -p 9200:9200 -p 9600:9600 -d -e "discovery.type=single-node" -e "bootstrap.memory_lock=true" opensearch:test - sleep 90 + tar xf opensearch-min-* + ./opensearch-*/bin/opensearch & + for attempt in {1..20}; do sleep 5; if curl -s localhost:9200; then echo '=====> ready'; break; fi; echo '=====> waiting...'; done - name: Checkout Java Client - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: path: opensearch-java diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index 0a554ccf31..1070815d48 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -19,14 +19,16 @@ jobs: - { opensearch_version: 2.3.0, java: 11 } - { opensearch_version: 2.4.1, java: 11 } - { opensearch_version: 2.5.0, java: 11 } + - { opensearch_version: 2.6.0, java: 11 } steps: - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: java-version: ${{ matrix.entry.java }} + distribution: adopt - name: Checkout Branch - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Run Docker run: | diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index fbfe15671c..15fc47ad5f 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -11,12 +11,13 @@ jobs: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: java-version: ${{ matrix.java }} + distribution: adopt - name: Checkout Branch - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Run Unit Test run: ./gradlew clean unitTest From e611255efd198e16a3e2b6c75e61db7f6abf8c50 Mon Sep 17 00:00:00 2001 From: Vacha Shah Date: Tue, 11 Apr 2023 05:57:11 +0000 Subject: [PATCH 2/3] Add Changelog Signed-off-by: Vacha Shah --- .github/workflows/test-integration.yml | 1 - CHANGELOG.md | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index 1070815d48..46b8fe96f3 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -19,7 +19,6 @@ jobs: - { opensearch_version: 2.3.0, java: 11 } - { opensearch_version: 2.4.1, java: 11 } - { opensearch_version: 2.5.0, java: 11 } - - { opensearch_version: 2.6.0, java: 11 } steps: - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1363d1b98c..432ceabc36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - Add support for OpenSearch Serverless ([#339](https://github.com/opensearch-project/opensearch-java/pull/339)) - Fix completion suggestions failure with missing required property TermSuggestOption.score ([#347](https://github.com/opensearch-project/opensearch-java/pull/347)) - Fix search failure with missing required property HitsMetadata.total when trackTotalHits is disabled ([#372](https://github.com/opensearch-project/opensearch-java/pull/372)) +- Improve time taken by Github actions by using cache ([#439](https://github.com/opensearch-project/opensearch-java/pull/439)) ### Deprecated From 6bdb84f490471f1477f158aacd928e3ad7eb8cf2 Mon Sep 17 00:00:00 2001 From: Vacha Shah Date: Tue, 11 Apr 2023 20:48:51 +0000 Subject: [PATCH 3/3] Fixing distribution and adding cache Signed-off-by: Vacha Shah --- .github/workflows/build.yml | 9 +++++---- .github/workflows/checkstyle.yml | 7 +++++-- .github/workflows/publish-snapshots.yml | 5 +++-- .github/workflows/release-drafter.yml | 5 +++-- .github/workflows/test-integration-unreleased.yml | 2 +- .github/workflows/test-integration.yml | 9 +++++---- .github/workflows/test-unit.yml | 9 +++++---- 7 files changed, 27 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 52a131c0c3..b51c25c85a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,14 +10,15 @@ jobs: java: [ 11 ] os: [ubuntu-latest, windows-latest, macOS-latest] steps: + - name: Checkout Java Client + uses: actions/checkout@v3 + - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: java-version: ${{ matrix.java }} - distribution: adopt - - - name: Checkout Branch - uses: actions/checkout@v3 + distribution: 'temurin' + cache: 'gradle' - name: Build with Gradle run: ./gradlew clean build -x test diff --git a/.github/workflows/checkstyle.yml b/.github/workflows/checkstyle.yml index 151805aae3..eb0ea0b887 100644 --- a/.github/workflows/checkstyle.yml +++ b/.github/workflows/checkstyle.yml @@ -9,13 +9,16 @@ jobs: matrix: java: [ 11 ] steps: + - name: Checkout Java Client + uses: actions/checkout@v3 + - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: java-version: ${{ matrix.java }} - distribution: adopt + distribution: 'temurin' + cache: 'gradle' - - uses: actions/checkout@v3 - name: Check style and license headers run: | ./gradlew checkstyleMain checkstyleTest diff --git a/.github/workflows/publish-snapshots.yml b/.github/workflows/publish-snapshots.yml index bead3bc05f..b0f23c2a1d 100644 --- a/.github/workflows/publish-snapshots.yml +++ b/.github/workflows/publish-snapshots.yml @@ -16,8 +16,9 @@ jobs: - name: Set up JDK 11 uses: actions/setup-java@v3 with: - java-version: 11 - distribution: adopt + java-version: '11' + distribution: 'temurin' + cache: 'gradle' - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v1 with: diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 31fc028d65..0fc73da10d 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -27,8 +27,9 @@ jobs: - name: Set up JDK 11 uses: actions/setup-java@v3 with: - java-version: 11 - distribution: adopt + java-version: '11' + distribution: 'temurin' + cache: 'gradle' - name: Build with Gradle run: | ./gradlew --no-daemon publishPublishMavenPublicationToLocalRepoRepository && tar -C build -cvf artifacts.tar.gz repository diff --git a/.github/workflows/test-integration-unreleased.yml b/.github/workflows/test-integration-unreleased.yml index d9da8a28b6..d1509fc039 100644 --- a/.github/workflows/test-integration-unreleased.yml +++ b/.github/workflows/test-integration-unreleased.yml @@ -25,7 +25,7 @@ jobs: uses: actions/setup-java@v3 with: java-version: ${{ matrix.entry.java }} - distribution: adopt + distribution: 'temurin' - name: Checkout OpenSearch uses: actions/checkout@v3 diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index 46b8fe96f3..5f76dfd2a2 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -20,14 +20,15 @@ jobs: - { opensearch_version: 2.4.1, java: 11 } - { opensearch_version: 2.5.0, java: 11 } steps: + - name: Checkout Java Client + uses: actions/checkout@v3 + - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: java-version: ${{ matrix.entry.java }} - distribution: adopt - - - name: Checkout Branch - uses: actions/checkout@v3 + distribution: 'temurin' + cache: 'gradle' - name: Run Docker run: | diff --git a/.github/workflows/test-unit.yml b/.github/workflows/test-unit.yml index 15fc47ad5f..70f591553c 100644 --- a/.github/workflows/test-unit.yml +++ b/.github/workflows/test-unit.yml @@ -10,14 +10,15 @@ jobs: java: [ 11 ] os: [ubuntu-latest, windows-latest, macOS-latest] steps: + - name: Checkout Java Client + uses: actions/checkout@v3 + - name: Set up JDK ${{ matrix.java }} uses: actions/setup-java@v3 with: java-version: ${{ matrix.java }} - distribution: adopt - - - name: Checkout Branch - uses: actions/checkout@v3 + distribution: 'temurin' + cache: 'gradle' - name: Run Unit Test run: ./gradlew clean unitTest