ジェンキンスは最近、GitLabの下でうまくそれを記録する方法を自動展開を研究し、展開を自動化するために、使用前に書きました。
私たちは、自分の学生を構築したい、まずあなたは、少なくともGitLabを持って自分自身を構築するか、公式にはヘクタール、私は公式を使用していたことができます使用する必要があり、二つのことを展開する準備をする必要が使用GitLabが、これにドッカーの使用を参照することができますgitLabを構築します:
https://www.imooc.com/article/23168
あなたは、我々はまた、独自の展開GitLabランナーをインストールする必要がありGitLabを持っていたら、GitLabRunnerは通常の圧力とリスクとGitLabを広めるために、GitLab倉庫コードを引っ張ってコンパイルすると、あなたは.gitlab-ci.ymlするためのスクリプトに応じていたコードを展開使用されていますGitLabRunnerは、同じサーバ上で、ここで私はgitLabランナーをインストールするには、ローカルの仮想マシンを使用していません。
私はドッカー年に配備されることになっていたので、GitLabランナーをインストールする前に、私たちはより良いドッカーがインストールされていた、インストールされていない学生は、次のスクリプトを参照することができますので。
sudoのyumをインストール-y yum- utilsの\ デバイス -mapper-persistent- データ\ LVM2
sudoのyumを-CONFIG- マネージャ\ --add- レポ\ のhttps:// download.docker.com/linux/centos/docker-ce.repo
sudoのyumをドッキングウィンドウ-CE]ドッキングウィンドウ-CE-をインストールCLI containerd.io
systemctlドッキングウィンドウが使用可能に
ドッキングウィンドウを起動しsystemctl
新規インストールは、その後もアクセラレータは、設定をミラーリング、または画像が特に遅いダウンロードしてください。
インストールGitLabRunner
1.リポジトリを追加します。
-L HTTPSカール:// packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudoのbashの
2.パッケージをインストールします。
HTTPS:// blog.csdn.net/weiguang1017/article/details/77720778
3.登録ランナー
sudoのgitlabランナーレジスタ
その後、我々は適切な情報GitLabウェアハウスを入力するように求められます、私たちはまず、あなたが展開するプロジェクト、[設定]を選択しますGitLabに行ってきました - CI / CDを:
最初の要件入力URLは、第二は、トークンを要求します。
スキップ、このステップは、何も入力されていないことができます:ステップは、「(カンマ区切り)このランナーのためのgitlab-CIタグを入力してください」のラベルを入力することがあります。
そして、あなたは現在のプロジェクトをロックするかどうかを尋ねられます「現在のプロジェクトにランナーをロックするかどうか[真/偽]:」、Falseを入力してください。
最後のオプションの実装ランナー、私はドッカーの展開に、ここではないですので、入力シェルので。
あなたは私たちが登録した情報のランナーが表示されますどのようなGitLabだけで、そのページのリフレッシュを完了した後:
それはランナーの対応次に、編集、一つの場所を変更します。
把上面标记的那个选项勾选上,表示无标签的任务也可以运行。
到这里还会有问题,因为Git Runner运行的时候默认会使用gitlab-runner用户去运行脚本,但是这个用户默认没有Docker的操作权限,所以如果直接测试会报错:“couldn't connect to Docker daemon at http+docker.......”,因此我们需要给这个用户开通下权限,在Git Runner服务器上执行如下脚本:
sudo groupadd docker sudo gpasswd -a gitlab-runner docker sudo service docker restart(或者systemctl start docker) newgrp - docker
到这里Git Runner安装就算完成了,下面我们来测试。
自动部署测试
新建.net core Api项目 WebTest,项目里添加Dockerfile:
FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base WORKDIR /app EXPOSE 80 FROM microsoft/dotnet:2.1-sdk AS build WORKDIR /src Copy . . RUN dotnet restore RUN dotnet build -c Release -o /app FROM build as publish RUN dotnet publish -c Releease -o /app FROM base AS final WORKDIR /app COPY --from=publish /app . ENTRYPOINT ["dotnet", "WebTest.dll"]
然后在项目文件根目录下,注意是根目录哦,就是和解决方案同一级目录下添加.gitlab-ci.yml脚本文件,这个就是专门用来执行部署命令的,脚本规则参考官方:
https://docs.gitlab.com/ee/ci/yaml/README.html#only-and-except-simplified
stages: - deploy_dev deploy_dev_job: stage: deploy_dev environment: name: development only: - master script: # 发布程序并部署运行 - cd WebTest - docker stop webTest - docker rm webTest - docker rmi webtest - docker build -t webtest . - docker run -d --name webTest -p 8010:80 webtest
因为是测试,我这里很简单,标准是三个流程,我这里只用到了部署流程,script哪里就是我要执行的脚本命令,可以看到这里就是每次执行先把上次的容器和镜像删除,然后重新build一个镜像,部署到8010端口。
写好这些之后,我们就可以提交代码了,提交之后去GitLab中查看部署状态:
可以看到你提交的代码到底有没有部署成功,我们可以点击状态按钮查看详细信息:
如果失败了,可以通过这里查看具体的原因。可以看到我最新的提交已经通过来,OK,我们现在可以通过浏览器访问了,服务器IP:8010:
可以看到正常访问,看下Docker容器信息:
OK,大功告成,本篇只是个小的Demo,下一篇会使用GitLab CI/CD实现商城项目 k8s的自动化编译、测试、发布流程。