Skip to content

Commit 7941b2b

Browse files
authored
RANGER-5127: Add workflow for RC validation
1 parent a90a77e commit 7941b2b

File tree

1 file changed

+217
-0
lines changed

1 file changed

+217
-0
lines changed

.github/workflows/validate-rc.yaml

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one or more
2+
# contributor license agreements. See the NOTICE file distributed with
3+
# this work for additional information regarding copyright ownership.
4+
# The ASF licenses this file to You under the Apache License, Version 2.0
5+
# (the "License"); you may not use this file except in compliance with
6+
# the License. You may obtain a copy of the License at
7+
#
8+
# http://www.apache.org/licenses/LICENSE-2.0
9+
#
10+
# Unless required by applicable law or agreed to in writing, software
11+
# distributed under the License is distributed on an "AS IS" BASIS,
12+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
# See the License for the specific language governing permissions and
14+
# limitations under the License.
15+
16+
17+
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
18+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
19+
20+
# This workflow uses actions that are not certified by GitHub.
21+
# They are provided by a third-party and are governed by
22+
# separate terms of service, privacy policy, and support
23+
# documentation.
24+
25+
name: Validate Release Candidate
26+
27+
on:
28+
push:
29+
pull_request:
30+
branches: [ "master" ]
31+
32+
env:
33+
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
34+
35+
jobs:
36+
build-8:
37+
runs-on: ubuntu-22.04
38+
timeout-minutes: 60
39+
steps:
40+
- uses: actions/checkout@v4
41+
- name: Cache for maven dependencies
42+
uses: actions/cache@v4
43+
with:
44+
path: |
45+
~/.m2/repository/*/*/*
46+
!~/.m2/repository/org/apache/ranger
47+
key: maven-repo-${{ hashFiles('**/pom.xml') }}
48+
restore-keys: |
49+
maven-repo-
50+
51+
- name: Set up JDK 8
52+
uses: actions/setup-java@v4
53+
with:
54+
java-version: '8'
55+
distribution: 'temurin'
56+
57+
- name: build (8)
58+
run: mvn -T 8 clean verify --no-transfer-progress -B -V
59+
60+
- name: Upload artifacts
61+
uses: actions/upload-artifact@v4
62+
with:
63+
name: target-8
64+
path: target/*
65+
66+
docker-build:
67+
strategy:
68+
fail-fast: false
69+
matrix:
70+
arg: [postgres, mysql, oracle]
71+
needs:
72+
- build-8
73+
runs-on: ubuntu-22.04
74+
timeout-minutes: 30
75+
steps:
76+
- uses: actions/checkout@v4
77+
- name: Download build-8 artifacts
78+
uses: actions/download-artifact@v4
79+
with:
80+
name: target-8
81+
82+
- name: Copy artifacts for docker build
83+
run: |
84+
cp ranger-*.tar.gz dev-support/ranger-docker/dist
85+
cp version dev-support/ranger-docker/dist
86+
87+
- name: Cache downloaded archives
88+
uses: actions/cache@v4
89+
with:
90+
path: dev-support/ranger-docker/downloads
91+
key: ${{ runner.os }}-ranger-downloads-${{ hashFiles('dev-support/ranger-docker/.env') }}
92+
restore-keys: |
93+
${{ runner.os }}-ranger-downloads-
94+
95+
- name: Run download-archives.sh
96+
run: |
97+
cd dev-support/ranger-docker
98+
./download-archives.sh hadoop hive hbase kafka knox ozone
99+
100+
- name: Clean up Docker space
101+
run: docker system prune --all --force --volumes
102+
103+
- name: Build all ranger-service images
104+
run: |
105+
cd dev-support/ranger-docker
106+
docker compose -f docker-compose.ranger-base.yml build
107+
export DOCKER_BUILDKIT=1
108+
export COMPOSE_DOCKER_CLI_BUILD=1
109+
export RANGER_DB_TYPE=${{ matrix.arg }}
110+
docker compose \
111+
-f docker-compose.ranger-${RANGER_DB_TYPE}.yml \
112+
-f docker-compose.ranger.yml \
113+
-f docker-compose.ranger-usersync.yml \
114+
-f docker-compose.ranger-tagsync.yml \
115+
-f docker-compose.ranger-kms.yml \
116+
-f docker-compose.ranger-hadoop.yml \
117+
-f docker-compose.ranger-hbase.yml \
118+
-f docker-compose.ranger-kafka.yml \
119+
-f docker-compose.ranger-hive.yml \
120+
-f docker-compose.ranger-knox.yml \
121+
-f docker-compose.ranger-ozone.yml build
122+
123+
- name: Bring up containers
124+
run: |
125+
cd dev-support/ranger-docker
126+
./scripts/ozone-plugin-docker-setup.sh
127+
export RANGER_DB_TYPE=${{ matrix.arg }}
128+
docker compose \
129+
-f docker-compose.ranger-${RANGER_DB_TYPE}.yml \
130+
-f docker-compose.ranger.yml \
131+
-f docker-compose.ranger-usersync.yml \
132+
-f docker-compose.ranger-tagsync.yml \
133+
-f docker-compose.ranger-kms.yml \
134+
-f docker-compose.ranger-hadoop.yml \
135+
-f docker-compose.ranger-hbase.yml \
136+
-f docker-compose.ranger-kafka.yml \
137+
-f docker-compose.ranger-hive.yml \
138+
-f docker-compose.ranger-knox.yml \
139+
-f docker-compose.ranger-ozone.yml up -d
140+
141+
- name: Check containers are running
142+
run: |
143+
sleep 60
144+
containers=(ranger ranger-zk ranger-solr ranger-${{ matrix.arg }} ranger-usersync ranger-tagsync ranger-kms ranger-hadoop ranger-hbase ranger-kafka ranger-hive ranger-knox ozone-om ozone-scm ozone-datanode);
145+
flag=true;
146+
for container in "${containers[@]}"; do
147+
if [[ $(docker inspect -f '{{.State.Running}}' $container 2>/dev/null) == "true" ]]; then
148+
echo "Container $container is running!";
149+
else
150+
flag=false;
151+
echo "Container $container is NOT running!";
152+
fi
153+
done
154+
echo "CONTAINER_SUCCESS=${flag}" >> $GITHUB_ENV
155+
156+
- name: Check Ranger Services have started
157+
run: |
158+
services=(Usersync Tagsync KMS)
159+
for service in "${services[@]}"; do
160+
service_lower=$(echo "$service" | tr '[:upper:]' '[:lower:]')
161+
docker logs ranger-${service_lower} | grep "Apache Ranger ${service} Service with pid [0-9]* has started"
162+
if [ $? != 0 ]; then
163+
echo "Ranger ${service} service failed to start!";
164+
fi
165+
done
166+
docker logs ranger | grep "Apache Ranger Admin Service with pid [0-9]* has started"
167+
if [ $? != 0 ]; then
168+
echo "Ranger Admin service failed to start!";
169+
fi
170+
171+
- name: Check plugins have been installed
172+
run: |
173+
services=(kms hive hbase kafka knox)
174+
for service in "${services[@]}"; do
175+
docker logs ranger-${service} | grep "Ranger Plugin for ${service} has been enabled"
176+
if [ $? != 0 ]; then
177+
echo "Plugin Installation failure for ${service}";
178+
fi
179+
done
180+
181+
- name: Review ranger service container logs
182+
run: |
183+
docker exec ranger cat /var/log/ranger/ranger-admin-ranger.example.com-ranger.log
184+
docker exec ranger-usersync cat /var/log/ranger/usersync/usersync-ranger-usersync.example.com-.log
185+
docker exec ranger-tagsync cat /var/log/ranger/tagsync/tagsync-ranger-tagsync.example.com-.log
186+
docker exec ranger-kms cat /var/log/ranger/kms/ranger-kms-ranger-kms.example.com-root.log
187+
188+
- name: Run REST API calls
189+
run: |
190+
python3 -m pip install apache-ranger
191+
python3 <<EOF
192+
from apache_ranger.client.ranger_client import *
193+
from apache_ranger.utils import *
194+
from apache_ranger.model.ranger_user_mgmt import *
195+
from apache_ranger.client.ranger_user_mgmt_client import *
196+
ranger_url = 'http://localhost:6080'
197+
ranger_auth = ('admin', 'rangerR0cks!')
198+
ranger = RangerClient(ranger_url, ranger_auth)
199+
user_mgmt = RangerUserMgmtClient(ranger)
200+
# check users in groups
201+
print(user_mgmt.get_users_in_group('hadoop'))
202+
print(user_mgmt.get_users_in_group('ranger'))
203+
print(user_mgmt.get_users_in_group('knox'))
204+
# check all users
205+
print(user_mgmt.find_users())
206+
EOF
207+
208+
- name: Remove containers
209+
run: |
210+
flag=${CONTAINER_SUCCESS}
211+
if [[ $flag == true ]]; then
212+
echo "All required containers are up and running";
213+
docker stop $(docker ps -q) && docker rm $(docker ps -aq);
214+
else
215+
docker stop $(docker ps -q) && docker rm $(docker ps -aq);
216+
exit 1;
217+
fi

0 commit comments

Comments
 (0)