寫給初用Nestj作項目的你(第二篇: 配置gitlab-runner&操做gitlab)

寫給初用Nestj作項目的你(第二篇: 配置gitlab-runner&操做gitlab)

若是不想本身搭建gitlab, 請直接跳到第6條。

一. CI/CD

     咱們平時會使用一些CI/CD持續集成, 好比上傳到gitlab上的dev分支代碼每次更新, 但這些功能可不是CI來作的, 咱們都會直接進行打包併發布到測試環境, 那麼接下來咱們就來配置這個功能模塊。html

二. gitlab-runner

     執行構建任務是很消耗性能的, 因此gitlab單獨使用gitlab-runner這種形式來獨立的構建項目, 因此其實gitlab提供了一個接口, 能夠對應多個runner, 不一樣的項目能夠用不一樣的runner構建。vue

第一步: 拉取
docker pull gitlab/gitlab-runner
第二步: 運行
docker run -d --name gitlab-runner --restart always \
  -v ~/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner

上面是對docker容器裏面的配置作一個映射。node

第三步: 註冊
docker exec -it 容器id gitlab-runner register

意思就是我要去某個鏡像內部執行gitlab-runner registergit

上面的容器id用下面的命令查看docker

docker container ps -a

image.png

註冊填寫信息

註冊命令執行的時候會讓咱們填寫UrlToken,這個參數在圖裏找:
image.pngshell

或者打開一個項目:數據庫

image.png

  • 設置標籤
    image.png
    你能夠理解成是設置一個別名, 方便咱們以後管理與調用這個runner
  • 設置環境
    image.png
    這裏就不配置了node之類的了, 不用shell, 直接選用docker
  • 設置默認鏡像
    image.png

三. 配置runner

咱們先來查看一下被激活的runner
image.png
這裏的tag就是剛纔初始化時候設置的。vim

設置其爲默認runner

image.png

image.png

四. 拉取項目的地址進行校訂(配置gitlab)

進入咱們的容器內
docker exec -it gitlab_lulu bash 

vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

image.png

如今能夠正確訪問到了:
image.png後端

五. 上傳一個yml文件試一下

隨便建一個vue工程api

image: node

cache:
  paths:
    - node_modules/

install:
  tags:
    - tag1
  script:
    - echo 1111

image.png

六. 初始一個gitlab模塊

     這個庫挺少用的, 文檔也都是英文的, 一會會講如何學習它。

安裝
yarn add @gitbeaker/node
生成gitlab模塊
nest g controller modules/gitlab

nest g service modules/gitlab
簡單配置一下

/share/src/modules/gitlab/gitlab.controller.ts

import { Controller, Get } from '@nestjs/common';
import { GitlabService } from './gitlab.service';

@Controller('gitlab')
export class GitlabController {
    constructor(
        private readonly gitlabService: GitlabService
    ) { }
    @Get()
    getTags() {
        return this.gitlabService.getTags();
    }
}

/share/src/modules/gitlab/gitlab.service.ts

import { Injectable } from '@nestjs/common';

@Injectable()
export class GitlabService {
    getTags() {
        return 'tags列表'
    }
}

效果以下:
image.png

七. 使用@gitbeaker/node操做gitlab: 獲取全部的tag

/share/src/modules/gitlab/gitlab.service.ts

第一步 獲取token

     有了token纔能有權利訪問一些項目, 把權限都開啓, 而且設置失效時間。
image.png

image.png

複製你的令牌放到項目中。

image.png

第二步 new 一個api實例

image.png

image.png

第三步 打上標籤試一下

image.png

image.png

八. 如何學習使用@gitbeaker/node

第一步: 查詢想要的api

在這裏搜索你想要的關鍵詞, api文檔
image.png

第二步: 點進去找你想要的操做

好比這個新建標籤

image.png

第三步: 通常這個操做名就是方法名

查看他的參數設置, options裏面通常就是要傳遞的參數。

image.png

第四步: 調用方法

image.png

這個ref能夠理解爲惟一標籤, 因此它能夠是commitID:

image.png

第五步: 查看結果

image.png

image.png

end.

     接下來咱們要進行數據庫的相關操做了, 若是你沒作事後端相關項目可要仔細看了, 裏面涉及到typeorm如何處理多對多與多對一等關係, 我會把我遇到的坑與心得體會所有展現給你, 但願和你一塊兒進步。

相關文章
相關標籤/搜索