diff --git a/.github/workflows/build-and-test-workflow.yml b/.github/workflows/build-and-test-workflow.yml new file mode 100644 index 00000000..50d26cb8 --- /dev/null +++ b/.github/workflows/build-and-test-workflow.yml @@ -0,0 +1,101 @@ +name: Build and test workflow +on: + push: + branches: + - "*" + pull_request: + branches: + - "*" +env: + OPENSEARCH_DASHBOARDS_VERSION: 'main' + +jobs: + Get-CI-Image-Tag: + uses: opensearch-project/opensearch-build/.github/workflows/get-ci-image-tag.yml@main + with: + product: opensearch-dashboards + + build-and-test-linux: + needs: Get-CI-Image-Tag + name: Build the plugin and run unit tests + 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: Checkout OpenSearch Dashboards + uses: actions/checkout@v2 + with: + repository: opensearch-project/OpenSearch-Dashboards + ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }} + path: OpenSearch-Dashboards + - name: Checkout Anomaly Detection OpenSearch Dashboards plugin + uses: actions/checkout@v2 + with: + path: OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin + - name: Bootstrap / build / unit test the plugin + 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/anomaly-detection-dashboards-plugin && + whoami && yarn osd bootstrap && yarn build && yarn run test:jest --coverage" + - name: Uploads coverage + uses: codecov/codecov-action@v1 + + # TODO: once github actions supports windows and macos docker containers, we can + # merge these in to the above step's matrix. + build-and-test-windows-macos: + name: Build the plugin and run unit tests + strategy: + matrix: + os: [macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + # Enable longer filenames for windows + - name: Enable longer filenames + if: ${{ matrix.os == 'windows-latest' }} + run: git config --system core.longpaths true + - name: Checkout OpenSearch Dashboards + uses: actions/checkout@v2 + with: + repository: opensearch-project/OpenSearch-Dashboards + ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }} + path: OpenSearch-Dashboards + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version-file: './OpenSearch-Dashboards/.nvmrc' + registry-url: 'https://registry.npmjs.org' + - name: Install Yarn + # Need to use bash to avoid having a windows/linux specific step + shell: bash + run: | + YARN_VERSION=$(node -p "require('./OpenSearch-Dashboards/package.json').engines.yarn") + echo "Installing yarn@$YARN_VERSION" + npm i -g yarn@$YARN_VERSION + - run: node -v + - run: yarn -v + - name: Checkout Anomaly Detection OpenSearch Dashboards plugin + uses: actions/checkout@v2 + with: + path: OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin + - name: Bootstrap the plugin + run: | + cd OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin + yarn osd bootstrap + - name: Build the plugin + run: | + cd OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin + yarn build + - name: Run unit tests + run: | + cd OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin + yarn run test:jest --coverage + - name: Uploads coverage + uses: codecov/codecov-action@v1 + diff --git a/.github/workflows/dco.yml b/.github/workflows/dco.yml deleted file mode 100644 index d4c9ff2c..00000000 --- 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 }} \ No newline at end of file diff --git a/.github/workflows/unit-tests-workflow.yml b/.github/workflows/unit-tests-workflow.yml deleted file mode 100644 index fa425db1..00000000 --- a/.github/workflows/unit-tests-workflow.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Unit tests workflow -on: - push: - branches: - - "*" - pull_request: - branches: - - "*" -env: - OPENSEARCH_DASHBOARDS_VERSION: 'main' -jobs: - tests: - name: Run unit tests - strategy: - matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.os }} - steps: - # Enable longer filenames for windows - - name: Enable longer filenames - if: ${{ matrix.os == 'windows-latest' }} - run: git config --system core.longpaths true - - name: Checkout OpenSearch Dashboards - uses: actions/checkout@v2 - with: - repository: opensearch-project/OpenSearch-Dashboards - ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }} - path: OpenSearch-Dashboards - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version-file: './OpenSearch-Dashboards/.nvmrc' - registry-url: 'https://registry.npmjs.org' - - name: Install Yarn - # Need to use bash to avoid having a windows/linux specific step - shell: bash - run: | - YARN_VERSION=$(node -p "require('./OpenSearch-Dashboards/package.json').engines.yarn") - echo "Installing yarn@$YARN_VERSION" - npm i -g yarn@$YARN_VERSION - - run: node -v - - run: yarn -v - - name: Checkout Anomaly Detection OpenSearch Dashboards plugin - uses: actions/checkout@v2 - with: - path: OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin - - name: Bootstrap the plugin - run: | - cd OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin - yarn osd bootstrap - - name: Run tests - run: | - cd OpenSearch-Dashboards/plugins/anomaly-detection-dashboards-plugin - yarn run test:jest --coverage - - name: Uploads coverage - uses: codecov/codecov-action@v1