docker 安裝jenkins 發佈 asp.net core 2.0

安裝Docker

  其實安裝Docker的過程,你們能夠到Docker官網找到本身相對應的安裝文檔進行安裝,Docker區分CE和EE的兩個版本,具體這兩個版本有什麼區別,你們自行查閱相關資料,這裏再也不概述。教程用的是CE那麼就找到對應的官方文檔進行安裝,如下是教程安裝的步驟html

  1.更新一下包吧,多更無害linux

# sudo yum -y update

 

  2.安裝所需的軟件包 git

# sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

 

3.使用穩定版的倉庫(固然可使用最新版或測試版的倉庫,這個須要官方的說明)github

# sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

 

4.安裝Docker ce docker

# sudo yum install docker-ce

tips:在生產系統上,您應該安裝特定版本的Docker CE,而不是始終使用最新版本。shell

 

5.啓動Dockervim

# sudo systemctl start docker

 

6.docker經過運行hello-world 映像驗證是否正確安裝。centos

# docker run hello-world

若是出現如下的界面,就表明安裝成功瀏覽器

 

安裝Jenkins

  首先不直接從Docker Store上直接Pull Jenkins 的 Image 文件,由於待會須要進行dotnet core 的 Docker自動部署,須要對宿主機上的Docker進行直接操做,那麼須要掛載 Docker 給 Jenkins Image,因此如今須要本身動手編寫 Dockerfile 構建自定義的Jenkins。bash

  

# touch Dockerfile
# vim Dockerfile

插入如下內容:

複製代碼
FROM jenkins

USER root
#清除了基礎鏡像設置的源,切換成騰訊雲的jessie源
#使用非騰訊雲環境的須要將 tencentyun 改成 aliyun
RUN echo '' > /etc/apt/sources.list.d/jessie-backports.list \
  && echo "deb http://mirrors.aliyun.com/debian jessie main contrib non-free" > /etc/apt/sources.list \
  && echo "deb http://mirrors.aliyun.com/debian jessie-updates main contrib non-free" >> /etc/apt/sources.list \
  && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main contrib non-free" >> /etc/apt/sources.list
#更新源並安裝缺乏的包
RUN apt-get update && apt-get install -y libltdl7 && apt-get update

ARG dockerGid=999

RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group 

# 安裝 docker-compose 由於等下構建環境的須要
RUN curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

RUN chmod +x /usr/local/bin/docker-compose
複製代碼

若是不安裝 libltdl7 會致使以下這個問題,緣由是jenkins容器內部沒有這個包

docker: error while loading shared libraries: libltdl.so.7: cannot open shared object file: No such file or directory
Build step 'Execute shell' marked build as failure

在Jenkins操做宿主的Docker的時候會出現拒絕訪問的問題,其實就是容器的jenkins用戶沒有權限訪問容器外的docker命令,因此 RUN命令 須要把Jenkins用戶加入到Docker用戶組

 

構建Image

# docker build . -t auto-jenkins

出現以上 Successfully 內容表明安裝Jenkins成功

 

在啓動Jenkins時,須要先建立一個Jenkins的配置目錄,而且掛載到docker 裏的Jenkins目錄下

# mkdir -p /var/jenkins_home

運行 Jenkins

# docker run --name jenkins -p 8080:8080 -p 50000:50000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v $(which docker):/bin/docker \
    -v /var/jenkins_home :/var/jenkins_home \
    -d auto-jenkins

 

  第一行:構建一個名稱爲jenkins的容器  -p 是容器運行開放端口

  第二行 和第三行: -v 是將宿主機的docker文件掛載進容器裏

  第四行:創建宿主機的配置目錄,掛載進docker容器裏,這樣容器裏的Jenkins配置目錄文件就會映射出來

       第五行:使用auto-jenkins Image 而且後臺啓動

這個時候 run Jenkins 會提示成功

執行 docker ps 命令後,發現什麼都沒有

執行 docker ps -a 命令看看

 

執行 docker start -a jenkins 讓容器前臺輸出運行信息的方式運行

不難看出其實 Jenkins 啓動已是能夠了,只是權限問題致使這個錯誤的信息。

 

如今須要看一下Jenkins官方的Dockerfile 

 知道問題緣由,貼上代碼了。

##修改 /var/jenkins 文件夾權限
# chown -R 1000 /var/jenkins_home

 繼續執行運行Jenkins 代碼

# docker run --name jenkins -p 8080:8080 -p 50000:50000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v $(which docker):/bin/docker \
    -v /var/jenkins_home:/var/jenkins_home \
    -d auto-jenkins

出現一串字符後,執行 docker ps 會發現容器已經啓動了,正常了。這個時候是否是可使用了?彆着急,還有很長的路。

 

配置Jenkins

打開瀏覽器輸入地址 your IP:8080 進行訪問,你會開心的看到這個界面,看到這個界面表明你的Jenkins 已經安裝成功了,可是須要進行配置,如今就教你們怎麼去配置

 

首先,進入容器內

# docker exec -it jenkins /bin/bash

查看 /var/jenkins_home/secrets/initialAdminPassword 文件內的密碼

# cat /var/jenkins_home/secrets/initialAdminPassword

其實不必定要進入容器內查看密碼,能夠直接在宿主機的環境下,查看 /var/jenkins//secrets/initialAdminPassword 的內容,由於以前筆者已經將這個目錄掛載進Docker裏面了

 

複製輸出的內容,粘貼到Administrator password,輸入 exit 退出容器,此時進行下一步你會看到此界面,點擊 Install suggested plugins

 

等待初始化完畢 

 

到了這一步,本身隨緣去填吧。

 

使用VS2017建立一個ASP.NET Core 2.0 Web應用程序,並將代碼上傳到git。這裏筆者就不演示上傳代碼的過程步驟了。

爲大家準備了一個地址,方便大家完成本教程:http://git.oschina.net/wenalu/MvcTest

 

新建一個自由風格的軟件項目,並填名稱 點擊 OK

 

填寫源代碼管理

 

勾選 Poll SCM 設置拉取Git 上代碼的間隔,筆者這裏是兩分鐘拉取一次

 

勾上 Delete workspace before build start 是設置構建前刪除工做區

勾上 Abort the build if it's stuck 是設定構建的超時時間,若是構建使用的時間超過設定的時間,那麼就認爲此次的構建是失敗的。筆者這裏超時設置的是10分鐘

 

增長一個Execute Shell 腳本,並填寫如下腳本內容

複製代碼
#!/bin/bash
# 獲取短版本號

GITHASH=`git rev-parse --short HEAD`
echo ---------------Remove-Orphans------------------
docker-compose -f ./docker-compose.yml -f ./docker-compose.override.yml  -p dockercompose4255153253317384266 down --rmi local --remove-orphans
echo ------------------Config-----------------------
docker-compose -f ./docker-compose.ci.build.yml -p dockercompose4255153253317384266 config
echo ------------------Build------------------------
docker-compose -f ./docker-compose.ci.build.yml -p dockercompose4255153253317384266 up --build
echo ---------------Publishing...------------------
docker-compose -f "./docker-compose.yml" -f "./docker-compose.override.yml"  -p dockercompose4255153253317384266 up -d --build
複製代碼

 

應用保存,回到項目界面上。點擊當即構建進行部署工做 SUCCESS

 

打開瀏覽器,地址輸入 your IP:8088/

參考地址

https://www.cnblogs.com/LongJiangXie/p/7517909.html Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自動化發佈和部署
https://www.cnblogs.com/stulzq/p/8627360.html 使用Docker安裝Jenkins
https://www.cnblogs.com/stulzq/p/8627824.html ASP.NET Core + Docker +Jenkins 實現持續集成

[Jenkins]admin用戶登錄,提示登錄無效(以前登錄OK,三天沒有登錄,忽然提示登錄無效,重啓沒法解決)的解決方法
問題出現現象:

系統一直正常,忽然某天登錄,提示用戶無效,沒法登錄成功。


一、打開config文件,JENKINS_HOME目錄,而後在目錄下查找config.xml文件)

二、修改<useSecurity>true</useSecurity>爲<useSecurity>false</useSecurity>

三、刪除<authorizationStrategy>*****</authorizationStrategy>和<securityRealm>****</securityRealm>兩項內容

四、重啓jenkins,從新登錄便可

相關文章
相關標籤/搜索