CICD dotnet 自動化部署 jenkins+gitee

問題描述:在Centos8系統中,使用docker run時,出現如下報錯:
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Error: open /proc/self/uid_map: no such file or directory

解決辦法:
1,卸載podman軟件(可以使用rpm -qa|grep docker)
yum remove docker
2,下載docker-ce源
curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
3,安裝docker-ce
yum install docker-ce -y

問題原因分析:
Centos 8使用yum install docker -y時,默認安裝的是podman-docker軟件

安裝完成後,執行命令 docker --version ,輸出版本號證明安裝成功

Docker version 20.10.22, build 3a2c30b

安裝 Jenkins

docker pull jenkins/jenkins

運行jenkins

docker run -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --privileged=true --name myjenkins jenkins/jenkins

參數說明:
 -d 後臺運行鏡像
 -p 8080:8080 將鏡像的8080端口映射到服務器的8080端口。
 -p 50000:50000 將鏡像的50000端口映射到服務器的50000端口
 -v /var/jenkins_mount:/var/jenkins_mount /var/jenkins_home目錄爲容器jenkins工作目錄,我們將硬盤上的一個目錄掛載到這個位置,類似於MVVM,雙向綁定,方便在外部操作文件
 -v /etc/localtime:/etc/localtime讓容器使用和服務器同樣的時間設置
 –name myjenkins 給容器起一個別名

運行結果

登錄配置jenkins 需要的組件

 訪問8080端口,顯示需要管理員密碼

查看鏡像日誌

docker logs 容器id

拷貝密碼登錄jenkins

手動安裝插件

配置鏡像加速

修改/var/jenkins_mount/hudson.model.UpdateCenter.xml裏的內容

vi /var/jenkins_mount/hudson.model.UpdateCenter.xml

將 url 修改爲 清華大學官方鏡像:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

更改密碼

找到選項中的Password

回到主界面 安裝插件

安裝中文插件 chinese

安裝gitee

安裝ssh插件 publish over ssh

重啓jenkins 服務

docker restart 容器id

對接gitee

生成私人令牌

左邊找到私人令牌

點擊生成私人令牌

複製令牌

回到jenkins 面板 修改系統配置

添加gitee配置

配置令牌

選擇令牌並測試

配置ssh

補充ssh信息

補充密碼

測試ssh

gitee 準備一個項目

新建一個自由風格的軟件項目

配置構建需要的參數

若出現操作過程中出現下圖問題,並且Gitee信息填寫正確,原因可能是項目需要開源才能訪問到

添加用戶憑證

配置webhook(如果一個項目中有多個站點,發佈的時候如果只想更新一個站點,(比如有後臺和前端2個站點)暫時是新建了2個任務,進行手動構建,沒有用webhook)

gitee配置webhook

點擊生成Gitee WebHook 密碼

粘貼到WebHook 密碼/簽名密鑰文本框中

驗證Jenkins是否能拉取提交的內容

成功拉同步了Gitee的更改,接下來只需要把每次同步過來的代碼發佈即可

下載.Net6 運行時(由於我之前安裝過,所以直接顯示100%)

sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

sudo yum install dotnet-sdk-7.0

配置ssh構建實現自動拉取並部署項目

選擇增加構建步驟

編寫shell腳本(用的supervisor 守護進程)

echo------------stopapp------------------
supervisorctl stop webjen
echo------------publish------------------
cd /app/webjen
dotnet publish -c Release -o /pub/webjen
echo------------delcode------------------
cd /app/webjen
rm -rf *
echo------------online------------------

supervisorctl start webjen

編輯完內容之後,保存

 

立即構建,看看是否拉取併發布了

看明細

 續-------------------------------------------------------------------------------------------

增加回滾功能

內容

echo ------------stopapp------------------
supervisorctl stop dev_jenkins_admin

case $Status  in
Deploy)
   if [ ! -d  '/app/bak/dev_jenkins_admin/${BUILD_NUMBER}' ];then 
       mkdir -p  "/app/bak/dev_jenkins_admin/${BUILD_NUMBER}";
        fi
     \cp -r /app/dev_jenkins_admin/* /app/bak/dev_jenkins_admin/${BUILD_NUMBER}
    ;;
  Rollback)
      cd /app/bak/dev_jenkins_admin/$Version
      \cp -r *  /app/dev_jenkins_admin/ 
      ;;
  *)
  exit
      ;;
esac

echo ------------publish------------------
cd /app/dev_jenkins_admin/Dev.Jenkins.Admin
dotnet publish -c Release -o /pub/dev_jenkins_admin
echo ------------delcode------------------
cd /app/dev_jenkins_admin
rm -rf *
echo ------------online------------------

supervisorctl start dev_jenkins_admin

頁面

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章