本文作者:ansh

linux 用Azure Devops 自动化部署 .net 5 docker 发布

ansh 2022-08-25 264 抢沙发
linux 用Azure Devops 自动化部署 .net 5 docker 发布摘要: 之前用jenkins自动部署.net core之后,发现服务器内存占用非常高,4G内存基本占用了60%意思上,大概率是jenkins轮训或者原本就占用高。而且之间出现一次git密码...

之前用jenkins自动部署.net core之后,发现服务器内存占用非常高,4G内存基本占用了60%意思上,大概率是jenkins轮训或者原本就占用高。

而且之间出现一次git密码失效,需要重新设置的问题,所以考虑还是试下azure自带。


一:注册azure devops 账号

https://azure.microsoft.com/zh-cn/services/devops/

免费开始使用,随便注册个账号。


二:基础设置

new organization新建一个组织。

new project 新建一个项目。

进入后repos新建一个存储库。

将.net core项目上传,比如.net 5项目。


三:新建部署组

Pipelines 下面的 Deployment groups ,new一个组,命名任意。 

点击新建完成组,点击进入,里面details里面命名任意,Type of target to register 下面选择linux,Use a personal access token in the script for authentication选中,然后将命令复制到linux服务的命令行执行,会有报错,但是基本是路径或者权限问题,百度都能解决。


四:新建Docker Registry

后面需要将镜像推送

https://hub.docker.com/ 注册账号,任意设置,新建一个私有仓库。

azure devops中点击左下方的Project Settings,再点击右上角,New service connection。输入docker,选择Docker Registry。  Registry type选择docker hub。填写docker仓库名和密码,验证通过,其他的必填任意取名,保存。


五:新建pipelines

左侧pipelines,点击new,选择Azure Repos git,再选择对应代码库。

最终,azure-pipelines.yml

trigger:
- master

resources:
- repo: self

variables:
  tag: '$(Build.BuildId)'


stages:
- stage: Build
  displayName: Build image
  jobs:
  - job: Build
    displayName: Build
    pool:
      vmImage: ubuntu-latest
    steps:
     - task: Docker@2
       inputs:
         containerRegistry: 'containername'
         repository:'docker hub的仓库 格式 A/B'
         command: 'buildAndPush'
         Dockerfile: '**/Dockerfile' 
         tags: '任意取'

保存并运行,然后成功后去看docker hub是否已经推送成功


六:发布

Release 点击new,点击empty job,或者任意,最终点击Stages下面的 a job,b task这里,把里面东西都删除,保证显示0 job, 0 task。 

点击0 job进入,点击stage 1 右侧的三点,点击 Deployment group job。

红色框 Deployment group表示必填,下拉里面选择在第三部建的部署组。

点击+, 添加4个comman line

分别命名

remove container

remove image

pull image

run

或者随意命名,分别是删除容器,删除镜像,拉取镜像,部署


命令分别是

#判断是否存在containername容器
docker ps | grep containername&> /dev/null
#若是存在,则Remove
if [ $? -ne 0 ]
then
    echo "good containernamenot exist continue.. "
else
    echo "remove  containernamecontainer"
    docker stop  containername
    docker rm  containername-f
fi
#判断是否存在name镜像
docker images | grep name&> /dev/null
#若是不存在,则跳出
if [ $? -ne 0 ]
then
    echo "name does not exist , continue..."
else
    echo "name exists !!! remove it"
    docker rmi --force name
fi
docker login  --username=用户型 --password=密码
docker pull 镜像名:latest
docker run  --restart always -p 88888:80 --name 自定义-d  镜像名


保存


点击tasks左侧的pipline,点击Artifacts 下面的框,选择Source type 下的build,将下方两个选择框选择自己的仓库。


保存后运行,服务器只要开启了对应的端口,域名解析后,可以直接打开。


用docker images 查看镜像是否存在。

阅读
分享

发表评论

快捷回复:

验证码

评论列表 (暂无评论,264人围观)参与讨论

还没有评论,来说两句吧...