代码拉取完成,页面将自动刷新
同步操作将从 openKylin/kylin-code 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#!/bin/bash
# 脚本名称:build.sh
# 描述:快速构建deb脚本,用于解析参数、调用命令和显示帮助。
# 作者:wangpenglong
# 创建日期:2024年05月10日
# 开启调试模式,显示脚本执行过程 -x;
# 开启错误处理,脚本执行出错时退出 -e;
# set -ex
set -e
VERSION="1.0.0"
AUTHOR="wangpenglong"
DATE="2024年05月10日"
# 帮助信息
help_info() {
echo "使用方法:$0 [选项]"
echo " -h, --help 显示帮助信息"
echo " -v, --version 显示脚本版本信息"
echo " -c, --clean 清空构建的文件"
echo " -r, --replace_url 替换url为内网url"
echo " -b, --build 构建软件包"
}
# 版本信息
version_info() {
echo "脚本版本:${VERSION}"
echo "作者:${AUTHOR}"
echo "创建日期:${DATE}"
}
#添加参数clean,清理编译出的所有内容
function clean() {
git clean -fdx -e '*.deb' -e '*.rpm' #清除新建or添加的文件
rm -rf ../VSCode-linux-*
# git reset --hard #清除修改的文件
}
#替换url为内网url
function replace_url() {
#修改yarn.lock中地址
NPM_URL='https://registry.yarnpkg.com'
NPM_LOCAL_SEVER="http://kylinos.zz.gitea.com:3000"
for i in $(find -name yarn.lock); do
sed -i "s#${NPM_URL}#${NPM_LOCAL_SEVER}#g" $i
done
#替换calculate-deps.ts中地址
calculate_deps_files=("build/linux/debian/calculate-deps.ts" "build/linux/debian/calculate-deps.js")
dpkgShlibdepsUrl="https://raw.githubusercontent.com/chromium"
dpkgShlibdepsUrl_local="http://127.0.0.1:9099"
for calculate_deps_file in ${calculate_deps_files[@]}; do
echo "替换${calculate_deps_file}中的地址"
sed -i "s#${dpkgShlibdepsUrl}#${dpkgShlibdepsUrl_local}#g" ${calculate_deps_file}
sed -i "s/\/third_party//" ${calculate_deps_file}
done
install_sysroot_files=("build/linux/debian/install-sysroot.ts" "build/linux/debian/install-sysroot.js")
URL_PREFIX="https://msftelectron.blob.core.windows.net"
URL_PREFIX_local="http://127.0.0.1:9099"
sysrootJSONUrl="https://raw.githubusercontent.com/electron"
sysrootJSONUrl_local="http://127.0.0.1:9099/sysroots"
for install_sysroot_file in ${install_sysroot_files[@]}; do
echo "替换${install_sysroot_file}中的地址"
sed -i "s#${URL_PREFIX}#${URL_PREFIX_local}#g" ${install_sysroot_file}
sed -i "s#${sysrootJSONUrl}#${sysrootJSONUrl_local}#g" ${install_sysroot_file}
sed -i "s/https/http/g" ${install_sysroot_file}
done
echo "electron_mirror=http://127.0.0.1:9099/electron/" > .npmrc
ELECTRON_URL="https://electronjs.org"
sed -i "s#${ELECTRON_URL}#${URL_PREFIX_local}#g" .yarnrc
echo "[done] replace local url end."
}
function build(){
#start build
echo "[start] build start."
set -ex
#设置环境变量,构建软件包时,可不下载 electron二进制和 playwright browser包
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
#CHILD_CONCURRENCY 控制并行运行以构建节点模块的子进程的数量。
#将此数字设置为 1 将导致节点模块按顺序构建,这可以避免使用 node-gyp 的 Windows 上的链接器错误。
# CHILD_CONCURRENCY=1 yarn --frozen-lockfile --check-files --network-timeout 180000
# yarn --frozen-lockfile --check-files --network-timeout 180000
yarn
#关闭telemetry,node_modules也会有地址
./close_telemetry.sh
#检查
yarn monaco-compile-check
yarn valid-layers-check
#编译
yarn gulp compile-build
yarn gulp compile-extension-media
yarn gulp compile-extensions-build
#压缩代码
yarn gulp minify-vscode
yarn gulp "vscode-linux-x64-min-ci" #this will download electron,need change code.
#打包
yarn gulp "vscode-linux-x64-build-deb"
cp .build/linux/deb/*/deb/*.deb .
echo "[done] build end."
}
# 解析参数
parse_args() {
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-h|--help)
help_info
exit 0
;;
-v|--version)
version_info
exit 0
;;
-c|--clean)
clean
exit 0
;;
-r|--replace_url)
replace_url
exit 0
;;
-b|--build)
build
exit 0
;;
*)
echo "未知选项:$1"
help_info
exit 1
;;
esac
shift
done
# 没有选项时,显示帮助信息
if [ $# -eq 0 ]; then
help_info
exit 1
fi
}
# 主函数
main() {
parse_args "$@"
}
# 调用主函数
main "$@"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。