-
Notifications
You must be signed in to change notification settings - Fork 108
Expand file tree
/
Copy pathaction.yaml
More file actions
152 lines (150 loc) 路 6.15 KB
/
Copy pathaction.yaml
File metadata and controls
152 lines (150 loc) 路 6.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
name: 'Runs the cypress test suite'
description: 'Re-usable workflow to run cypress tests against a cluster with or without security'
inputs:
with-security:
description: 'Whether security should be installed on the cluster the tests are run with'
required: true
runs:
using: "composite"
steps:
- name: Set up JDK
uses: actions/setup-java@v1
with:
# TODO: Parse this from index management plugin
java-version: 21
- name: Checkout index management
uses: actions/checkout@v2
with:
path: index-management
repository: opensearch-project/index-management
ref: 'main'
- name: Run opensearch with plugin
shell: bash
if: ${{ inputs.with-security == 'false' }}
run: |
cd index-management
./gradlew run &
sleep 300
# timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9200)" != "200" ]]; do sleep 5; done'
- name: Run opensearch with plugin
shell: bash
if: ${{ inputs.with-security == 'true' }}
run: |
cd index-management
./gradlew run -Dsecurity=true -Dhttps=true &
sleep 300
# timeout 300 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:9200)" != "200" ]]; do sleep 5; done'
- name: Checkout Index Management Dashboards plugin
uses: actions/checkout@v2
with:
path: index-management-dashboards-plugin
- name: Checkout Security Dashboards plugin
uses: actions/checkout@v2
with:
repository: opensearch-project/security-dashboards-plugin
path: security-dashboards-plugin
ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }}
- name: Checkout OpenSearch-Dashboards
uses: actions/checkout@v2
with:
repository: opensearch-project/OpenSearch-Dashboards
path: OpenSearch-Dashboards
ref: ${{ env.OPENSEARCH_DASHBOARDS_VERSION }}
- 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
shell: bash
- run: yarn -v
shell: bash
- name: Configure OpenSearch Dashboards for cypress
shell: bash
if: ${{ inputs.with-security == 'true' }}
run: |
cat << 'EOT' > ./OpenSearch-Dashboards/config/opensearch_dashboards.yml
server.host: "0.0.0.0"
opensearch.hosts: ["https://localhost:9200"]
opensearch.ssl.verificationMode: none
opensearch.username: "kibanaserver"
opensearch.password: "kibanaserver"
opensearch.requestHeadersWhitelist: [ authorization,securitytenant ]
opensearch_security.multitenancy.enabled: true
opensearch_security.multitenancy.tenants.preferred: ["Private", "Global"]
opensearch_security.readonly_mode.roles: ["kibana_read_only"]
opensearch_security.cookie.secure: false
EOT
- name: Print Dashboards Config
shell: bash
if: ${{ inputs.with-security == 'true' }}
run: |
cat ./OpenSearch-Dashboards/config/opensearch_dashboards.yml
- name: Bootstrap plugin/OpenSearch-Dashboards
shell: bash
if: ${{ inputs.with-security == 'false' }}
run: |
mkdir -p OpenSearch-Dashboards/plugins
mv index-management-dashboards-plugin OpenSearch-Dashboards/plugins
- name: Bootstrap plugin/OpenSearch-Dashboards
shell: bash
if: ${{ inputs.with-security == 'true' }}
run: |
mkdir -p OpenSearch-Dashboards/plugins
mv index-management-dashboards-plugin OpenSearch-Dashboards/plugins
mv security-dashboards-plugin OpenSearch-Dashboards/plugins
- 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 --single-version=loose
- name: Compile OpenSearch Dashboards
shell: bash
run: |
cd OpenSearch-Dashboards
node scripts/build_opensearch_dashboards_platform_plugins --no-examples --workers=10 --verbose
- name: Run OpenSearch-Dashboards server
shell: bash
run: |
cd OpenSearch-Dashboards
yarn start --no-base-path --no-watch --server.host="0.0.0.0" &
sleep 30
# in main branch, OSD server requires more time to bundle and bootstrap
# timeout 300 bash -c 'while [[ "$(curl -s localhost:5601/api/status | jq -r '.status.overall.state')" != "green" ]]; do sleep 5; done'
# for now just chrome, use matrix to do all browsers later
- name: Cypress tests
uses: cypress-io/github-action@v5
if: ${{ inputs.with-security == 'false' }}
with:
working-directory: OpenSearch-Dashboards/plugins/index-management-dashboards-plugin
command: yarn run cypress run
wait-on: 'http://localhost:5601'
browser: chrome
- name: Cypress tests
uses: cypress-io/github-action@v5
if: ${{ inputs.with-security == 'true' }}
with:
working-directory: OpenSearch-Dashboards/plugins/index-management-dashboards-plugin
command: yarn run cypress run --env SECURITY_ENABLED=true,openSearchUrl=https://localhost:9200,WAIT_FOR_LOADER_BUFFER_MS=500
wait-on: 'http://localhost:5601'
browser: chrome
# Screenshots are only captured on failure, will change this once we do visual regression tests
- uses: actions/upload-artifact@v4
if: failure()
with:
name: cypress-screenshots
path: OpenSearch-Dashboards/plugins/index-management-dashboards-plugin/cypress/screenshots
# Test run video was always captured, so this action uses "always()" condition
- uses: actions/upload-artifact@v4
if: always()
with:
name: cypress-videos
path: OpenSearch-Dashboards/plugins/index-management-dashboards-plugin/cypress/videos