Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。
CI/CD
持续集成 (Continuous Integration)
持续集成是在源代码变更后自动检测、拉取、构建和(在大多数情况下)进行单元测试的过程。
持续集成的目标是快速确保开发人员新提交的变更是好的,并且适合在代码库中进一步使用。
持续集成工作
让一个自动化过程监测一个或多个源代码仓库是否有变更
。当变更被推送到仓库时,它会监测到更改、下载副本、构建并运行任何相关的单元测试。
Jenkins 监测变更
- 轮询:监测程序反复询问代码管理系统,当代码管理系统有新的变更时,监测程序会“唤醒”并完成其工作以获取新代码并构建/测试它。
- 定期:监测程序配置为定期启动构建,无论源码是否有变更。理想情况下,如果没有变更,则不会构建任何新内容,因此这不会增加额外的成本。
- 推送:可以以 webhook 的形式完成 —— 在新代码被推送时一个挂勾hook的程序通过互联网向监测程序发送通知。为此,监测程序必须具有可以通过网络接收 webhook 信息的开放端口。
持续交付 (Continuous Delivery)
持续交付通常是指整个流程链,它自动监测源代码变更并通过构建、测试、打包和相关操作运行它们以生成可部署的版本,基本上没有任何人为干预。
持续交付包含持续集成
,持续测试
,持续部署
。
持续部署(Continuous Deployment)
持续部署是指能够自动提供持续交付管道中发布版本给最终用户使用的想法。根据用户的安装方式,可能是在云环境中自动部署、app 升级(如手机上的应用程序)、更新网站或只更新可用版本列表。
Jenkins安装
brew 安装
brew install jenkins //安装最新版
brew services start jenkins //启动jenkins
brew services restart jenkins //重新启动jenkins
brew services stop jenkins //停止jenkins
Docker 安装
docker pull jenkins/jenkins
docker run -itd --name=jenkins -p 9090:8080 jenkins/jenkins
docker image ls -a // 查看所有镜像
docker ps -a // 查看所有运行的镜像
docker exec -itu root 容器id /bin/bash //进入jenkins容器内部
cat /etc/issue //查看容器系统
cat /var/jenkins_home/secrets/initialAdminPassword //查看管理员密码
docker image prune //清理镜像
Jenkins 容器内部配置python3环境
使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。
docker exec -it -u root 容器id /bin/bash //进入容器内部
cat /etc/issue //查看当前系统 (Debian GNU/Linux 9 \n \l)
因为Debian安装软件巨慢,换Debian源为国内源
echo 'deb http://mirrors.163.com/debian/ stretch main non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ stretch-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ stretch/updates main non-free contrib' > /etc/apt/sources.list
apt-get update //更新apt-get
cd /var/jenkins_home/
mkdir python3
cd python3/
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
tar -xvf Python-3.6.8.tgz
cd Python-3.6.8
./configure --prefix=/var/jenkins_home/python3
执行 ./configure --prefix=/var/jenkins_home/python3
时报上面错:configure: error: no acceptable C compiler found in $PATH,需要更新依赖包
apt-get -y install gcc automake autoconf libtool make
apt-get -y install make*
apt-get -y install zlib*
apt-get -y install openssl libssl-dev
apt-get install sudo
./configure --prefix=/var/jenkins_home/python3 --with-ssl
make //make编译安装
make install
ln -s /var/jenkins_home/python3/bin/python3.6 /usr/bin/python3 //添加python3软链接
ln -s /var/jenkins_home/python3/bin/pip3 /usr/bin/pip3 //添加pip3软链接
pip3 -V //pip3 和python3检查环境
python3