自动部署

通过自动化部署流程可以实现每日部署(Daily build),自动化流程包括:

  • 自动化部署触发
  • 自动化获取最新代码
  • 自动化编译
  • 自动化打包
  • 自动化测试
  • 自动化应用更新
  • 自动化更新提示等

实战环境介绍

这里是企业内部应用,实现自动化部署的机器有四台:

  • Jenkins 服务器,安装在Windows系统
  • Git远端库
  • Build Server, 编译服务器, 编写脚本用于从Git获取最新代码、编译、打包、测试和部署等。
  • Web Server, Web应用服务器。

注: Jenkins本身可以集成Git拉取最新代码, 这里使用GIt命令拉取代码, Git命名集成在运行脚本中。

实现流程:

实现流程如下:

  1. Jenkins通过SSH执行 Build Server上的脚本,该脚本包括获取源码、编译、部署。
  2. Build Server从Git远端库获取源码
  3. 编译、打包
  4. 通过脚本更新应用

出现的问题

  • 问题1: 在Build Server通过命令获取代码时,会弹出输入密码的对话框
  • 问题2:上面的问题解决后, Jenkins会报unable to read askpass的问题
  • 问题3:如果修改了Git账号的密码, 则问题1 和问题2 会再一次出现。

问题解决

问题1 : 获取Git代码时每次都需要输入密码,脚本获取会出错

错误输出如下:

(gnome-ssh-askpass:12666): Gtk-WARNING **: cannot open display:
error: unable to read askpass response from ‘/usr/libexec/openssh/gnome-ssh

解决思路:
设置Linux不弹出密码询问对话框, 将Git的密码保存在文件中.

解决方式是执行下面的命令:

unset SSH_ASKPASS
git config --global credential.helper store

unset 是Linux的命令, 第二条 git config命令启用 credential.helper store,会将密码以明文方式存储在.gitconfig文件同目录下的.git-credentials中。
注: 这种明文密码存在安全隐患, 可以考虑使用git-credential-winstore替代, git-credential-winstore全称是Windows Credential Store for Git,可以将https方式的Git登陆用户名和密码保存在Windows自带的凭据管理系统中,比credential.helper方式更加安全。

问题2 , 在问题1解决的基础上, Jenkins控制台还是会报unable to read askpass的错误.

解决方法: 在Jenkins服务器的控制台,执行一下脚本, 成功执行之后, Jenkins调用也正常了

CD(Continuous Deployment)实战问题之unable to read askpass解决相关推荐

  1. Github continuous deployment (CD) 最佳实践

    About continuous deployment 您可以使用 GitHub 操作直接在 GitHub 存储库中创建自定义持续部署 (CD) 工作流. About continuous deplo ...

  2. MATLAB实战系列(十九)-遗传算法解决TSP(旅行商)问题-应用及解析(文末附MATLAB源码)

    接上篇MATLAB实战系列(十八)-遗传算法解决TSP(旅行商)问题-算法原理 https://wenyusuran.blog.csdn.net/article/details/114060030 感 ...

  3. unable to read askpass response from '/usr/libexec/openssh/gnome-ssh-askpass

    今天在git push origin master 时,竟然出现了错误 unable to read askpass response from '/usr/libexec/openssh/gnome ...

  4. android studio git 错误 unable to read askpass

    最近在git push 代码的出现了这个错误 error: unable to read askpass response from 'C:\Users\45766\AppData\Local\Goo ...

  5. IDEA(或Android Studio)推送(push)代码报错 unable to read askpass response from ‘C:\Users\Urasaki\AppData\Loc

    推送给代码报错 unable to read askpass response from 'C:\Users\Urasaki\AppData\Local\Google\AndroidStudio202 ...

  6. Artifact storage:war exploded: Error during artifact deployment. See server log for details 之一种解决方法

    最近使用idea,早晨起来打开电脑,启动项目,就报这个错.前一天明明一点问题没有,很奇怪...... 我的习惯,先给我自己的出解决办法,没有时间的伙伴可以直接借鉴做法 如上图,给tomcat一个固定的 ...

  7. 第25课 Altium Designer20(AD20)+VESC6.4实战教程:DRC规则检查及解决方法(北冥有鱼)

    第25课 Altium Designer20(AD20)+VESC6.4实战教程:DRC规则检查及解决方法(北冥有鱼)

  8. Gitlab CI/CD教程以及实战docker自动部署前端项目(全)

    目录 前言 1. 技术知识 1.1 docker安装gitlab 1.2 docker安装gitlab-runner 1.3 .gitlab-ci.yml编写 1.4 使用docker部署前端项目 1 ...

  9. TDengine下载安装以及Unable to resolve FQDN解决还有Java配置

    TDengine的下载安装 https://www.taosdata.com/docs/cn/v2.0/getting-started#install 在官网下载自己对应的版本,官网也有相应的安装方式 ...

最新文章

  1. 万万想不到,你是这样的“闲鱼”!
  2. Java学习笔记27
  3. linux几个常用的环境变量配置文件
  4. java中使用什么来做错误处理_JAVA基础--如何通过异常处理错误
  5. ASP.NET WebAPI 集成 Swagger 启用 OAuth 2.0 配置问题
  6. boost::hana::remove用法的测试程序
  7. 7-9 设计一个能处理异常的Loan类 (20 分)
  8. python机器学习算法.mobi_机器学习之ID3算法详解及python代码实现
  9. 博客园 文章和随笔区别
  10. Angular.js示例应用程序
  11. java httpclient 进度条_SpringBoot如何实现一个实时更新的进度条的示例代码
  12. Python:hashlib加密,flask模块写接口
  13. 进程以及状态 进程的创建
  14. web平台安全测试方案
  15. vs2015-devexpress 安装
  16. cad打开服务器上的文件很慢,cad2018启动慢怎么处理_cad2018打开很慢的解决教程
  17. yield在python中是什么意思_python中的yield代表什么
  18. 四大组件之Activity(下)——Activity的常用Manifest属性、启动模式、ADB调试
  19. 语音识别(ASR)--语音转文字
  20. 【论文阅读】Dense Passage Retrieval for Open-Domain Question Answering

热门文章

  1. Java:基于LinkedList实现栈和队列
  2. Canvas 数学、物理、动画学习笔记一
  3. 34.scrapy解决爬虫翻页问题
  4. Redis的中并发问题的解决方案小结
  5. 解决 Electron 包下载太慢问题
  6. SQL2008安装后激活方式以及提示评估期已过解决方法
  7. 【报告分享】2021日化行业社媒营销报告.pdf(附下载链接)
  8. 自然语言处理技术在推荐系统中的应用和发展(附交流视频和PPT下载链接)
  9. 【实践】美团点评效果广告实验配置平台的设计与实现
  10. leetcode 240. 搜索二维矩阵 II