Jenkins X
Jenkins X 是一个基于 Jenkins 和 Kubernetes 的 CI/CD 平台,旨在解决微服务架构下云原生应用的持续集成和持续交付问题。它使用 Jenkins、Helm、Draft、GitOps 以及 Github 等工具链构造了一个从集群安装、环境管理、持续集成、持续部署一直到应用发布等支持整个流程的平台。

安装部署

安装 jx 命令行工具

1
# MacOS
2
brew tap jenkins-x/jx
3
brew install jx
4
5
# Linux
6
curl -L https://github.com/jenkins-x/jx/releases/download/v1.1.10/jx-linux-amd64.tar.gz | tar xzv
7
sudo mv jx /usr/local/bin
Copied!

部署 Kubernetes 集群

如果 Kubernetes 集群已经部署好了,那么该步可以忽略。
jx 命令提供了在公有云中直接部署 Kubernetes 的功能,比如
1
create cluster aks # Create a new kubernetes cluster on AKS: Runs on Azure
2
create cluster aws # Create a new kubernetes cluster on AWS with kops
3
create cluster gke # Create a new kubernetes cluster on GKE: Runs on Google Cloud
4
create cluster minikube # Create a new kubernetes cluster with minikube: Runs locally
Copied!

部署 Jenkins X 服务

注意在安装 Jenkins X 服务之前,Kubernetes 集群需要开启 RBAC 并开启 insecure docker registries(dockerd --insecure-registry=10.0.0.0/16 )。
运行下面的命令按照提示操作,该过程会配置
    Ingress Controller (如果没有安装的话)
    Ingress 公网 IP 的 DNS(默认使用 ip.xip.io
    Github API token(用于创建 github repo 和 webhook)
    Jenkins-X 服务
    创建 staging 和 production 等示例项目,包括 github repo 以及 Jenkins 配置等
1
jx install --provider=kubernetes
Copied!
安装完成后,会输出 Jenkins 的访问入口以及管理员的用户名和密码,用于登录 Jenkins。

创建应用

Jenkins X 支持快速创建新的应用
1
# 创建 Spring Boot 应用
2
jx create spring -d web -d actuator
3
4
# 创建快速启动项目
5
jx create quickstart -l go
Copied!
也支持导入已有的应用,只是需要注意导入前要保证
    使用 Github 等 git 系统管理源码并设置好 Jenkins webhook
    添加 Dockerfile、Jenkinsfile 以及运行应用所需要的 Helm Chart
1
# 从本地导入
2
$ cd my-cool-app
3
$ jx import
4
5
# 从 Github 导入
6
jx import --github --org myname
7
8
# 从 URL 导入
9
jx import --url https://github.com/jenkins-x/spring-boot-web-example.git
Copied!

发布应用

1
# 发布新版本到生产环境中
2
jx promote myapp --version 1.2.3 --env production
Copied!

常用命令

1
# Get pipelines
2
jx get pipelines
3
4
# Get pipeline activities
5
jx get activities
6
7
# Get build logs
8
jx get build logs -f myapp
9
10
# Open Jenkins in brower
11
jx console
12
13
# Get applications
14
jx get applications
15
16
# Get environments
17
jx get environments
Copied!
最近更新 2yr ago