以 Git 为中心,基于 Docker 生态的『云原生构建』

我们提供云端构建服务,让您在代码仓库中毫不费力地完成从代码检查、软件构建、自动化测试到发布的流程自动化。同时无需担心服务器配置和维护成本,我们自动化管理您的构建和部署流程,让您专注于软件开发。

# 云原生

基于 Docker 生态,对环境、缓存、插件进行抽象,原生支持 Pipeline as Code。

# Pipeline as Code

在代码中声明流水线,有如下优点:

  • 易管理:纳入版本管理,像管理代码一样管理流水线。
  • 可编程:通过 YAML 描述流水线,可编程、易复用。
  • 云原生:基于 Docker 生态,通过声明式的语法,屏蔽基础设施的复杂性,按需使用资源。

# Docker image as pipeline Context




 







master:
  push:
    - docker:
        image: node:14
      stages:
        - name: print node version
          script:
            - node -v
            - npm install
            - npm test

# Docker volumes as pipeline Cache





 
 







master:
  push:
    - docker:
        image: node:14
        volumes: 
          - /root/.npm:copy-on-write
      stages:
        - name: print node version
          script:
            - node -v
            - npm install
            - npm test

# Docker image as job Context





 





 





master:
  push:
    - stages:
        - name: run with node 10
          image: node:10
          commands:
            - node -v
            - npm install
            - npm test
        - name: run with node 12
          image: node:12
          commands:
            - node -v
            - npm install
            - npm test      

# Docker image as plugins





 







master:
  push:
    - stages:
        - name: npm publish
          image: tencent/npm
          imports: https://example.com/example/secret/blob/master/npm.yml
          settings:
            username: $NPM_USER
            password: $NPM_PASS
            email: $NPM_EMAIL
            folder: .
# exapmple of npm.yml
NPM_USER: user
NPM_PASS: pass
NPM_EMAIL: email

# 高性能

# 按需声明资源

可通过 runner.cpus 按需声明需要的资源。

# git-clone-yyds 读秒 clone 技术

基于 OverlayFSgit-clone-yyds 可以在数秒内完成代码准备,时间复杂度为 O(1),不受仓库大小的影响。

# copy-on-write 缓存并发技术

copy-on-write 在并发场景下可以瞬间完成缓存复制,构建速度不劣化。




 

 
 
 







master:
  push:
    - runner:
        cpus: 16
      docker:
        image: node:14
        volumes: 
          - /root/.npm:copy-on-write
      stages:
        - name: print node version
          script:
            - node -v
            - npm install
            - npm test