【.NET Core】Docker Jenkins ASP.NET Core自動化部署

本文基於GitHub演示自動化部署,實際上你能夠選擇任意的Git託管環境。
使用的模式:DooD(Docker-outside-of-Docker)。
本文全部內容均開源git

連接

歡迎關注個人GitHub:github

Jenkins安裝

啓動基於dotnet的jenkins:web

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-jenkinsdocker

安裝的必選插件:Git GitHub Integrationshell

若是安裝插件很是慢,可以使用鏡像:
上海大學鏡像json

GitHub

配置Person AccessToken

建立一個倉庫

建議根目錄添加1個setup.sh,用於jenkins構建bash

配置Jenkins

  1. 爲了作到自動化部署,在Jenkins的系統設置中找到GitHub Servers模塊,選擇secret text添加AccessToken爲認證方式
  2. 在建立的Jenkins任務中,配置觸發器爲GitHub hook trigger for GITScm polling
  3. 構建選擇執行 shell:bash ./setup.sh

可參考的內容

Dockerfileapp

FROM microsoft/aspnetcore
WORKDIR /app
ENV ASPNETCORE_URLS http://*:5000
EXPOSE 5000
COPY ./publish /app
CMD ["dotnet", "jenkins-demo.dll"]

執行shellide

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!'
相關文章
相關標籤/搜索