忘忧的小站

  • 首页
  • 文章归档
  • 日志
  • 关于页面

  • 搜索
分布式索引 索引 全文搜索 Lucene.Net GPS 音视频 过滤 AOP 时区 升级 ABP.Zero 数据备份 linux 阿里云盘 aliyunpan 面试题 Signalr S 汉字 css html 前端 拼音键盘 在线键盘 uniapp .Net Core XMLRPC Serilog LOKI Nlog 分布式日志 加密 总结 人生 Asp.Net Core Swagger Web Element-plus Quasar 匹配 JavaScript 正则 .Net 后台 架构师 Redis EF CORE MySQL 自考 英语 集群 Jenkins CI/DI 内网穿透 代理 ABP 学习 后端 软考

从零开始的CI/DI Jenkins集成docker+.NetCore自动化发布

发表于 2021-11-10 | 分类于 .Net Core | 2 | 阅读次数 5112

环境介绍

Centos7.6版本

开始搭建

搭建Jenkins

1.安装Jenkins

wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat-stable/jenkins.repo
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum upgrade
yum install epel-release java-11-openjdk-devel
yum install jenkins.noarch -y //安装
systemctl status jenkins.service//查看状态
systemctl start jenkins.service//启动

修改Jenkins配置文件
vim /etc/sysconfig/jenkins 修改JENKINS_USER=“jenkins” 修改为JENKINS_USER=“root”

2.访问Jenkins
http://101.35.80.206:8080/ http://IP:8080/
等待Jenkins初始化
image.png
命令行输入

cat /var/lib/jenkins/secrets/initialAdminPassword

将会得到初始化密码
输入input框即可初始化Jenkins
image.png
默认安装即可
image.png
创建一个默认用户
image.png
安装完成开始使用Jenkins吧!

开始使用Jenkins

配置证书

配置gitee账号

点击Manage Credentials
image.png
点击Jenkins
image.png
点击倒三角并点击Add credentials
image.png
选择Username with password
image.png
输入账号密码以及Id user pass Id
image.png

配置Jenkins插件

点击Manage Jenkins然后再点击Manage Plugins
image.png
image.png
这里安装以下插件

  1. SSH Pipeline Steps
  2. Gitee
  3. Gogs

安装Docker

这里推荐使用阿里云的自动化安装脚本

Docker CE 镜像源站

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun //安装
systemctl status docker //查看状态
//如果没有启动请使用
systemctl start docker //启动服务

groupadd docker
usermod -aG docker ${USER}
systemctl restart docker
systemctl restart jenkins

安装.Net5

我本机环境是Centos7.6 其他Linux系统请参考
https://docs.microsoft.com/en-us/dotnet/core/install/linux?WT.mc_id=dotnet-35129-website

rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
yum install dotnet-sdk-5.0

nuget证书问题

dotnet dev-certs
cp /etc/pki/tls/cert.pem  /usr/local/openssl/cert.pem

创建一个项目

创建一个流水线项目
image.png
初始化项目并填上git地址
image.png
选择分支
image.png
注明Jenkinsfile文件地址
image.png
保存配置

配置163 STMP邮件服务器信息

进入Jenkins系统配置
image.png
找到E-mail Notification
image.png
配置STMP服务器,账号,授权码
image.png
image.png
这些东西在163邮箱中获取
https://email.163.com/

配置JenkinsFile文件

创建Jenkinsfile文件
注意! 如果系统上有多个dotnet 需要使用绝对路径 比如 /usr/share/dotnet/dotnet 如果系统上只装了一个dotnet的话使用dotnet
image.png

def remote = [:]
remote.name = 'TService'
remote.host =  ''//服务器地址
remote.user = 'root'
remote.password = ''服务器密码
remote.allowAnyHosts = true
pipeline {
    agent any

    environment {
        RELEASE_PATH = "${WORKSPACE}/releases"
        COMMIT_ID = sh(returnStdout: true, script: 'git rev-parse HEAD')
        DOCKER_USERNAME = "" //docker hub账号
        DOCKER_PASSWORD = "" //docker hub密码
    }
    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                sh "/usr/share/dotnet/dotnet build"
            }
        }
        stage('Test') {
            steps {
                echo 'Testing..'
            }
        }
        stage('Publish') {
            steps {
                echo 'Publish....'
                sh "/usr/share/dotnet/dotnet publish -c=Release -o=${RELEASE_PATH}/DevOps WebApplication1/WebApplication1.csproj"
                echo RELEASE_PATH
                writeFile(file: "${RELEASE_PATH}/DevOps/commit-${COMMIT_ID}.txt", text: "")
            }
        }
        stage('Docker Build') {
            steps {
                echo 'Docker Build...'
                sh "docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD}"
                sh "cp WebApplication1/Dockerfile ${RELEASE_PATH}/DevOps"
                sh "cd ${RELEASE_PATH}/DevOps && docker build -t ${DOCKER_USERNAME}/dev_ops:latest ."
                sh "docker push ${DOCKER_USERNAME}/dev_ops:latest"
            }
        }
        stage('Service Docker Run'){
            steps {
                script{
                    try {
                                echo "Service Docker Run...."
                                sshCommand remote: remote, command: "docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD}"
                                sshCommand remote: remote, command: "docker pull ${DOCKER_USERNAME}/dev_ops:latest"
                                sshCommand remote: remote, command: "docker stop dev_ops"
                                sshCommand remote: remote, command: "docker rm dev_ops"
                                sshCommand remote: remote, command: "docker run --name dev_ops -d -p 5003:80 ${DOCKER_USERNAME}/dev_ops"
                                sshCommand remote: remote, command: "docker logout"
                            } 
                            catch (Exception  e){
                                echo "Service Docker Run...."
                                sshCommand remote: remote, command: "docker login -u ${DOCKER_USERNAME} -p ${DOCKER_PASSWORD}"
                                sshCommand remote: remote, command: "docker pull ${DOCKER_USERNAME}/dev_ops:latest"
                                sshCommand remote: remote, command: "docker run --name dev_ops -d -p 5003:80 ${DOCKER_USERNAME}/dev_ops"
                                sshCommand remote: remote, command: "docker logout"
                            }
                }
         
            }
         
        }
        stage('Delete Publish Release') {
            steps {
                echo "Delete Files..."
                sh "rm -rf ${RELEASE_PATH}"
            }
        }
    }
    post {
       success {
             mail bcc: '', body: "如题", cc: '', from: ''//发送者邮箱, replyTo: '', subject: "发布成功", to: ''//接收者邮箱
       }

       failure {
              mail bcc: '', body: "如题1", cc: '', from: ''//发送者邮箱, replyTo: '', subject: "发布失败", to: ''//接收者邮箱
       }
   }
}

配置DockFile

DockFile文件地址
image.png
DockerFile文件内容

FROM mcr.microsoft.com/dotnet/aspnet:5.0
COPY . /app
WORKDIR /app
EXPOSE 80
EXPOSE 443
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

配置完成后将代码Git push到仓库中

然后再Jenkins中开始构建发布
image.png
发布成功
image.png
检查是否收到Jenkins邮件
image.png

  • 本文作者: 忘忧
  • 本文链接: /archives/41
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 后端 # CI/DI # Jenkins
.Net Core 微服务架构学习项目推荐
k8s集群安装教程 基于Kubesphere
  • 文章目录
  • 站点概览
忘忧

忘忧

君子藏器于身,待时而动,何不利之有

44 日志
6 分类
60 标签
RSS
Github E-mail StackOverflow
Creative Commons
  1. 环境介绍
  2. 开始搭建
    1. 搭建Jenkins
    2. 开始使用Jenkins
        1. 配置证书
          1. 配置gitee账号
      1. 配置Jenkins插件
    3. 安装Docker
      1. 这里推荐使用阿里云的自动化安装脚本
    4. 安装.Net5
  3. 创建一个项目
  4. 配置163 STMP邮件服务器信息
  5. 配置JenkinsFile文件
  6. 配置DockFile
  7. 配置完成后将代码Git push到仓库中
0%
© 2025 忘忧
由 Halo 强力驱动