本文基於GitHub演示自動化部署,實際上你能夠選擇任意的Git託管環境。
使用的模式:DooD(Docker-outside-of-Docker)。
本文全部內容均開源git
歡迎關注個人GitHub:github
啓動基於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-jenkins
docker
安裝的必選插件:Git
GitHub Integration
。shell
若是安裝插件很是慢,可以使用鏡像:
上海大學鏡像json
建議根目錄添加1個setup.sh,用於jenkins構建bash
GitHub Servers
模塊,選擇secret text添加AccessToken爲認證方式GitHub hook trigger for GITScm polling
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!'