本文基於GitHub演示自動化部署,實際上你可以選擇任意的Git托管環境。 使用的模式:DooD(Docker outside of Docker)。 本文所有內容均開源 鏈接 歡迎關註我的GitHub: "neverc/netcore jenkins" (由於是半年前構建的,sdk版本為dotne ...
本文基於GitHub演示自動化部署,實際上你可以選擇任意的Git托管環境。
使用的模式:DooD(Docker-outside-of-Docker)。
本文所有內容均開源
鏈接
歡迎關註我的GitHub:
- neverc/netcore-jenkins(由於是半年前構建的,sdk版本為dotnet sdk:2.0)
- NeverCL/netcore-jenkins(上傳docker hub上的源碼)
- NeverCL/jenkins-demo(本例中的repo)
Jenkins安裝
啟動基於dotnet的jenkins:
docker run --name my-jenkins -P \
-e TZ='Asia/Shanghai' \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/jenkins_home:/var/jenkins_home \
-d neverc/netcore-jenkins
docker exec -it my-jenkins cat /var/jenkins_home/secrets/initialAdminPassword
// 查看jenkins的初始化密碼,當然你可以去掉docker exec -it my-jenkins
安裝的必選插件:Git
GitHub Integration
。
如果安裝插件非常慢,可使用鏡像:
上海大學鏡像
GitHub
配置Person AccessToken
創建一個倉庫
建議根目錄添加1個setup.sh,用於jenkins構建
配置Jenkins
- 為了做到自動化部署,在Jenkins的系統設置中找到
GitHub Servers
模塊,選擇secret text添加AccessToken為認證方式 - 在創建的Jenkins任務中,配置觸發器為
GitHub hook trigger for GITScm polling
- 構建選擇執行 shell:
bash ./setup.sh
可參考的內容
Dockerfile
FROM microsoft/aspnetcore
WORKDIR /app
ENV ASPNETCORE_URLS http://*:5000
EXPOSE 5000
COPY ./publish /app
CMD ["dotnet", "jenkins-demo.dll"]
執行shell
echo 'start'
# variables
echo 'variables:'
GITHASH=`git rev-parse --short HEAD`
IMGNAME=netcore-demo
CONTAINER=netcore-demo-web
# publish
echo 'publish:'
rm -rf ./publish
dotnet publish -o ./publish
# image
echo 'image:'
docker build -t $IMGNAME:$GITHASH .
docker tag $IMGNAME:$GITHASH $IMGNAME:latest
docker rmi -f $(docker images -q -f dangling=true)
# container
echo 'container:'
docker stop $CONTAINER || true && docker rm -f $CONTAINER || true
docker run -d --name $CONTAINER $IMGNAME
echo 'done!'