Squashed commit message
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
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
This commit is contained in:
157
scripts/ci/build.sh
Executable file
157
scripts/ci/build.sh
Executable file
@@ -0,0 +1,157 @@
|
||||
#!/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!"
|
||||
37
scripts/ci/create-phar.php
Normal file
37
scripts/ci/create-phar.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
$sourcePath = $argv[1] ?? null;
|
||||
$pharFile = $argv[2] ?? null;
|
||||
|
||||
if (! $sourcePath) {
|
||||
throw new InvalidArgumentException('Source path must be provided');
|
||||
}
|
||||
|
||||
if (! $pharFile) {
|
||||
throw new InvalidArgumentException('Phar file must be provided');
|
||||
}
|
||||
|
||||
// Remove old file if exists
|
||||
if (file_exists($pharFile)) {
|
||||
unlink($pharFile);
|
||||
}
|
||||
|
||||
// Create new Phar archive
|
||||
$phar = new Phar($pharFile);
|
||||
|
||||
// Start buffering
|
||||
$phar->startBuffering();
|
||||
|
||||
// Add files from source directory
|
||||
|
||||
$phar->buildFromDirectory($sourcePath);
|
||||
|
||||
// (Optional) Set stub file — main entry point
|
||||
// $phar->setStub($phar->createDefaultStub('index.php'));
|
||||
|
||||
$phar->compressFiles(Phar::GZ);
|
||||
|
||||
// Stop buffering and write
|
||||
$phar->stopBuffering();
|
||||
|
||||
echo "Phar created: $pharFile\n";
|
||||
17
scripts/ci/extract-phar.php
Normal file
17
scripts/ci/extract-phar.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
$pharFile = $argv[1] ?? null;
|
||||
$dstPath = $argv[2] ?? null;
|
||||
|
||||
if (! $dstPath) {
|
||||
throw new InvalidArgumentException('Dst path must be provided');
|
||||
}
|
||||
|
||||
if (! $pharFile) {
|
||||
throw new InvalidArgumentException('Phar file must be provided');
|
||||
}
|
||||
|
||||
$phar = new Phar($pharFile);
|
||||
$phar->extractTo($dstPath);
|
||||
|
||||
echo "Phar extracted: $pharFile\n";
|
||||
Reference in New Issue
Block a user