From c3ae384a408b16b59d5f1b75246df78a17d5c21c Mon Sep 17 00:00:00 2001 From: Peter Zhu Date: Thu, 2 Nov 2023 17:54:02 -0400 Subject: [PATCH] Onboard jenkins prod docker images to github actions Signed-off-by: Peter Zhu --- .github/workflows/dco.yml | 18 ------ .github/workflows/test-and-build.yml | 97 ++++++++++++++++++++++++---- 2 files changed, 86 insertions(+), 29 deletions(-) delete mode 100644 .github/workflows/dco.yml diff --git a/.github/workflows/dco.yml b/.github/workflows/dco.yml deleted file mode 100644 index cf30ea8..0000000 --- a/.github/workflows/dco.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Developer Certificate of Origin Check - -on: [pull_request] - -jobs: - check: - runs-on: ubuntu-latest - - steps: - - name: Get PR Commits - id: 'get-pr-commits' - uses: tim-actions/get-pr-commits@v1.1.0 - with: - token: ${{ secrets.GITHUB_TOKEN }} - - name: DCO Check - uses: tim-actions/dco@v1.1.0 - with: - commits: ${{ steps.get-pr-commits.outputs.commits }} diff --git a/.github/workflows/test-and-build.yml b/.github/workflows/test-and-build.yml index 22478fb..ae2b028 100644 --- a/.github/workflows/test-and-build.yml +++ b/.github/workflows/test-and-build.yml @@ -6,10 +6,93 @@ env: PLUGIN_NAME: dashboards-search-relevance jobs: - build: + Get-CI-Image-Tag: + uses: opensearch-project/opensearch-build/.github/workflows/get-ci-image-tag.yml@main + with: + product: opensearch-dashboards + + build-linux: + needs: Get-CI-Image-Tag + 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: + - uses: actions/checkout@v2 + - name: Fetch Version Information + shell: bash + run: | + OPENSEARCH_PLUGIN_VERSION=$(node -p "require('./package.json').version") + if [[ "${{ github.event_name }}" == "push" ]]; then + pr_number=$(curl -sSL -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/${{ github.repository }}/commits/${{ github.sha }}/pulls" \ + | jq -r '.[0].number') + url_number=$(curl -sSL -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + "https://api.github.com/repos/${{ github.repository }}/commits/${{ github.sha }}/pulls" \ + | jq -r '.[0].url') + pr_data=$(curl -sSL -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \ + "$url_number") + echo "BRANCH_NAME is $BRANCH_NAME" + elif [[ "${{ github.event_name }}" == "pull_request" ]]; then + echo "Base branch name is "${{ github.event.pull_request.base.ref }}"" + BRANCH_NAME="${{ github.event.pull_request.base.ref }}" + fi + echo "Target branch: $BRANCH_NAME" + echo "OPENSEARCH_PLUGIN_VERSION=$OPENSEARCH_PLUGIN_VERSION" >> $GITHUB_ENV + echo "OPENSEARCH_VERSION=$BRANCH_NAME" >> $GITHUB_ENV + + - name: Checkout Dashboards Search Relevance plugin + uses: actions/checkout@v3 + with: + path: dashboards-search-relevance + + - name: Checkout OpenSearch Dashboards + uses: actions/checkout@v3 + with: + repository: opensearch-project/OpenSearch-Dashboards + ref: ${{ env.OPENSEARCH_VERSION }} + path: OpenSearch-Dashboards + + - name: Move Search Relevance to Plugins Dir + run: mv dashboards-search-relevance OpenSearch-Dashboards/plugins/dashboards-search-relevance + + - name: Plugin Bootstrap / test + run: | + chown -R 1000:1000 `pwd` + cd ./OpenSearch-Dashboards/ + su `id -un 1000` -c "source $NVM_DIR/nvm.sh && nvm use && node -v && yarn -v && + cd ./plugins/dashboards-search-relevance && + whoami && yarn osd bootstrap && yarn test --coverage" + + - name: Upload coverage + uses: codecov/codecov-action@v1 + with: + flags: dashboards-search-relevance + directory: ./OpenSearch-Dashboards/plugins/dashboards-search-relevance + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Build Artifact + run: | + chown -R 1000:1000 `pwd` + cd ./OpenSearch-Dashboards/ + su `id -un 1000` -c "source $NVM_DIR/nvm.sh && nvm use && node -v && yarn -v && + cd ./plugins/dashboards-search-relevance && + whoami && yarn build && mv -v ./build/*.zip ./build/${{ env.PLUGIN_NAME }}-${{ env.OPENSEARCH_PLUGIN_VERSION }}.zip" + + - name: Upload Artifact + uses: actions/upload-artifact@v1 + with: + name: dashboards-search-relevance-${{ matrix.os }} + path: ./OpenSearch-Dashboards/plugins/dashboards-search-relevance/build + + build-macos-windows: strategy: matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + os: [macos-latest, windows-latest] runs-on: ${{ matrix.os }} steps: @@ -81,14 +164,6 @@ jobs: cd OpenSearch-Dashboards/plugins/dashboards-search-relevance yarn test --coverage - - name: Upload coverage - if: ${{ matrix.os == 'ubuntu-latest' }} - uses: codecov/codecov-action@v1 - with: - flags: dashboards-search-relevance - directory: ./OpenSearch-Dashboards/plugins/dashboards-search-relevance - token: ${{ secrets.CODECOV_TOKEN }} - - name: Build Artifact run: | cd OpenSearch-Dashboards/plugins/dashboards-search-relevance @@ -99,4 +174,4 @@ jobs: uses: actions/upload-artifact@v1 with: name: dashboards-search-relevance-${{ matrix.os }} - path: ./OpenSearch-Dashboards/plugins/dashboards-search-relevance/build \ No newline at end of file + path: ./OpenSearch-Dashboards/plugins/dashboards-search-relevance/build