Some checks are pending
Telegram Mini App Shop Builder / Compute version metadata (push) Waiting to run
Telegram Mini App Shop Builder / Run Frontend tests (push) Waiting to run
Telegram Mini App Shop Builder / Run Backend tests (push) Waiting to run
Telegram Mini App Shop Builder / Run PHP_CodeSniffer (push) Waiting to run
Telegram Mini App Shop Builder / Build module. (push) Blocked by required conditions
Telegram Mini App Shop Builder / release (push) Blocked by required conditions
157 lines
5.1 KiB
Bash
Executable File
157 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
set -e
|
||
|
||
MODULE_NAME="acmeshop"
|
||
CURRENT_DIR="$(dirname "$0")"
|
||
|
||
echo "Current dir: ${CURRENT_DIR}"
|
||
composer --version
|
||
node --version
|
||
php -v
|
||
|
||
SRC_PATH="$1"
|
||
BUILD_PATH="${GITHUB_WORKSPACE}/build"
|
||
|
||
mkdir -p "$BUILD_PATH"
|
||
|
||
echo "🔨 Starting build process..."
|
||
echo "ℹ️ Source path: ${SRC_PATH}"
|
||
echo "ℹ️ Build path: ${BUILD_PATH}"
|
||
|
||
if [ -z "$BUILD_PATH" ]; then
|
||
echo "❌ Error: BUILD_PATH is required"
|
||
exit 1
|
||
fi
|
||
|
||
if [ -z "$SRC_PATH" ]; then
|
||
echo "❌ Error: SRC_PATH is required"
|
||
exit 1
|
||
fi
|
||
|
||
echo "Build Megapay SPA Frontend..."
|
||
cd "${SRC_PATH}/frontend/spa"
|
||
npm install
|
||
npm run build
|
||
|
||
echo "Move manifest file"
|
||
cp "${SRC_PATH}/module/acmeshop/upload/image/catalog/tgshopspa/.vite/manifest.json" "${SRC_PATH}/module/acmeshop/upload/image/catalog/tgshopspa/manifest.json"
|
||
rm -rf "${SRC_PATH}/module/acmeshop/upload/image/catalog/tgshopspa/.vite"
|
||
|
||
echo "Build Admin Frontend"
|
||
cd "${SRC_PATH}/frontend/admin"
|
||
npm install
|
||
npm run build
|
||
|
||
echo "Calculate MD5 hash sum"
|
||
cd ../../module/acmeshop/upload/admin/view/javascript/acmeshop
|
||
FILES=("acmeshop.css" "acmeshop.js")
|
||
HASH=$(cat "${FILES[@]}" | md5sum | awk '{print $1}')
|
||
OUTPUT="checksum.hash"
|
||
echo "$HASH" > "$OUTPUT"
|
||
echo "Checksum in $OUTPUT: $HASH"
|
||
|
||
cd "$SRC_PATH"
|
||
|
||
echo "Cleanup frontend"
|
||
rm -fv module/acmeshop/upload/image/catalog/tgshopspa/vite.svg
|
||
rm -fv module/acmeshop/upload/image/catalog/tgshopspa/assets/*.map
|
||
rm -fv module/acmeshop/upload/admin/view/integration.js
|
||
rm -fv module/acmeshop/upload/admin/view/javascript/acmeshop/acmeshop.js.map
|
||
rm -fv module/acmeshop/upload/admin/view/javascript/acmeshop/favicon.ico
|
||
|
||
echo "Install Composer dependencies."
|
||
cd "${SRC_PATH}/module/acmeshop/upload/acmeshop"
|
||
composer install \
|
||
--prefer-dist \
|
||
--no-dev \
|
||
--optimize-autoloader \
|
||
--no-interaction \
|
||
--no-cache
|
||
|
||
cd "$SRC_PATH"
|
||
|
||
echo "Copy .env for production"
|
||
cp "${SRC_PATH}/module/acmeshop/upload/acmeshop/.env.production" \
|
||
"${SRC_PATH}/module/acmeshop/upload/acmeshop/.env"
|
||
|
||
# PHP Obfuscation
|
||
# Temporary disabled
|
||
#echo "Install PHP Obfuscation lib"
|
||
#cd "${GITHUB_WORKSPACE}"
|
||
#echo "Download yakpro-po"
|
||
#wget https://github.com/pk-fr/yakpro-po/archive/refs/heads/master.zip
|
||
#unzip -oq "master.zip"
|
||
#rm master.zip
|
||
#cd "${GITHUB_WORKSPACE}/yakpro-po-master"
|
||
#echo "Download PHP-Parser"
|
||
#wget https://github.com/nikic/PHP-Parser/archive/refs/heads/4.x.zip -O parser.zip
|
||
#unzip -oq "parser.zip"
|
||
#mv PHP-Parser-4.x PHP-Parser
|
||
#chmod a+x "${GITHUB_WORKSPACE}/yakpro-po-master/yakpro-po.php"
|
||
#
|
||
#echo "Version 4.19.4 (2024-09-29)" >> "${GITHUB_WORKSPACE}/yakpro-po-master/PHP-Parser/CHANGELOG.md"
|
||
#
|
||
#echo "PHP Obfuscation: framework"
|
||
#php "${GITHUB_WORKSPACE}/yakpro-po-master/yakpro-po.php" --silent --config-file \
|
||
# "${SRC_PATH}/docker/config.php" \
|
||
# "${SRC_PATH}/module/acmeshop/upload/acmeshop/framework" \
|
||
# -o /tmp/obfuscated
|
||
#rm -rf "${SRC_PATH}/module/acmeshop/upload/acmeshop/framework"
|
||
#mv /tmp/obfuscated/yakpro-po/obfuscated "${SRC_PATH}/module/acmeshop/upload/acmeshop/framework"
|
||
#
|
||
#echo "PHP Obfuscation: src"
|
||
#php "${GITHUB_WORKSPACE}/yakpro-po-master/yakpro-po.php" --silent --config-file \
|
||
# "${SRC_PATH}/docker/config.php" \
|
||
# "${SRC_PATH}/module/acmeshop/upload/acmeshop/src" \
|
||
# -o /tmp/obfuscated
|
||
#rm -rf "${SRC_PATH}/module/acmeshop/upload/acmeshop/src"
|
||
#mv /tmp/obfuscated/yakpro-po/obfuscated "${SRC_PATH}/module/acmeshop/upload/acmeshop/src"
|
||
#
|
||
#echo "PHP Obfuscation: bastion"
|
||
#php "${GITHUB_WORKSPACE}/yakpro-po-master/yakpro-po.php" --silent --config-file \
|
||
# "${SRC_PATH}/docker/config.php" \
|
||
# "${SRC_PATH}/module/acmeshop/upload/acmeshop/bastion" \
|
||
# -o /tmp/obfuscated
|
||
#rm -rf "${SRC_PATH}/module/acmeshop/upload/acmeshop/bastion"
|
||
#mv /tmp/obfuscated/yakpro-po/obfuscated "${SRC_PATH}/module/acmeshop/upload/acmeshop/bastion"
|
||
|
||
cd "$SRC_PATH"
|
||
|
||
echo "📜 Creating Phar archive..."
|
||
rm -rf \
|
||
"${SRC_PATH}/module/acmeshop/upload/acmeshop/tests" \
|
||
"${SRC_PATH}/module/acmeshop/upload/acmeshop/phpunit.xml" \
|
||
"${SRC_PATH}/module/acmeshop/upload/acmeshop/psalm.xml" \
|
||
"${SRC_PATH}/module/acmeshop/upload/acmeshop/psalm-classes.php" \
|
||
"${SRC_PATH}/module/acmeshop/upload/acmeshop/psalm-stubs.php"
|
||
|
||
php -d phar.readonly=0 scripts/ci/create-phar.php "${SRC_PATH}/module/acmeshop/upload/acmeshop" "${MODULE_NAME}.phar"
|
||
|
||
echo "📦 Packaging into .ocmod.zip..."
|
||
mkdir -p "${SRC_PATH}/module/acmeshop/upload/system/library/acmeshop"
|
||
mv "${MODULE_NAME}.phar" "${SRC_PATH}/module/acmeshop/upload/system/library/acmeshop"
|
||
mv "${SRC_PATH}/module/acmeshop/upload/cli.php" "${SRC_PATH}/module/acmeshop/upload/system/library/acmeshop"
|
||
chmod +x "${SRC_PATH}/module/acmeshop/upload/system/library/acmeshop/cli.php"
|
||
|
||
rm -rf \
|
||
"${SRC_PATH}/module/acmeshop/upload/acmeshop"
|
||
|
||
cd "${SRC_PATH}/module/acmeshop/"
|
||
echo "List files"
|
||
ls -la ./upload
|
||
zip -rqq "${MODULE_NAME}.ocmod.zip" .
|
||
mv "${MODULE_NAME}.ocmod.zip" "${BUILD_PATH}"
|
||
|
||
FINAL_FILE="${BUILD_PATH}/${MODULE_NAME}.ocmod.zip"
|
||
|
||
if [ -f "$FINAL_FILE" ]; then
|
||
FILE_SIZE=$(du -h "$FINAL_FILE" | cut -f1)
|
||
echo -e "✅ Build completed successfully!"
|
||
echo -e "🎉 Created: $FINAL_FILE ($FILE_SIZE)"
|
||
else
|
||
echo "❌ Error: Final build file not found: $FINAL_FILE"
|
||
exit 1
|
||
fi
|
||
|
||
echo -e "🎯 Build artifact ready for installation!" |