添加 Others/release-it做私服版本控制.md
This commit is contained in:
parent
62b4ddc9b6
commit
8b7959dc65
1 changed files with 190 additions and 0 deletions
190
Others/release-it做私服版本控制.md
Normal file
190
Others/release-it做私服版本控制.md
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
## 背景介绍
|
||||||
|
公司项目抽取出来的公共组件,用于项目的快速开发。但是因各项目使用的组件版本不同,需要做版本管理。
|
||||||
|
|
||||||
|
## 需求分析
|
||||||
|
### 功能需求
|
||||||
|
1、每次提交代码,自动构建
|
||||||
|
2、自动发布到nexus私服
|
||||||
|
3、git repository中自动添加tag(tag自动递增)
|
||||||
|
4、自动生成changelog
|
||||||
|
|
||||||
|
### 工具选择
|
||||||
|
jenkins结合release-it(js编写的工具)可以满足以上所有需求。
|
||||||
|
|
||||||
|
## 实现方案
|
||||||
|
### 1.开发支持
|
||||||
|
#### 1-1.安装nodejs
|
||||||
|
```shell
|
||||||
|
# 下载nodejs
|
||||||
|
# 下载地址:https://nodejs.org/dist/v21.2.0/node-v21.2.0-linux-x64.tar.xz
|
||||||
|
# 解压
|
||||||
|
tar -xvf node-v21.2.0-linux-x64.tar.xz
|
||||||
|
# 移动到指定目录
|
||||||
|
mv node-v21.2.0-linux-x64 /usr/local/
|
||||||
|
# 配置环境变量,以linux系统为例
|
||||||
|
export NODE_HOME=/usr/local/node-v21.2.0-linux-x64/bin/node
|
||||||
|
export PATH=$PATH:$NODE_HOME
|
||||||
|
# 验证是否安装成功
|
||||||
|
node -v
|
||||||
|
```
|
||||||
|
#### 1-2.初始化并安装release-it
|
||||||
|
```shell
|
||||||
|
# 在项目目录中初始化
|
||||||
|
npm init -y
|
||||||
|
# 全局安装release-it
|
||||||
|
npm install -g release-it
|
||||||
|
npm install -g @release-it/conventional-changelog
|
||||||
|
# 验证是否安装成功
|
||||||
|
release-it -V
|
||||||
|
```
|
||||||
|
#### 1-3.创建配置文件
|
||||||
|
```shell
|
||||||
|
# 项目根目录下创建.release-it.json文件
|
||||||
|
# 参照https://raw.githubusercontent.com/release-it/release-it/main/config/release-it.json
|
||||||
|
cat > .release-it.json << EOF
|
||||||
|
{
|
||||||
|
"git": {
|
||||||
|
"requireBranch": false,
|
||||||
|
"commitMessage": "release: v${version} [ci-skip]"
|
||||||
|
},
|
||||||
|
"npm": {
|
||||||
|
"publish": false
|
||||||
|
},
|
||||||
|
"hooks": {
|
||||||
|
"after:bump": "echo 更新版本成功,版本: v${version}",
|
||||||
|
"after:git:release": "npm run publish",
|
||||||
|
"after:release": "echo Successfully released ${name} v${version} to ${repo.repository}."
|
||||||
|
},
|
||||||
|
"plugins": {
|
||||||
|
"@release-it/conventional-changelog": {
|
||||||
|
"preset": "angular",
|
||||||
|
"infile": "CHANGELOG.md"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
# 修改package.json文件
|
||||||
|
cat > package.json << EOF
|
||||||
|
{
|
||||||
|
"name": "echo-plugins",
|
||||||
|
"group": "com.turingsyn.framework.plugin",
|
||||||
|
"version": "1.1.30",
|
||||||
|
"description": "plugins",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "gradlew check",
|
||||||
|
"clean": "gradlew clean",
|
||||||
|
"publish": "sh gradlew clean build publish",
|
||||||
|
"release": "release-it"
|
||||||
|
},
|
||||||
|
"author": "turingsyc",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"@release-it/conventional-changelog": "^8.0.1",
|
||||||
|
"release-it": "^17.0.0"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://gitee.com/turningsyn/echo-libs.git"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
# 添加nexus私服链接及认证信息
|
||||||
|
cat >> gradle.properties << EOF
|
||||||
|
# nexus私服链接
|
||||||
|
NEXUS_URL=http://nexus-server-svc:8081
|
||||||
|
# nexus私服认证信息
|
||||||
|
NEXUS_USERNAME=admin
|
||||||
|
NEXUS_PASSWORD=admin
|
||||||
|
EOF
|
||||||
|
# build.gradle添加如下配置
|
||||||
|
cat > build.gradle << EOF
|
||||||
|
allprojects {
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
credentials {
|
||||||
|
username = NEXUS_USERNAME
|
||||||
|
password = NEXUS_PASSWORD
|
||||||
|
}
|
||||||
|
allowInsecureProtocol true
|
||||||
|
url "${NEXUS_URL}/repository/maven-public/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
**以下以gitee为例配置**
|
||||||
|
### 2.生成公私钥
|
||||||
|
使用如下命令生成公私钥。
|
||||||
|
```shell
|
||||||
|
# 一直回车即可生成无密码的公私钥。
|
||||||
|
# 公私钥一般生成在用户家目录下的.ssh目录,私钥为id_ed25519,公钥为id_ed25519.pub,
|
||||||
|
# windows系统在C:\Users\用户名\.ssh\
|
||||||
|
ssh-keygen -t ed25519 -C "gitee"
|
||||||
|
```
|
||||||
|
### 3.gitee配置SSH公钥
|
||||||
|
移动鼠标至用户名,在下拉框中选择[设置],[安全设置]下的[SSH公钥],自定义公钥名称,把公钥内容粘贴到[公钥]中,点击[确定]。
|
||||||
|
使用如下命令测试是否配置成功。
|
||||||
|
```shell
|
||||||
|
ssh -T git@gitee.com
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4.安装配置jenkins
|
||||||
|
安装,略。安装相应插件。因需要自动构建,因此需要安装对应代码仓库的plugin。
|
||||||
|
如gitlab需要安装gitlab plugin,gitee需要安装gitee plugin等。
|
||||||
|
|
||||||
|
#### 4-1.全局安全配置
|
||||||
|
在[系统管理],[安全]配置下,选择[全局安全配置],在[Git Host Key Verification Configuration]下的[Host Key Verification Strategy]选择[Manually provided keys],在[Approved Host Keys]中填写.ssh/known_hosts文件的内容,点击[保存]。
|
||||||
|
#### 4-2.凭证管理
|
||||||
|
##### 4-2-1.添加源码管理凭证
|
||||||
|
在[全局凭证]中添加类型为[SSH Username with private key]的凭证,凭证ID为[gitee],用户名为gitee的用户名,私钥为.ssh/id_ed25519,点击[创建]。
|
||||||
|
##### 4-2-2.添加用于release-it拉取/推送的凭证
|
||||||
|
在[全局凭证]中添加类型为[Secret file]的凭证,凭证ID为[giteePrivate],file为.ssh/id_ed25519,点击[创建]。
|
||||||
|
##### 4-2-3.添加gitee用户名凭证
|
||||||
|
在[全局凭证]中添加类型为[Secret text]的凭证,凭证ID为[giteeUsername],value为gitee的用户名,点击[创建]。
|
||||||
|
##### 4-2-4.添加gitee邮箱凭证
|
||||||
|
在[全局凭证]中添加类型为[Secret text]的凭证,凭证ID为[giteeEmail],value为gitee的邮箱,点击[创建]。
|
||||||
|
|
||||||
|
#### 4-2.新建自由风格job
|
||||||
|
略。
|
||||||
|
#### 4-3.配置job
|
||||||
|
本文档主要讲解业务需求配置,其他配置略。
|
||||||
|
|
||||||
|
##### 4-3-1.源码管理
|
||||||
|
使用ssh方式拉取代码。
|
||||||
|
在[源码管理],[Git],点击[添加],选择[Git],在[Repository URL]中填写gitee的ssh仓库地址,在[Credentials]中选择[gitee],点击[保存]。
|
||||||
|
|
||||||
|
##### 4-3-2.构建触发器
|
||||||
|
选中[Gitee webhook 触发构建],[Gitee触发构建策略]选择[推送代码]。
|
||||||
|
[构建指令过滤]选择[[ci-skip] 指令跳过构建]。
|
||||||
|
[允许触发构建的分支]选择[根据分支名过滤],[包含]填写[master](或对应的分支名)
|
||||||
|
[Gitee WebHook 密码],点击[生成]。
|
||||||
|
|
||||||
|
##### 4-3-3.gitee代码库配置webhook
|
||||||
|
在gitee仓库的[设置],[Webhooks],点击[添加webhook],填写[URL]为jenkins的webhook地址,[WebHook密码/签名密钥]选择[WebHook密码],密码为Jenkins生成的webhook密码,[选择事件]为[push]、[tag push]、[pull request]、[激活]。
|
||||||
|
|
||||||
|
##### 4-3-4.构建环境
|
||||||
|
选择[Use secret test(s) or file(s)],添加以下变量。
|
||||||
|
1.添加[Secret file]类型,自定义命名,如[PRIVATEKEY],并指定凭证为[giteePrivate]
|
||||||
|
2.添加[Secret text]类型,自定义命名,如[USERNAME],并指定凭证为[giteeUsername]
|
||||||
|
3.添加[Secret text]类型,自定义命名,如[EMAIL],并指定凭证为[giteeEmail]
|
||||||
|
|
||||||
|
##### 4-3-5.构建步骤
|
||||||
|
选择[Execute shell],在[Command]中填写以下内容。
|
||||||
|
```shell
|
||||||
|
npm config set registry https://registry.npm.taobao.org && npm install
|
||||||
|
git branch && git checkout master
|
||||||
|
#sh gradlew clean build --no-daemon
|
||||||
|
|
||||||
|
mkdir ~/.ssh && chmod 700 ~/.ssh && cp ${PRIVATEKEY} ~/.ssh
|
||||||
|
ssh-keyscan -t ssh-ed25519 gitee.com > ~/.ssh/known_hosts
|
||||||
|
git config --global user.email "${EMAIL}"
|
||||||
|
git config --global user.name "${USERNAME}"
|
||||||
|
#git checkout .
|
||||||
|
npx release-it --ci
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue