farcry4998 / pcit

:whale: (PCIT is CI TOOLKIT Written by PHP) 国内首个基于 GitHub Checks API 使用 PHP 编写的开源持续集成/持续部署 (CI/CD) 系统

Home Page:https://github.com/apps/pcit-ce

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PCIT (PCIT is CI TOOLKIT Written by PHP)

GitHub stars PHP from Packagist GitHub (pre-)release Build Status codecov

国内首个基于 GitHub Checks API 使用 PHP 编写的运行于 Docker 之上的由 Tencent AI 驱动的开源云原生 CI/CD 系统

项目状态

积极开发中 部分描述或功能只是 路线图 中的一部分,有待实现,请点击 Star 或关注微信订阅号保持对 PCIT 的关注。

预览 点击 https://ci.khs1994.com/github/khs1994-docker/lnmp 查看 PCIT 功能界面。

本项目适用于对 CI/CD 感兴趣的开发者(特别是 PHP 开发者),欢迎开发者 参与 PCIT 开发

微信订阅号

关注项目作者微信订阅号,接收项目最新动态

愿景

你尽管 push,其他的 PCIT 搞定。

push by you, test and deploy by us.

掌上 PCIT

掌上 PCIT

博客

将来我会在 https://ci.khs1994.com/blog 中对 PCIT 所涉及的概念进行系统讲解,敬请期待。

什么是持续集成 Continuous Integration (CI)?

持续集成 (CI) 是一种 软件开发实践,即团队开发成员经常集成他们的工作,而不是在开发周期结束时进行集成,通过每个成员每天至少集成一次,这意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

持续集成 (CI) 的 目标 是通过以较小的增量进行 开发测试 来构建更健康的软件。

ci

作为一个持续集成系统,PCIT 可以自动的在代码变更时进行 构建测试,同时为代码变更的构建状态提供即时的反馈。PCIT 还可以通过管理 部署通知 来自动化软件开发过程中的其他流程。

当开发者提交代码到 Git(即代码发生变更), PCIT 会把 Git 仓库克隆到一个容器环境中,并执行一系列 构建测试 代码的任务。如果其中一项或多项任务失败,则认为构建失败。如果没有任何任务失败,构建被认为通过。同时 PCIT 可以将代码部署到 Web 服务器、应用程序主机或容器集群中。

PCIT 架构

PCITPHP 分布式后端(1+N)Webhooks Server + Daemon CLI) + GitHub App + CLI + 开放平台插件API)四部分组成

  • Webhooks Server 接收 Git 事件

  • Daemon CLI 后端常驻 (守护) 程序,解析 Git 事件生成一个 build 并将其分解为多个 job (Server 节点),之后在 Docker 单机或集群(Swarm、Kubernetes)中执行构建、测试、容器化部署的自动化过程(Agent 节点)。

  • CLI 提供各种实用的功能,例如命令行查看构建状态,命令行操作 GitHub,命令行调用 Tencent AI 开放能力

  • 开放平台 包含用于功能扩展的 插件RESTFul API,与开发者一道构建 PCIT 生态系统

使用方法(使用之前需要私有部署 PCIT EE)

这里只是介绍部署 PCIT 之后如何使用 PCIT 进行 CI/CD 实践,如何部署 PCIT 请查看下一小节

language: php

pipeline:

  before_install: ['echo exec init script']

  install: composer install

  script:
    - composer test

  after_success:
    image: bash
    commands:
      - echo "build is success"

services:
  redis:
  mysql:
  • 推送 git 仓库到 GitHub,PCIT 开始进行 构建 测试 部署 等一系列工作。

查看构建的聚合页面,请登录 https://ci.khs1994.com/login

PCIT CE vs PCIT EE

在未来 PCIT 可能会提供 公有云服务 让开发者无需私有部署即可方便快捷的使用 PCIT。我们将这个有待实现的版本称为 PCIT CE。

所以 CEEE 的区别为是否需要开发者自行部署。

部署 PCIT EE

依托于 khs1994-docker/lnmp LNMP 容器化解决方案,私有部署 PCIT 也很方便。

# 安装 Docker 这里不再赘述

# 安装 khs1994-docker/lnmp

$ git clone --depth=1 https://github.com/khs1994-docker/lnmp.git ~/lnmp

# **镜像
# $ git clone --depth=1 https://gitee.com/khs1994-docker/lnmp.git ~/lnmp

$ cd ~/lnmp

1. 在 GitHub Settings > Developer settings > OAuth Apps 注册一个 GitHub Oauth App,用于 OAuth2 账号体系

2. 在 GitHub Settings > Developer settings > GitHub Apps 注册一个 GitHub App

3. 准备证书文件,包括网站证书以及 GitHub App 的私钥证书

4. 编辑 ~/lnmp/pcit/.env.development 文件中的变量,之后启动 PCIT

$ ./lnmp-docker pcit-up

5. 点击刚才注册好的 GitHub App 地址 https://github.com/apps/YOUR_APP_NAME ,进行安装。

6. Git 仓库根目录包含 .pcit.yml 文件,推送到 GitHub,在 Commit 详情处查看构建。

详细的步骤请查看 https://github.com/pcit-ce/pcit/blob/master/docs/install/ee.md

视频教程

文字版看不明白?请查看 视频版 安装教程。

示例项目

目前 PCIT 官方维护以下语言的示例项目。

语言 地址 构建页面
PHP https://github.com/khs1994-php/tencent-ai Build Status
Node.js https://github.com/khs1994/tencent-ai-js Build Status
Go https://github.com/khs1994-php/tencent-ai-go Build Status
Hexo (Node.js) https://github.com/khs1994/khs1994.github.io Build Status
Bash Shell https://github.com/khs1994-docker/lnmp Build Status

生态系统

Why PCIT

PCIT 子项目

项目拆分

待拆分

已拆分

致谢

国内友商

GitHub 上的其他 CI/CD 项目

什么是云原生 Cloud Native?

Cloud native computing uses an open source software stack to be:

  1. Containerized. Each part (applications, processes, etc) is packaged in its own container. This facilitates reproducibility, transparency, and resource isolation.
  2. Dynamically orchestrated. Containers are actively scheduled and managed to optimize resource utilization.
  3. Microservices oriented. Applications are segmented into microservices. This significantly increases the overall agility and maintainability of applications.

About

:whale: (PCIT is CI TOOLKIT Written by PHP) 国内首个基于 GitHub Checks API 使用 PHP 编写的开源持续集成/持续部署 (CI/CD) 系统

https://github.com/apps/pcit-ce

License:MIT License


Languages

Language:PHP 98.1%Language:Dockerfile 0.6%Language:HTML 0.5%Language:HCL 0.4%Language:Shell 0.3%Language:PowerShell 0.0%