shell git拉去代码并打包

这是一个使用 Shell 脚本进行 Git 操作的示例,包括初始化仓库、拉取指定分支的代码。脚本中还包含了 URL 编码功能,用于处理 Git 认证信息。通过变量赋值设置本地代码路径、Git 仓库地址、用户名和密码,确保安全地克隆远程代码库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/sh

urlEncode() {
  # shellcheck disable=SC2039
  local LANG=C
  # shellcheck disable=SC2039
  local length="${#1}"
  i=0
  while :; do
    # shellcheck disable=SC2015
    [ "$length" -gt $i ] && {
      # shellcheck disable=SC2039
      local c="${1:$i:1}"
      case $c in
      [a-zA-Z0-9.~_-]) printf "$c" ;;
      *) printf '%%%02X' "'$c" ;;
      esac
    } || break
    # shellcheck disable=SC2039
    let i++
  done
}

current_path=$(pwd)

#本地代码位置代码路径
code_path="$current_path/src/xx"
#项目的git地址
gitUsername="xxxxxx@xx.xxx"
gitPassword="xxxxxx"
git_branch="branch"
git_path_access=$(urlEncode $gitUsername):$gitPassword
# git repo 不带 http://
git_repo="xxx/xx/xx.git"
git_path="http://$git_path_access@$git_repo"

if [ ! -d "$code_path" ];then
  echo "dir is not exit, create"
  mkdir -p "$code_path"
fi

cd "$code_path" || exit

git init

git pull "$git_path" $git_branch

cd "$code_path" || exit

mvn clean package -DskipTests

pwd

<think>好的,我需要帮助用户配置Jenkins来实现他们的Uniapp项目从Gitee拉取代码,构建微信小程序,使用miniprogram-ci进行上传。用户需要详细的配置步骤,所以我得一步步拆解。 首先,用户的需求是三个步骤:通过Jenkins拉取Gitee代码、构建微信小程序、使用miniprogram-ci。我得确保每个步骤都有对应的配置说明。 1. **拉取Gitee代码**:用户的项目在Gitee上,所以Jenkins需要配置Gitee插件。可能需要安装Gitee插件,然后在Job中添加源码管理,设置仓库URL、凭证等。需要注意分支的选择,可能默认master或main,或者其他指定分支。 2. **构建微信小程序**:Uniapp项目打包微信小程序需要HBuilderX或者命令行工具。用户可能已经知道如何本地打包,但Jenkins环境需要自动化。需要安装HBuilderX或者使用cli模式。这里可能需要配置构建步骤,比如执行npm install,然后执行打包命令,比如`npm run build:mp-weixin`。需要确保Jenkins服务器上有正确的环境,比如Node.js、HBuilderX等。 3. **使用miniprogram-ci上传**:这部分需要用户提供小程序的AppID、密钥文件,以及配置miniprogram-ci的脚本。可能需要生成上传私钥,在Jenkins中设置凭据来保存这些敏感信息。构建步骤可能需要执行Node.js脚本,调用miniprogram-ci的上传方法。还需要处理版本号和备注,可能通过参数化构建让用户输入。 接下来,我需要考虑各个步骤的详细配置: - **Jenkins环境准备**:确保安装必要的插件,如NodeJS插件、Gitee插件、Credentials插件。可能需要指导用户如何安装这些插件,在全局工具配置中设置Node.js和HBuilderX的路径。 - **创建Jenkins Job**:类型为自由风格,配置Gitee仓库的URL,设置触发器,比如手动触发或者Webhook触发。源码管理部分需要填写仓库地址和凭证,可能需要生成SSH密钥或者使用用户名密码。 - **构建环境**:可能需要选择提供的Node.js环境,确保版本符合项目要求。 - **构建步骤**:执行shell命令,包括安装依赖、HBuilderX的命令行打包。需要注意HBuilderX的路径是否正确,以及项目路径是否在Workspace中。 - **miniprogram-ci配置**:用户需要在小程序后台下载私钥,在项目中创建ci.js脚本,引用私钥路径。Jenkins中可能需要将私钥文件放在工作目录中,或者通过凭据管理来获取。可能需要指导用户如何编写ci.js,处理参数传递,比如版本号和备注。 可能遇到的坑: - **路径问题**:Jenkins的工作空间路径是否正确,HBuilderX的安装路径是否在环境变量中,或者是否需要绝对路径。 - **权限问题**:Jenkins是否有权限访问Gitee仓库,是否需要配置SSH密钥或者Access Token。 - **敏感信息管理**:私钥文件和AppID需要安全存储,不能硬编码在脚本中。可能需要使用Jenkins的Credentials绑定,或者通过环境变量传入。 - **miniprogram-ci的依赖安装**:确保在构建步骤中安装了miniprogram-ci包,可能需要npm install miniprogram-ci --save-dev。 - **构建后的清理**:是否需要归档产物或者清理工作空间。 需要详细写出每个步骤,包括插件安装、Job配置、脚本示例,以及注意事项。比如,在Gitee插件配置中,可能需要设置Webhook URL,以便代码推送时自动触发构建。同时,参数化构建可以让用户每次手动输入版本号和备注,增加灵活性。 总结下来,回答的结构应该是: 1. 环境准备,安装必要插件和工具。 2. 创建Jenkins Job,配置源码管理和构建触发器。 3. 配置构建环境,如Node.js。 4. 编写构建脚本,处理依赖安装和打包。 5. 配置miniprogram-ci的上传脚本,处理凭据和参数。 6. 可能的注意事项和常见问题。 需要确保步骤清晰,命令准确,用户能一步步跟着配置。同时,给出示例脚本和配置截图会有帮助,但文本中需要描述清楚。比如,ci.js的代码示例,Jenkins的Shell命令等。</think>使用 Jenkins 自动化部署 UniApp 微信小程序的详细配置流程,涵盖 **代码拉取、构建、miniprogram-ci 上传** 三个核心步骤: -- ### 一、环境准备 1. **Jenkins 插件安装** - Gitee Plugin(用于拉取代码) - NodeJS Plugin(用于管理 Node.js 环境) - Credentials Plugin(管理敏感信息如小程序密钥) 2. **全局工具配置** - **Node.js**:进入 `Jenkins 管理 -> 全局工具配置`,添加 Node.js 版本(建议 16+)。 - **HBuilderX**(可选):若项目依赖 HBuilderX CLI,需在 Jenkins 服务器安装配置环境变量。 3. **小程序 CI 密钥** - 登录[微信公众平台](https://mp.weixin.qq.com/),进入`开发 -> 开发管理 -> 开发设置`,下载代码上传**私有密钥**(如 private.key)。 --- ### 二、创建 Jenkins Job 1. **新建任务** - 类型选择 **自由风格项目**,命名如 `UniApp-WeChat-Deploy`。 2. **源码管理** - 选择 **Git**,填写仓库 URL(如 `https://gitee.com/yourname/your-repo.git`)。 - 添加 Gitee 账号凭证(用户名/密码或 SSH 密钥)。 - 指定分支(如 `*/master`)。 3. **构建触发器**(可选) - 如需自动触发,可使用 **Gitee Webhook**,配置 Gitee 仓库的 Webhook URL(需公网可访问的 Jenkins)。 --- ### 三、构建配置 1. **构建环境** - 勾选 `Provide Node & npm bin/ folder to PATH`,选择已配置的 Node.js 版本。 2. **构建步骤** - **步骤1:安装依赖** ```bash npm install ``` - **步骤2:构建 UniApp 到微信平台** ```bash # 使用 HBuilderX CLI(需提前安装) /path/to/HBuilderX/cli package --platform mp-weixin --project 项目名称 -o dist # 或使用 npm 脚本(若 package.json 已配置) npm run build:mp-weixin ``` 3. **步骤3:使用 miniprogram-ci 上传** - 创建 Jenkins 凭据保存 `private.key`: - 类型选 `Secret file`,上传密钥文件,ID 设为 `WX_PRIVATE_KEY`。 - 添加构建步骤 **Execute NodeJS script**: ```javascript const ci = require('miniprogram-ci'); const path = require('path'); const projectPath = path.join(process.env.WORKSPACE, 'dist/build/mp-weixin'); // UniApp 输出路径 const privateKeyPath = process.env.WX_PRIVATE_KEY; // 从凭注获取密钥路径 const project = new ci.Project({ appid: 'wx1234567890abcdef', // 替换为你的 AppID type: 'miniProgram', projectPath: projectPath, privateKeyPath: privateKeyPath, ignores: ['node_modules/**/*'], }); ci.upload({ project, version: process.env.VERSION || '1.0.0', // 通过参数传入版本 desc: process.env.DESC || 'Jenkins自动构建', // 通过参数传入描述 setting: { es6: true, minify: true, }, }).then(res => { console.log('上传成功:', res); }).catch(err => { console.error('上传失败:', err); process.exit(1); }); ``` --- ### 四、参数化构建(可选) 1. 在 Job 配置中勾选 **参数化构建**,添加: - **字符串参数** `VERSION`(默认值 1.0.0) - **字符串参数** `DESC`(默认值 Jenkins自动构建) 2. 修改上传脚本中的 `version` 和 `desc` 为参数变量: ```javascript version: process.env.VERSION, desc: process.env.DESC, ``` --- ### 五、注意事项 1. **路径对齐** - 确保 `projectPath` 与实际构建输出目录一致(UniApp 默认输出到 `dist/build/mp-weixin`)。 2. **密钥权限** - 确保 Jenkins 用户有权限读取 `private.key` 文件(可通过 `chmod 600 private.key` 设置)。 3. **错误处理** - 在 Shell 脚本中添加 `set -e` 确保出错时停止构建。 4. **构建缓存** - 可定期清理 `node_modules` 和 `dist` 目录,或在构建前添加 `npm clean` 步骤。 --- ### 六、完整 Jenkinsfile 示例(Pipeline 风格) ```groovy pipeline { agent any environment { WX_APPID = 'wx1234567890abcdef' WX_PRIVATE_KEY = credentials('WX_PRIVATE_KEY') } stages { stage('拉取代码') { steps { git url: 'https://gitee.com/yourname/your-repo.git', branch: 'master' } } stage('安装依赖') { steps { sh 'npm install' } } stage('构建微信小程序') { steps { sh 'npm run build:mp-weixin' } } stage('上传代码') { steps { nodejs(configId: 'NodeJS-16') { sh ''' node ci-upload.js --version ${VERSION} --desc "${DESC}" ''' } } } } parameters { string(name: 'VERSION', defaultValue: '1.0.0', description: '小程序版本号') string(name: 'DESC', defaultValue: 'Jenkins自动构建', description: '版本描述') } } ``` --- 通过以上配置,即可实现从代码拉取到自动上传微信小程序的完整 CI/CD 流程。根据实际项目结构调整路径和参数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值