1. 建立Jenkins流水线
1.1 登录Jenkins 选择新建任务
![](https://img.haomeiwen.com/i14774047/597801fa1349405a.png)
1.2 输入任务名称application-freeMakers和选择流水线项目,点击确定
![](https://img.haomeiwen.com/i14774047/a63dec7e76f89780.png)
1.3 勾选参数化构建过程,点击添加参数,选择文本参数,输入名称applicationName。
![](https://img.haomeiwen.com/i14774047/cbea2f3e96864588.png)
2. 脚本编写准备
2.1 登录gitlab
2.2 点击个人设置
![](https://img.haomeiwen.com/i14774047/bb55780efee50e15.png)
2.3 选择访问令牌,填写生成token信息,name为apps,终止日期可不选择,默认为永久,勾选API,read_user,read_registry,read_repository,然后点击创建token。
![](https://img.haomeiwen.com/i14774047/66578f3d429e1d39.png)
2.4 拷贝生成的token,此token只生成一次
![](https://img.haomeiwen.com/i14774047/d790003e857a87b2.png)
3.编写代码生成器方法
3.1 新建maven项目
import freemarker.template.Configuration;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Template;
/**
* @Copyright: Shanghai Definesys Company.All rights reserved.
* @Description:
* @author: bingcun.yao
* @since: 2018/12/12 15:14
* @history: 1.2018/12/12 created by bingcun.yao
*/
public class FreeMarkerDemo {
public static void main(String[] args){
// step1 创建freeMarker配置实例
Configuration configuration = new Configuration();
Writer out = null;
String TEMPLATE_PATH=args[0];
String TEMPLATE_NAME=args[1];
//String TEMPLATE_PATH="E:\\txtdown";
try {
// step2 获取模版路径
configuration.setDirectoryForTemplateLoading(new File(TEMPLATE_PATH));
// step3 创建数据模型
Map<String, Object> dataMap = new HashMap<String, Object>();
dataMap.put("classPath", "com.ybc.hello");
dataMap.put("className", "AutoCodeDemo");
dataMap.put("helloWorld", "通过简单的 <代码自动生产程序> 演示 FreeMarker的HelloWorld!");
// step4 加载模版文件
Template template = configuration.getTemplate("hello.ftl");
// step5 生成数据
File docFile = new File(TEMPLATE_PATH + "/"+TEMPLATE_NAME+ "/" + "AutoCodeDemo.java");
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(docFile)));
// step6 输出文件
template.process(dataMap, out);
System.out.println("AutoCodeDemo.java 文件创建成功 !");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != out) {
out.flush();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}
3.2 将项目生成jar包,并和代码生成器模板zip包上传到gitlab空项目上
![](https://img.haomeiwen.com/i14774047/1f7ff86e7a022963.png)
3.3 拷贝2个文件的下载地址
![](https://img.haomeiwen.com/i14774047/5173cda0a3c5b4d0.png)
4. 编写脚本
4.1
node {
def header = "PRIVATE-TOKEN:zdkvgj5hfmQGdzzJ8kKj"
def data = "name=${applicationName}"
def name ="bingcun.yao"
def email = "bingcun.yao@definesys.com"
stage('Preparation') {
sh "curl -i -X POST -H '${header}' -d '${data}' http://git.definesys.com/api/v4/projects "
}
stage('makerCode') {
sh "mkdir /var/lib/jenkins/${applicationName} \n cd /var/lib/jenkins/${applicationName} \n git config --global user.name '${name}' \n git config --global user.email '${email}' \n git config --list \n git clone http://bingcun.yao%40definesys.com:ybc45882@git.definesys.com/ybc/${applicationName}.git "
sh "cd /var/lib/jenkins/${applicationName} \n ls \n wget http://git.definesys.com/definesys/sword-plugin-daily/raw/master/freemarkerdemo.jar \n wget http://git.definesys.com/definesys/sword-plugin-daily/raw/master/hello.zip "
sh "cd /var/lib/jenkins/${applicationName} \n unzip /var/lib/jenkins/${applicationName}/hello.zip "
sh "cd /var/lib/jenkins/${applicationName} \n java -jar freemarkerdemo.jar '/var/lib/jenkins/${applicationName}' '${applicationName}' "
}
stage('makerCode') {
sh "cd /var/lib/jenkins/${applicationName}/${applicationName} \n git add . \n git commit -m 'message' \n git push -u origin master"
}
}
4.2 将脚本写入Pipeline script,点击应用保存。
![](https://img.haomeiwen.com/i14774047/baf7e1fe234afa99.png)
4.3 点击Build with Parameters
![](https://img.haomeiwen.com/i14774047/f3b20fd149e914f9.png)
![](https://img.haomeiwen.com/i14774047/1be658e44b275278.png)
4.4 等待运行成功
![](https://img.haomeiwen.com/i14774047/2e3d8812674c0b6f.png)
4.5 打开gitlab查看运行结果
![](https://img.haomeiwen.com/i14774047/b4ccad7bc9abc108.png)
![](https://img.haomeiwen.com/i14774047/da1286ed4f6a6b55.png)
网友评论