CI/CD首次在Linux上使用
sudo wget -O /etc/yum.repos.d/jenkins.repo \
https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
sudo yum upgrade
# Add required dependencies for the jenkins package
sudo yum install java-11-openjdk
sudo yum install jenkins
# 如果出现no packages
# 再输入第一句代码
输入java -version查询出来的版本号并非当前所安装的
# 1.查看当前jdk版本
java -version
# 2.查看当前安装jdk版本
rpm -qa|grep java
# 3.如果出现安装的版本在列表中
# 4.编辑这个配置文件
vi /etc/profile
# 5.在最后输入以下四句,JAVA_HOME根据自己jdk的文件目录来定义
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.0.8-1.el7_9.x86_64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# 6.刷新这个配置文件
source /etc/profile
如果虚拟机Linux以管理员身份安装的,还需要将其他用户改为管理员否则两边查询的Java版本可能不一致
vi /etc/sudoers
# 找到root这行然后添加用户
reboot
# 重启生效
启动Jenkins
service jenkins start
查看状态
service jenkins status
运行正常
如果遇到这种情况
这个报错信息百度很久也没解决
后面查看内存使用率才发现原来GitLab吃的内存太多
查看内存使用率
free -h
开启GitLab只剩下247M内存,关闭之后剩2.7G
然后重启Jenkins就可以正常打开了
输入以下命令即可将密码打印在控制台
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
.NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:
sudo yum install dotnet-sdk-6.0
安装docker(设置阿里yum源)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
由于repo中默认只开启stable仓库,故这里安装的是最新稳定版
sudo yum install docker-ce
启动docker
sudo systemctl start docker
sudo systemctl status docker
安装Git
yum install -y git
Jenkins配置shell自动化部署
创建Jobs配置Git选择构建中的执行Shell
Jenkins下的项目目录/var/lib/jenkins/jobs
可以进入对应项目中的workspace进行编译,编译通过基本就没啥问题了
如果docker中就一个镜像可以这样写Jenkins中运行的shell命令
#!/bin/bash
# 输出一提示的话
echo "Successfully^_^ ......................................................................................"
# 输出当前地址,可以在日志中看到当前路径,检查一些路径问题
pwd
# 删除所有容器
docker rm -vf $(docker ps -aq)
# 删除所有镜像
docker rmi -f $(docker images -aq)
# 构建镜像命令
docker build -t dotnet6api .
# 从镜像运行容器
# --name dotnet6apiweb是容器名称
# dotnet6api是绑定的镜像名称
# 5000是对外暴露的端口
# 80是docker内部绑定的端口
# -e TZ=Asia/Shanghai是将容器内部时间设置为上海时间
docker run -e TZ=Asia/Shanghai -d -p 5000:80 --restart=always --name dotnet6apiweb dotnet6api
如果有很多镜像和容器只需要更新当前镜像和容器
#!/bin/bash
# 输出一提示的话
echo "Successfully^_^ ......................................................................................"
# 输出当前地址,可以在日志中看到当前路径,检查一些路径问题
pwd
# 构建镜像命令
docker build -t dotnet6api .
# 更新镜像
docker push dotnet6api
# 停止容器
docker stop dotnet6apiweb
# 删除容器
docker rm dotnet6apiweb
# 从镜像运行容器
# --name dotnet6apiweb是容器名称
# dotnet6api是绑定的镜像名称
# 5000是对外暴露的端口
# 80是docker内部绑定的端口
# -e TZ=Asia/Shanghai是将容器内部时间设置为上海时间
docker run -e TZ=Asia/Shanghai -d -p 5000:80 --restart=always --name dotnet6apiweb dotnet6api
首次Jenkins构建会报错,报错信息dial unix /var/run/docker.sock: connect: permission denied
# 添加当前用户到docker用户组 ${USER}指用户名
sudo gpasswd -a ${USER} docker
# 查看用户组下用户,检查添加是否成功
cat /etc/group | grep docker
# 重启docker服务
sudo service docker restart
# 切换当前会话到新组【group】或重启会话
newgrp - docker
# 更改文件权限
sudo chmod 666 /var/run/docker.sock
再次构建项目
输入IP加端口号项目运行正常
踩到一个小坑,因为日志用的是Log4net,而日志文件名叫Log4net.Config中间有大写
最后编译报错找不到log4net.config,后面把文件名改为小写即可通过了
DockerFile是通过VS自动生成的没有任何修改,将其移动到解决方案sln同级目录即可
docker基本命令
查看所有镜像
docker image ls
查看所有容器
docker ps -a
停止指定容器
docker stop 容器名
删除指定容器
docker rm 容器名
删除所有容器
docker rm -vf $(docker ps -aq)
删除指定镜像
docker rmi 镜像名
删除所有镜像
docker rmi -f $(docker images -aq)
停止Docker服务并查看运行状态
service docker stop
service docker status
扩展知识,发布项目想查看日志怎么办
进入容器dotnet6apiweb
docker exec -it dotnet6apiweb /bin/bash
容器里面相当于一个系统所以无法使用vim等操作
安装vim
apt-get install vim
出现错误
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package vim
以下命令貌似会把本地的源同步到docker容器中再安装就可以了
apt-get update
apt-get install vim
退出容器快捷键CTRL + P 然后 CTRL + Q