<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
請提前在 Linux 上安裝 Docker,在 Linux 中,我們使用 Docker 啟動 Jenkins,這樣可以避免手動安裝大量依賴以及汙染本地環境,也便於快速啟動和故障恢復。
安裝 Docker 完畢後,使用 docker version
檢查 Docker 版本,Docker 版本不能為 1.x、3.x 這種版本,請升級到 18.x 以上版本。一般在 Ubuntu 系統中,下載安裝的是最新版本,但是在 Centos 中因為預設映象源中的版本比較舊, 安裝 Doker 版本較低,需要手動新增新版本的映象源再升級。
請參考:https://www.jb51.net/article/243104.htm
因為會使用到容器提供環境,以及使用 Docker 打包 .NET Core 程式為 Docker 映象,所以需要在 Jenkins 容器中對映 Docker 的 .sock
檔案,以便在容器中,還能使用 Docker 命令。
在宿主機中建立 /var/jenkins_home
目錄,用於備份 Jenkins 中的資料。
在 Linux 中使用 Docker 啟動 Jenkins ,其命令如下:
docker run -u root -itd -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
啟動後,使用 docker logs {容器ID}
檢視紀錄檔獲取 Jenkins 登入密碼,其密碼是一串雜湊字串,例如:1abc12445adcf
。
最後開啟 8080
埠,即可存取 Jenkins。
登入 Jenkins 後,會提示安裝推薦的外掛,請根據提示安裝推薦的外掛,推薦安裝的外掛列表如下:
Folders Plugin OWASP Markup Formatter Plugin Build Timeout Credentials Binding Plugin Timestamper Workspace Cleanup Ant Gradle Pipeline GitHub Branch Source Plugin Pipeline: GitHub Groovy Libraries Pipeline: Stage View Git plugin SSH Build Agents Matrix Authorization Strategy Plugin PAM Authentication LDAP Email Extension Mailer Plugin Localization: Chinese (Simplified)
另外為了提供容器打包支援等,需要另外手工安裝以下外掛。
# 提供 Docker 支援(必裝) docker Docker Pipeline docker-build-step # 視覺化設計流水線指令碼的工具(必裝) Blue Ocean # 提供對 gitlab 支援,如果不使用可以不安裝 gitlab # 提供 Git 引數化和勾點觸發構建支援,不需要可以不安裝 Git Parameter Generic Webhook Trigger
這裡介紹一下我們後面要用到的兩個映象。
拉取一個 .NET Core SDK,每次啟動流水線時,都會啟動一個 .NET Core SDK 容器,為我們提供構編譯、釋出 .NET Core 程式的環境。
docker pull mcr.microsoft.com/dotnet/sdk:3.1
拉取一個 ASP.NET Core Runtime,用於製作應用映象的基礎映象。
docker pull mcr.microsoft.com/dotnet/aspnet:3.1
映象列表:
mcr.microsoft.com/dotnet/aspnet 3.1 ac199e8d6dff 2 weeks ago 208MB mcr.microsoft.com/dotnet/sdk 3.1 82e2a34647f0 2 weeks ago 710MB
筆者貼心地給各位同學準備了 Demo 專案,請到 https://github.com/whuanle/DotNetCoreJenkinsDemo 倉庫,fork 到你的倉庫,後續我們使用這個 ASP.NET Core 的 Demo 程式實踐流程。
在專案檔案中,可以找到一個 Jenkinsfile 檔案,此檔案為我們定義流水線的步驟。
我們看一下簡單的 Jenkinsfile 模板:
pipeline { stages { stage('Build') { steps { echo 'Building..' } } stage('Test') { steps { echo 'Testing..' } } stage('Deploy') { steps { echo 'Deploying....' } } } }
stages
中,定義流水線的階段,在模板中,一個定義了三個階段,分別是 Build
、Test
、Deploy
。
每個階段都可以定義多個步驟(steps
),每個步驟中都可以執行多個不同型別的 step。
stage('Test') { steps { echo 'Testing..' } }
demo 中的 Jenkinsfile 比較簡單,我們可以找個 Publish
階段的內容看一下:
stage('Publish') { steps { sh 'dotnet publish src/WebDemo -c Release' } }
其實很簡單,每個步驟執行 shell 命令就行,我們可以使用 sh '...'
表示此步驟要執行的 shell 命令。
接著我們看一下 Jenkinsfile 開頭的兩部分內容。
// 全域性環境變數 environment { IMAGENAME = 'webdemo' // 映象名稱 IMAGETAG = '1.0.0' // 映象標籤 APPPORT = '8089' // 應用佔用的埠 APPDIR = '/opt/app' // 應用工作的目錄 } agent { docker { image 'mcr.microsoft.com/dotnet/sdk:3.1' args '-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker' } }
environment
中,可以定義此次構建過程的環境變數。
agent
則是節點選擇器,可以選擇在何種環境下啟動流水線,有 node
、docker
等型別。
登入到 Jenkins 網頁後臺,在左側選單欄中點選 New Item
,開始建立流水線。
Jenkins 有多種流水線風格,還可以通過新增外掛,來加入更多的流水線型別,我們主要了解 Freestyle project 、Pipeline、Multibranch Pipeline 即可。
Freestyle project
Freestyle project流水線 使用上比較自由,不需要對專案做更改即可建立流水線,可以新增很多選擇、設定。如果流程需要變化,改動比較麻煩。
Pineline、Multibranch Pipeline
他們都可以同時處理多個分支,這兩種都是依賴於專案中的 Jenkinsfile 檔案。Multibranch Pipeline 好處是可以同時檢查多個分支,為每個分支建立構建Job,而 Pipeline 會把多個分支放到一個 Job 中。
點選 New Item
,建立流水線,選擇 Mutibranch Pipline。
新增 Git 原始碼 倉庫方式,我們可以自由選擇一種型別,建議使用 Single repository & branch
。
由於我們沒有新增金鑰,所以 Jenkins 無法存取你的 Github 倉庫,所以需要新增一個可存取的金鑰。
找一臺已經安裝了 git 的電腦,生成公鑰私鑰,為 Jenkins 和 GitHub 之間提供加密連線。
執行命令:
ssh-keygen -t rsa -b 2048 -C "email@example.com"根據提示,填寫要存放金鑰的路徑,如
D:/id_rsa
。執行命令後,會生成兩個檔案,
id_rsa
、id_rsa.pub
,複製 id_rsa (私鑰)中的內容到 Jenkins 中。然後把
id_rsa.pub
(公鑰)的內容新增到 Github 你的賬號中。
你可以使用多種方式新增認證方式,最簡單、安全的是金鑰,我們可以選擇 Secret file
,然後上傳私鑰,或者使用別的方式,這裡就不贅述了。
然後選擇要釋出的分支,最後直接儲存即可。
然後回到主介面,開啟 我們建立的流水線,點選 Build Now
,即可啟動流水線。
構建成功截圖:
在 Linux 伺服器上,檢視映象列表:
root@localhost ~ 19:54:20 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE webdemo 1.0.0 79b636ddef73 2 minutes ago 208MB
可以看到,已經自動打包應用為映象,其映象名稱和版本號,都可以在 Jenkinsfile 中設定。
我們可以在構建介面中,觀察每個步驟的紀錄檔。
在 Open Blue Ocean 中,有更加好看的 UI 和方便的工具。
視覺化設計流水線步驟。
觀察構建過程。
到此這篇關於Linux下使用Jenkins自動化構建.NET Core應用的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45