日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GitLab 运行GitLab-Runner CI/CD发布

發布時間:2024/3/24 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GitLab 运行GitLab-Runner CI/CD发布 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要演示使用A發布項目到 B上,和注冊GitLab Runner,添加docker類型的Executor來執行構建,并以此為基礎完成一個go源碼示例項目從編譯代碼構建、docker鏡像打包到應用部署的CI/CD過程。

A:192.168.10.12 gitlabrunner
B:192.168.10.19 端口2375 需要發布的目標
Gitlab ip:192.168.10.9

一、在192.168.10.12上使用docker安裝gitlab-runner

[root@adscom gitlab]# mkdir -p /config #創建配置目錄 [root@adscom data]# docker pull gitlab/gitlab-runner:v14.6.1 #拉取gitlab-runner鏡像 [root@adscom ~]# docker run -d --name my-runner -v /config/:/etc/gitlab-runner gitlab/gitlab-runner:v14.6.1 #啟動容器 [root@adscom ~]# docker exec -it my-runner bash #進入容器

二、登錄GitLab注冊信息

1 獲取注冊token信息


2 在192.168.10.12上進行非交互式注冊gitlab-runner
需要進入到gitlab-runner容器中

bash-5.0# gitlab-runner register \--non-interactive \--executor "docker" \--docker-image golang:1.17.6-alpine3.15 \--url "http://192.168.10.9/" \--registration-token "mNaxzsqyxpwQQCxJkSTa" \--description "docker-my111" \--tag-list "testrunner1" \--run-untagged="true" \--locked="false" \--access-level="not_protected"

可在GitLab上看到注冊成功的GitLab Runner,如下圖所示。


三、緩存配置
GitLab Runner對緩存方案的支持有限,所以
可以通過修改config.toml,需要使用掛載Volume的方式做緩存。

root@ubuntu:/config# pwd /config vim config.toml

Docker in Docker
Docker技術目前在DevOps中被廣泛使用,我們需要將測試或者構建的代碼和自動化腳本打包成Docker鏡像,然后部署在各運行環境中。而在CI/CD中,我們常用一些CI/CD服務器,比如Jenkins和GoCD來構建與部署我們的應用,從而實現CI/CD的自動化。現在一些CI/CD服務器也被Docker化運行在真實的物理機上。于是我們需要在CI/CD服務器的Docker container里面來構建(build)與運行(run)我們的Docker鏡像,這就涉及到"Docker run Docker"的問題。
一個很自然的想法是,我們是不是需要在CI/CD服務器鏡像中安裝一個Docker Daemon和Docker命令呢?但是Docker里面跑Docker總感覺有些蹩腳,額外安裝與運行Docker無疑增加了CI/CD服務器鏡像的大小,同時還增加Docker的深度。
實際上,我們并不需要在CI/CD服務器上安裝Docker。通過如下的命令在CI/CD服務器上運行我們的鏡像:

volumes = ["/var/run/docker.sock:/var/run/docker.sock","/cache"]

也可以在注冊時加入(官方的方法):

gitlab-runner register \--non-interactive \--executor "docker" \--docker-image golang:1.17.6-alpine3.15 \--url "http://192.168.10.9/" \--registration-token "mNaxzsqyxpwQQCxJkSTa" \--description "test-sock" \--tag-list "test-sock" \--run-untagged="true" \--locked="false" \--access-level="not_protected" \--docker-volumes /var/run/docker.sock:/var/run/docker.sock

四、設置全局變量

  • 在GitLab的頂部導航欄中,選擇Menu > Admin。
  • 在Admin頁簽下,選擇settings。
  • 在左側導航欄中,CI / CD。
  • 單擊Variables右側的Expand。添加GitLab Runner可用的環境變量。本示例中,添加以下五個變量
  • DOCKER_NAMES=abc13877****** >>鏡像倉庫登錄用戶名
    DOCKER_PWSS:********* >>鏡像登錄密碼
    ALIYUN:registry.cn-shenzhen.aliyuncs.com >>鏡像倉庫登錄地址
    IMAGE: registry.cn-shenzhen.aliyuncs.com/xiaoshimei/xiaoshimei-tset >>鏡像地址
    IP_NAME :-H tcp://192.168.10.19:2375 >>10.19 的ip地址

    五、編寫.gitlab-ci.yml

    cache:paths:- app stages:- package- docker_build- deploy package build_job1:stage: packagetags:- testrunner1script:- export GO111MODULE=on- export GOPROXY=https://goproxy.cn- go get -d -v github.com/gin-gonic/gin- go get -d -v github.com/shirou/gopsutil/host- go mod init app- go mod tidy- go build .- ls -lhonly:- maindocker_build_job2:image: docker:stablestage: docker_buildtags:- testrunner1script:- docker build -t $IMAGE:$CI_COMMIT_SHORT_SHA .- docker login --username=$DOCKER_NAME1 --password=$DOCKER_PWSS $ALIYUN- docker push $IMAGE:$CI_COMMIT_SHORT_SHA#- #docker rmi $ALIYUN:$CI_COMMIT_SHORT_SHA deploy_job3:image: docker:stablestage: deploytags:- testrunner1script:- docker $IP_NAME pull $IMAGE:$CI_COMMIT_SHORT_SHA- docker $IP_NAME rm -f abc- docker $IP_NAME run -d --name abc -p8080:80 $IMAGE:$CI_COMMIT_SHORT_SHA- docker $IP_NAME ps | grep abconly:- mainenvironment:name: devurl: http://192.168.10.19:8080/sys >> 構建成功后可在瀏覽器輸入http://192.168.10.19:8080/sys做測試

    .gitlab-ci.yml定義了一個Pipeline, 分三個階段步驟執行:

    cache: #緩存 paths:- app stages:- package #源碼打包階段- docker_build #鏡像構建和打包推送階段- deploy #應用部署階段

    go源碼打包階段:

    package build_job1: #job名稱stage: package #源碼打包tags: #Gitlab Runner的tag- testrunner1script:- export GO111MODULE=on- export GOPROXY=https://goproxy.cn- go get -d -v github.com/gin-gonic/gin- go get -d -v github.com/shirou/gopsutil/host- go mod init app- go mod tidy- go build .- ls -lhonly: #只在這個分支執行- main

    鏡像構建和打包推送階段:

    docker_build_job2: #job名稱image: docker:stable #本階段構建使用的構建鏡像 stages:stage: docker_build #關聯的階段名稱tags: #Gitlab Runner的tag- testrunner1script:- docker build -t $IMAGE:$CI_COMMIT_SHORT_SHA .- docker login --username=$DOCKER_NAME1 --password=$DOCKER_PWSS $ALIYUN #變量提前在gitlab中添加- docker push $IMAGE:$CI_COMMIT_SHORT_SHA#- #docker rmi $ALIYUN:$CI_COMMIT_SHORT_SHA

    應用部署階段:

    deploy_job3: #job名稱image: docker:stable # 本階段構建使用的構建鏡像stage: deploy # 關聯的階段名稱tags: #Gitlab Runner的tag- testrunner1script:- docker $IP_NAME pull $IMAGE:$CI_COMMIT_SHORT_SHA- docker $IP_NAME rm -f abc- docker $IP_NAME run -d --name abc -p8080:80 $IMAGE:$CI_COMMIT_SHORT_SHA- docker $IP_NAME ps | grep abconly:- mainenvironment:name: devurl: http://192.168.10.19:8080/sys >> 構建成功后可在瀏覽器輸入http://192.168.10.19:8080/sys做測試

    執行之前需要保證對方防火墻開啟并開放了端口

    root@ubuntu:/config# curl 192.168.10.19:2375 >> 檢測遠程端口是否開放 {"message":"page not found"}

    3 編寫Dockerfile

    FROM alpine:latestWORKDIR /data ADD app . CMD ./app

    4 執行Pipeline
    提交.gitlab-ci.yml文件后,Project gitlab-java-demo會自動檢測到這個文件并執行Pipeline, 如下圖所示。


    5 測試驗證

    六、Gitlab設置通知企業微信機器人

    將Gitlab的push、tag push、merge request和pipeline等等推送到企業微信的機器人。

    應用部署運行

    應用通過環境變量添加機器人webhook地址,WEBHOOK_URL_作為前綴,后面可接不同的推送組。

    如環境變量WEBHOOK_URL_PROJ,PROJ則為推送組。推送組用于與Gitlab的集成時使用。
    例如:

    • 機器人的webhook地址為:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=c7483288-ddd5-4afa-88d5-88398be0f511
    • 推送組為PROJ。
      則環境變量設為:
      WEBHOOK_URL_QYWX=https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=c7483288-ddd5-4afa-88d5-88398be0f511

    一個應用可以添加多個推送組。

    使用Docker部署:

    修改docker-compose.yml文件中的WEBHOOK_URL環境變量,添加企業微信機器人的webhook地址。

    通過:7001端口訪問服務。

    實行過程:

  • 把Gitlab中項目里的文件下到桌面上

  • 2. 使用rz 命令把文件傳進服務器中

    dfc@BBC-xxc Downloads % pwd /Users/dfc/Downloads dfc@BBC-xxc Downloads % scp gitlab-bot-master.zip root@192.168.10.12://mnt/jiqiren

    3.進入192.168.10.12這臺機下的/mnt/jiqiren目錄解壓文件,并修改docker-compose.yml

    root@ubuntu:/mnt/jiqiren# cd gitlab-bot-master/ root@ubuntu:/mnt/jiqiren/gitlab-bot-master# ll total 84 drwxr-xr-x 6 root root 4096 Mar 11 22:19 ./ drwxr-xr-x 3 root root 4096 Mar 11 22:17 ../ drwxr-xr-x 4 root root 4096 Feb 22 2020 app/ -rw-r--r-- 1 root root 242 Feb 22 2020 appveyor.yml -rw-r--r-- 1 root root 365 Feb 22 2020 .autod.conf.js drwxr-xr-x 2 root root 4096 Feb 22 2020 config/ -rw-r--r-- 1 root root 519 Mar 11 22:19 docker-compose.yml -rw-r--r-- 1 root root 118 Feb 22 2020 Dockerfile drwxr-xr-x 2 root root 4096 Feb 22 2020 docs/ -rw-r--r-- 1 root root 9 Feb 22 2020 .eslintignore -rw-r--r-- 1 root root 37 Feb 22 2020 .eslintrc -rw-r--r-- 1 root root 167 Feb 22 2020 .gitignore -rw-r--r-- 1 root root 33 Feb 22 2020 jsconfig.json -rw-r--r-- 1 root root 1073 Feb 22 2020 package.json -rw-r--r-- 1 root root 2111 Feb 22 2020 README.md -rw-r--r-- 1 root root 14313 Feb 22 2020 sample.json drwxr-xr-x 3 root root 4096 Feb 22 2020 test/ -rw-r--r-- 1 root root 183 Feb 22 2020 .travis.yml root@ubuntu:/mnt/jiqiren/gitlab-bot-master# vim docker-compose.yml

    把紅線處換成自己的企業微信機器人地址

    然后執行:

    docker-compose up -d

    通過:7001端口訪問服務。
    與Gitlab集成

    進到項目,settings => Webhooks。

    URL填寫服務的地址和端口號+推送組。

    例如,服務器地址為:https://192.168.100.100:7001,推送組為PROJ。

    URL填寫:https://192.168.100.100:7001/proj

    具體設置,參見下圖:

    添加成功后可以點擊Test,再去看企業微信是否能收到通知。

    Gitlab通知機器人

    Gitlab push 代碼推送:

    新增

    修改

    Gitlab push 新建分支:

    Gitlab push 刪除分支:

    與企業微信對接

    如何添加群機器人?

    支持telegram消息推送

    官網參考:
    https://docs.gitlab.com/runner/install/docker.html
    https://docs.gitlab.com/ee/administration/repository_storage_paths.html
    https://docs.gitlab.com/runner/executors/docker.html#clearing-docker-cache

    總結

    以上是生活随笔為你收集整理的GitLab 运行GitLab-Runner CI/CD发布的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。