-
Notifications
You must be signed in to change notification settings - Fork 164
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Backport 1.3] Windows CI support for 1.3 branch (#1321)
* Backport Windows CI support to 1.3 branch Signed-off-by: Ryan Liang <[email protected]>
- Loading branch information
Showing
4 changed files
with
219 additions
and
155 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
name: 'Download Security Plugin' | ||
description: 'Installs OpenSearch Dashboard with a Plugin from github, then checkouts the correct dashboards version for the plugin, configures npm/yarn, and bootstraps Dashboards' | ||
|
||
inputs: | ||
opensearch-version: | ||
description: 'The version of OpenSearch that should be used, e.g "1.3.0"' | ||
required: true | ||
|
||
plugin-name: | ||
description: 'The the name of the plugin to use, such as opensearch-security' | ||
required: true | ||
|
||
plugin-version: | ||
description: 'The version of security plugin that should be used, e.g "1.3.0"' | ||
required: true | ||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- name: Download OpenSearch for Linux | ||
uses: peternied/download-file@v2 | ||
if: ${{ runner.os == 'Linux' }} | ||
with: | ||
url: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/${{ inputs.opensearch-version }}/latest/linux/x64/tar/builds/opensearch/plugins/${{ inputs.plugin-name }}-${{ inputs.plugin-version }}.zip | ||
|
||
- name: Download OpenSearch for Windows | ||
uses: peternied/download-file@v2 | ||
if: ${{ runner.os == 'Windows' }} | ||
with: | ||
url: https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/${{ inputs.opensearch-version }}/latest/windows/x64/zip/builds/opensearch/plugins/${{ inputs.plugin-name }}-${{ inputs.plugin-version }}.zip | ||
|
||
- name: Rename the Plugin Files | ||
run: mv opensearch-security-${{ inputs.plugin-version }}.zip opensearch-security.zip | ||
shell: bash | ||
|
||
- name: Create Setup Script for Linux | ||
if: ${{ runner.os == 'Linux' }} | ||
run: | | ||
cat > setup.sh <<'EOF' | ||
chmod +x ./opensearch-${{ inputs.opensearch-version}}-SNAPSHOT/plugins/${{ inputs.plugin-name }}/tools/install_demo_configuration.sh | ||
/bin/bash -c "yes | ./opensearch-${{ inputs.opensearch-version}}-SNAPSHOT/plugins/${{ inputs.plugin-name }}/tools/install_demo_configuration.sh" | ||
echo "plugins.security.unsupported.restapi.allow_securityconfig_modification: true" >> ./opensearch-${{ inputs.opensearch-version }}-SNAPSHOT/config/opensearch.yml | ||
EOF | ||
shell: bash | ||
|
||
- name: Create Setup Script for Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
run: | | ||
New-Item .\setup.bat -type file | ||
Set-Content .\setup.bat -Value "powershell.exe -noexit -command `".\opensearch-${{ inputs.opensearch-version}}-SNAPSHOT\plugins\${{ inputs.plugin-name }}\tools\install_demo_configuration.bat -y -i -c`"" | ||
Add-Content -Path .\setup.bat -Value "echo plugins.security.unsupported.restapi.allow_securityconfig_modification: true >> .\opensearch-${{ inputs.opensearch-version}}-SNAPSHOT\config\opensearch.yml" | ||
Get-Content .\setup.bat | ||
shell: pwsh |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
name: 'Install Dashboards with Plugin' | ||
description: 'Installs OpenSearch Dashboard with a Plugin from github, then checkouts the correct dashboards version for the plugin, configures npm/yarn, and bootstraps Dashboards' | ||
|
||
inputs: | ||
plugin_name: | ||
description: 'The the name of the plugin to use, such as security-dashboards-plugin' | ||
required: true | ||
|
||
outputs: | ||
dashboards-directory: | ||
description: "The directory where the dashboards has been configured" | ||
value: ${{ steps.determine-dashboards-directory.outputs.dashboards-directory }} | ||
|
||
plugin-directory: | ||
description: "The directory where the plugin has been configured" | ||
value: ${{ steps.determine-plugin-directory.outputs.plugin-directory }} | ||
|
||
|
||
runs: | ||
using: "composite" | ||
steps: | ||
- id: determine-dashboards-directory | ||
run: echo "dashboards-directory=OpenSearch-Dashboards" >> $GITHUB_OUTPUT | ||
shell: bash | ||
|
||
- id: determine-plugin-directory | ||
run: echo "::set-output name=plugin-directory::./OpenSearch-Dashboards/plugins/${{ inputs.plugin_name }}" | ||
shell: bash | ||
|
||
- uses: actions/checkout@v2 | ||
with: | ||
path: OpenSearch-Dashboards | ||
repository: opensearch-project/OpenSearch-Dashboards | ||
ref: 'main' | ||
fetch-depth: 0 | ||
|
||
- uses: actions/checkout@v2 | ||
with: | ||
path: ${{ steps.determine-plugin-directory.outputs.plugin-directory }} | ||
|
||
- id: osd-version | ||
run: | | ||
echo "::set-output name=osd-version::$(cat package.json | jq '.opensearchDashboards.version' | cut -c 2-4)" | ||
echo "::set-output name=osd-x-version::$(cat package.json | jq '.opensearchDashboards.version' | cut -c 2-3)" | ||
working-directory: ${{ steps.determine-plugin-directory.outputs.plugin-directory }} | ||
shell: bash | ||
|
||
- id: branch-switch-if-possible | ||
continue-on-error: true # Defaults onto main if the branch switch doesn't work | ||
if: ${{ steps.osd-version.outputs.osd-version }} | ||
run: git checkout ${{ steps.osd-version.outputs.osd-version }} || git checkout ${{ steps.osd-version.outputs.osd-x-version }}x | ||
working-directory: ./OpenSearch-Dashboards | ||
shell: bash | ||
|
||
- id: tool-versions | ||
run: | | ||
echo "node_version=$(cat .node-version)" >> $GITHUB_OUTPUT | ||
echo "yarn_version=$(jq -r '.engines.yarn' package.json)" >> $GITHUB_OUTPUT | ||
working-directory: OpenSearch-Dashboards | ||
shell: bash | ||
|
||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: ${{ steps.tool-versions.outputs.node_version }} | ||
registry-url: 'https://registry.npmjs.org' | ||
|
||
- name: Setup Opensearch Dashboards | ||
run: | | ||
npm uninstall -g yarn | ||
echo "Installing yarn ${{ steps.tool-versions.outputs.yarn_version }}" | ||
npm i -g yarn@${{ steps.tool-versions.outputs.yarn_version }} | ||
yarn cache clean | ||
yarn add sha.js | ||
working-directory: OpenSearch-Dashboards | ||
shell: bash | ||
|
||
- name: Bootstrap the OpenSearch Dashboard | ||
uses: nick-fields/retry@v2 | ||
with: | ||
timeout_minutes: 20 | ||
max_attempts: 2 | ||
command: yarn --cwd OpenSearch-Dashboards osd bootstrap --oss |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,113 +2,84 @@ name: Integration Tests | |
|
||
on: [push, pull_request] | ||
|
||
env: | ||
TEST_BROWSER_HEADLESS: 1 | ||
CI: 1 | ||
OPENSEARCH_VERSION: 1.3.8 | ||
PLUGIN_NAME: opensearch-security | ||
PLUGIN_VERSION: 1.3.8.0 | ||
|
||
jobs: | ||
tests: | ||
name: Run integration tests | ||
runs-on: ubuntu-latest | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ ubuntu-latest , windows-latest ] | ||
runs-on: ${{ matrix.os }} | ||
|
||
steps: | ||
- uses: browser-actions/setup-geckodriver@latest | ||
- run: geckodriver --version | ||
- name: Checkout Branch | ||
uses: actions/checkout@v3 | ||
|
||
- uses: browser-actions/setup-firefox@latest | ||
- run: firefox --version | ||
- name: Set up JDK | ||
uses: actions/setup-java@v1 | ||
with: | ||
java-version: 11 | ||
|
||
- name: Download OpenSearch Core | ||
run: | | ||
wget https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.8/7003/linux/x64/tar/builds/opensearch/dist/opensearch-min-1.3.8-linux-x64.tar.gz | ||
tar -xzf opensearch-*.tar.gz | ||
rm -f opensearch-*.tar.gz | ||
- uses: browser-actions/[email protected] | ||
- run: geckodriver --version | ||
|
||
- name: Download OpenSearch Security Plugin | ||
run: wget -O opensearch-security.zip https://ci.opensearch.org/ci/dbc/distribution-build-opensearch/1.3.8/7003/linux/x64/tar/builds/opensearch/plugins/opensearch-security-1.3.8.0.zip | ||
- name: Set up Firefox browser | ||
if: ${{ runner.os == 'Linux' }} | ||
uses: browser-actions/setup-firefox@v1 | ||
|
||
- name: Run OpenSearch with plugin | ||
run: | | ||
cat > os-ep.sh <<EOF | ||
yes | opensearch-plugin install file:///docker-host/security-plugin.zip | ||
chmod +x plugins/opensearch-security/tools/install_demo_configuration.sh | ||
yes | plugins/opensearch-security/tools/install_demo_configuration.sh | ||
echo "plugins.security.unsupported.restapi.allow_securityconfig_modification: true" >> /opensearch/config/opensearch.yml | ||
chown 1001:1001 -R /opensearch | ||
su -c "/opensearch/bin/opensearch" -s /bin/bash opensearch | ||
EOF | ||
docker build -t opensearch-test:latest -f- . <<EOF | ||
FROM ubuntu:latest | ||
COPY --chown=1001:1001 os-ep.sh /docker-host/ | ||
COPY --chown=1001:1001 opensearch-security.zip /docker-host/security-plugin.zip | ||
COPY --chown=1001:1001 opensearch* /opensearch/ | ||
RUN chmod +x /docker-host/os-ep.sh | ||
RUN useradd -u 1001 -s /sbin/nologin opensearch | ||
ENV PATH="/opensearch/bin:${PATH}" | ||
WORKDIR /opensearch/ | ||
ENTRYPOINT /docker-host/os-ep.sh | ||
EOF | ||
docker run -d --network=host -i opensearch-test:latest | ||
- run: firefox --version | ||
if: ${{ runner.os == 'Linux' }} | ||
|
||
- name: Checkout OpenSearch Dashboard | ||
uses: actions/checkout@v2 | ||
# Browser-action version does not work on Windows | ||
- name: Set up Firefox browser for Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
uses: RyanL1997/setup-browser@main | ||
with: | ||
path: OpenSearch-Dashboards | ||
repository: opensearch-project/OpenSearch-Dashboards | ||
ref: '1.3' | ||
fetch-depth: 0 | ||
|
||
- name: Create plugins dir | ||
run: | | ||
cd ./OpenSearch-Dashboards | ||
mkdir -p plugins | ||
- name: Checkout OpenSearch Dashboard Security plugin | ||
uses: actions/checkout@v2 | ||
browser: firefox | ||
version: latest | ||
|
||
- name: Download security plugin and create setup scripts | ||
uses: ./.github/actions/download-plugin | ||
with: | ||
path: OpenSearch-Dashboards/plugins/security-dashboards-plugin | ||
ref: ${{ github.ref }} | ||
opensearch-version: ${{ env.OPENSEARCH_VERSION }} | ||
plugin-name: ${{ env.PLUGIN_NAME }} | ||
plugin-version: ${{ env.PLUGIN_VERSION }} | ||
|
||
- name: Check OpenSearch Running | ||
continue-on-error: true | ||
run: curl -XGET https://localhost:9200 -u 'admin:admin' -k | ||
- name: Run Opensearch with A Single Plugin | ||
uses: opensearch-project/security/.github/actions/start-opensearch-with-one-plugin@main | ||
with: | ||
opensearch-version: ${{ env.OPENSEARCH_VERSION }} | ||
plugin-name: ${{ env.PLUGIN_NAME }} | ||
setup-script-name: setup | ||
|
||
# - name: Get OpenSearch Dashboards version | ||
# id: osd_version | ||
# run: | | ||
# echo "::set-output name=osd_version::$(jq -r '.opensearchDashboards.version' ./OpenSearch-Dashboards/plugins/security-dashboards-plugin/package.json)" | ||
|
||
# - name: Check OpenSearch Dashboards release tag | ||
# run: | | ||
# cd ./OpenSearch-Dashboards | ||
# git checkout tags/${{ steps.osd_version.outputs.osd_version }} -b v${{ steps.osd_version.outputs.osd_version }} | ||
|
||
- name: Get node and yarn versions | ||
id: versions | ||
run: | | ||
echo "::set-output name=node_version::$(cat ./OpenSearch-Dashboards/.node-version)" | ||
echo "::set-output name=yarn_version::$(jq -r '.engines.yarn' ./OpenSearch-Dashboards/package.json)" | ||
- name: Setup node | ||
uses: actions/setup-node@v1 | ||
- id: install-dashboards | ||
uses: ./.github/actions/install-dashboards | ||
with: | ||
node-version: ${{ steps.versions.outputs.node_version }} | ||
registry-url: 'https://registry.npmjs.org' | ||
|
||
- name: Install correct yarn version for OpenSearch Dashboards | ||
run: | | ||
npm uninstall -g yarn | ||
echo "Installing yarn ${{ steps.versions_step.outputs.yarn_version }}" | ||
npm i -g yarn@${{ steps.versions.outputs.yarn_version }} | ||
- name: Check OpenSearch Running | ||
continue-on-error: true | ||
run: curl -XGET https://localhost:9200 -u 'admin:admin' -k | ||
plugin_name: security-dashboards-plugin | ||
|
||
- name: Bootstrap OpenSearch Dashboards | ||
run: | | ||
cd ./OpenSearch-Dashboards | ||
yarn osd bootstrap | ||
node scripts/build_opensearch_dashboards_platform_plugins.js | ||
- name: Run integration tests | ||
- name: Start Dashboards in background | ||
run: node scripts/build_opensearch_dashboards_platform_plugins.js | ||
working-directory: ${{ steps.install-dashboards.outputs.dashboards-directory }} | ||
|
||
- name: Run integration tests on Linux | ||
if: ${{ runner.os == 'Linux' }} | ||
run: | | ||
echo "check if opensearch is ready" | ||
curl -XGET https://localhost:9200 -u 'admin:admin' -k | ||
cd ./OpenSearch-Dashboards/plugins/security-dashboards-plugin | ||
yarn test:jest_server --coverage | ||
working-directory: ${{ steps.install-dashboards.outputs.plugin-directory }} | ||
|
||
- name: Run integration tests on Windows | ||
if: ${{ runner.os == 'Windows' }} | ||
run: | | ||
echo "check if opensearch is ready" | ||
curl -XGET https://localhost:9200 -u 'admin:admin' -k | ||
node .\test\run_jest_tests.js --config .\test\jest.config.server.js --testPathIgnorePatterns saml_auth.test.ts | ||
working-directory: ${{ steps.install-dashboards.outputs.plugin-directory }} |
Oops, something went wrong.