gitlab-runner實現gitlab上的代碼自動打包發佈——windows版

gitlab中的項目,每次打包發佈都比較麻煩,需要自己本地打包然後傳輸到服務器,再啓動。考慮實現一種自動打包發佈的方法。

    1)考慮使用jenkins實現,但是需要jdk11(當前環境不能升級),還有一些插件(這個雖然可以離線安裝,但是需要高版本的jenkins,相對應的又依賴高版本的jdk)

    2)考慮使用docker實現,不熟。。。

    3)所以最後考慮使用gitlab-runner了,相對簡單

      前提:

       1、本地安裝了maven、git、gitlab-runner、java8

          2、有一個gitlab網址,其中有自己的項目

以下爲實現步驟:

一、windows安裝gitlab-runner

  1、 先去gitlab官網下載windows版本的gitlab Install GitLab Runner on Windows | GitLab

  2、安裝gitlab-runner

  

//安裝gitlab-runner
gitlab-runner.exe install
 
//使用指定賬戶安裝gitlab-runner
gitlab-runner.exe install --user your-username --password your-password
 
//啓動gitlab-runner
gitlab-runner.exe start
 
//停止gitlab-runner
gitlab-runner.exe stop
 

二、把gitlab-runner註冊到gitlab上

  註冊成功後,Runners下面會生成一個runners,可以看到這個runners是正常運行的,沒有什麼錯誤。

                                                  

 

CI/CD裏面生成了runners後,相應的在gitlab-runner的config.toml文件裏面也會生成一個新的[[runners]],對新生成的[[runners]]的配置信息做一些修改。

pre_clone_script = "chcp 65001"
pre_build_script = "chcp 65001"
shell = "powershell"

 

          .\gitlab-runner.exe restart   重啓一下以免修改的配置不生效!

三、在Maven項目中新增.gitlab-ci.yml文件【事先要有一個已經發布到gitlab上的項目(gitlab使用網上的或者自己安裝一個都行)】

  由於我的項目代碼是微服務形式,一個項目中有多個子項目,所以需要打的包也不止一個,因此要使用父級.gitlab-ci.yml調用子級.gitlab-ci.yml 【如果只有一個項目(一個pom文件)那使用一個.gitlab-ci.yml文件就可以了】     ,此外,.gitlab-ci.yml和src及pom.xml同級。

  我的目錄結構類似於下圖: 

                                                                                    

 父級.gitlab-ci.yml內容:

stages: # 指定運行的步驟,沒有指定就順序執行
  - build
  - test
  - build_test1
  - build_test2

build1:
  tags: 
    - k8s
  stage: build
  script:
    - echo "Do your build here"

test1:  
  stage: test
  script:
    - echo "Do a test here"
    - echo "For example run a test suite" 


build-test1:
  stage: build
  trigger:
    include: # 運行 test1 目錄下的 ci.yml 文件
      - local: test1/ci.yml # 相對路徑
    strategy: depend # 狀態同步
  rules: # 觸發規則,test1 目錄下的任何文件改變時觸發
    - changes:
      - test1/* # test1 下的任何文件發生改變就執行
      when: always

build-test2:
  stage: build
  trigger:
    include: # 運行 test2 目錄下的 ci.yml 文件
      - local: test2/ci.yml  # 相對路徑
    strategy: depend # 狀態同步
  rules: # 觸發規則,test2 目錄下的任何文件改變時觸發
    - changes:
      - test2/* # test2 下的任何文件發生改變就執行
      when: always

 

子級.gitlab-ci.yml內容:【  only:    - mydev 這個是設置對應的分支,你提交代碼到其他分支不會觸發的】

stages: # 指定運行的步驟,沒有指定就順序執行
  - build
  - deploy
  - test
  - package

build1:
  tags: 
    - k8s
  only:
- mydev
stage: build script: - echo "Do your build here" test1: tags: - k8s 
  only:
- mydev
stage: test script: - echo "Do a test here" - echo "For example run a test suite" package: tags: - k8s
only:
- mydev stage: package script: - echo "開始打包" - echo "For example run a lint test"
- cd D:\xxx\xxx\myprojectbasepath
- D:\xxx\apache-maven\bin\mvn compile
deploy1: tags: - k8s
  only:
- mydev
stage: deploy script: - echo "Do your deploy here"

    把以上文件推送到對應分支。

四、在對應的分支,和對應的子項目中,修改文件然後提交再push到對應分支,登錄到gitlab查看是否成功

                                                        

 至此已完成一個子項目的打包,其他子項目亦復如是。

後續會嘗試在linux環境實現(一般部署服務都是使用linux機器)

 



參考:

https://blog.csdn.net/weixin_42032770/article/details/128998760

https://blog.51cto.com/busy/6237260

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章