feat: finalize projectwork CI jobs, docs and test integration
This commit is contained in:
@@ -22,6 +22,7 @@ pipeline {
|
||||
steps {
|
||||
sh '''
|
||||
set -eux
|
||||
git config --global --add safe.directory '*' || true
|
||||
rm -rf ./project
|
||||
git clone "${MOBILE_REPO_URL}" ./project
|
||||
git -C ./project checkout "${MOBILE_REPO_REF}"
|
||||
@@ -68,8 +69,8 @@ pipeline {
|
||||
dir('project') {
|
||||
sh '''
|
||||
set -eux
|
||||
HW8_ROOT_PATH="${HW8_ROOT:-/workspace/hw8}"
|
||||
COMPOSE_FILE="${HW8_ROOT_PATH}/config/compose/mobile-ci.compose.yml"
|
||||
PROJECT_ROOT_PATH="${OTUS_WORKSPACE_ROOT:-/workspace/projectwork}"
|
||||
COMPOSE_FILE="${PROJECT_ROOT_PATH}/config/compose/mobile-ci.compose.yml"
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
compose_cmd() { PROJECT_DIR="$PWD" docker compose -f "${COMPOSE_FILE}" "$@"; }
|
||||
elif docker-compose version >/dev/null 2>&1; then
|
||||
@@ -96,6 +97,42 @@ pipeline {
|
||||
|
||||
compose_cmd down -v --remove-orphans || true
|
||||
compose_cmd up -d ${SERVICES}
|
||||
WIREMOCK_CID="$(compose_cmd ps -q wiremock)"
|
||||
if [ -z "${WIREMOCK_CID}" ]; then
|
||||
echo "Wiremock container is not found"
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -f "./wiremock/mappings/wishlist-apk.json" ] || [ ! -f "./wiremock/__files/wishlist.apk" ]; then
|
||||
echo "Missing wiremock APK assets in repository checkout: ./wiremock/mappings/wishlist-apk.json or ./wiremock/__files/wishlist.apk"
|
||||
exit 1
|
||||
fi
|
||||
docker exec "${WIREMOCK_CID}" sh -lc 'rm -rf /home/wiremock/mappings /home/wiremock/__files && mkdir -p /home/wiremock/mappings /home/wiremock/__files'
|
||||
tar -C ./wiremock -cf - . | docker exec -i "${WIREMOCK_CID}" sh -lc 'tar -C /home/wiremock -xf -'
|
||||
docker restart "${WIREMOCK_CID}"
|
||||
for i in $(seq 1 30); do
|
||||
status="$(docker inspect -f '{{if .State.Health}}{{.State.Health.Status}}{{else}}starting{{end}}' "${WIREMOCK_CID}" || true)"
|
||||
if [ "${status}" = "healthy" ]; then
|
||||
break
|
||||
fi
|
||||
if [ "${i}" -eq 30 ]; then
|
||||
echo "Wiremock is not healthy after reload"
|
||||
docker logs "${WIREMOCK_CID}" || true
|
||||
exit 1
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
if echo "${APP_URL}" | grep -Eq 'https?://wiremock:8080'; then
|
||||
APK_PATH="$(echo "${APP_URL}" | sed -E 's#https?://[^/]+##')"
|
||||
if [ -z "${APK_PATH}" ]; then
|
||||
APK_PATH="/wishlist.apk"
|
||||
fi
|
||||
if ! docker exec "${WIREMOCK_CID}" sh -lc "wget -qO- \"http://127.0.0.1:8080${APK_PATH}\" >/dev/null"; then
|
||||
echo "Wiremock can't serve APK path ${APK_PATH}"
|
||||
docker exec "${WIREMOCK_CID}" sh -lc 'ls -la /home/wiremock /home/wiremock/mappings /home/wiremock/__files' || true
|
||||
docker logs "${WIREMOCK_CID}" || true
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
EMULATORS=""
|
||||
SELECTED=0
|
||||
for service in android-emulator-1 android-emulator-2; do
|
||||
@@ -205,6 +242,39 @@ pipeline {
|
||||
done
|
||||
exit 1
|
||||
fi
|
||||
if echo "${APP_URL}" | grep -Eq 'https?://wiremock:8080'; then
|
||||
APK_PATH="$(echo "${APP_URL}" | sed -E 's#https?://[^/]+##')"
|
||||
if [ -z "${APK_PATH}" ]; then
|
||||
APK_PATH="/wishlist.apk"
|
||||
fi
|
||||
OLD_IFS="${IFS}"
|
||||
IFS=','
|
||||
for target in ${MOBILE_EMULATORS_VALUE}; do
|
||||
service_name="$(echo "${target}" | cut -d'|' -f1)"
|
||||
if [ -z "${service_name}" ]; then
|
||||
continue
|
||||
fi
|
||||
emu_cid="$(docker ps -q --filter "name=mobileci-${service_name}" | head -n1 || true)"
|
||||
if [ -z "${emu_cid}" ]; then
|
||||
echo "Emulator container not found for service ${service_name}"
|
||||
exit 1
|
||||
fi
|
||||
ready="false"
|
||||
for i in $(seq 1 30); do
|
||||
if docker exec "${emu_cid}" sh -lc "wget -qO- \"http://wiremock:8080${APK_PATH}\" >/dev/null"; then
|
||||
ready="true"
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
if [ "${ready}" != "true" ]; then
|
||||
echo "APK URL is not reachable from ${service_name}: ${APP_URL}"
|
||||
docker logs --tail 200 "${emu_cid}" || true
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
IFS="${OLD_IFS}"
|
||||
fi
|
||||
|
||||
run_single_class() {
|
||||
class_name="$1"
|
||||
@@ -410,8 +480,8 @@ EOF
|
||||
dir('project') {
|
||||
sh '''
|
||||
set +e
|
||||
HW8_ROOT_PATH="${HW8_ROOT:-/workspace/hw8}"
|
||||
COMPOSE_FILE="${HW8_ROOT_PATH}/config/compose/mobile-ci.compose.yml"
|
||||
PROJECT_ROOT_PATH="${OTUS_WORKSPACE_ROOT:-/workspace/projectwork}"
|
||||
COMPOSE_FILE="${PROJECT_ROOT_PATH}/config/compose/mobile-ci.compose.yml"
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
compose_cmd() { PROJECT_DIR="$PWD" docker compose -f "${COMPOSE_FILE}" "$@"; }
|
||||
elif docker-compose version >/dev/null 2>&1; then
|
||||
|
||||
Reference in New Issue
Block a user