-
Notifications
You must be signed in to change notification settings - Fork 1
使用 Jenkins 从 GitHub 部署到 AKS
ande zeng edited this page Jun 19, 2020
·
1 revision
通过 Jenkins 中的持续集成(CI)和持续部署(CD),拉取 GitHub 代码部署到 AKS 集群。
- 安装 Docker、kubectl、helm
- 安装并配置 azure cli
$ sudo apt install default-jdk
下载并安装 Jenkins
$ mkdir jenkins && cd jenkins
$ wget https://pkg.jenkins.io/debian-stable/binary/jenkins_2.222.4_all.deb
$ sudo apt-get install daemon
$ sudo dpkg -i jenkins_2.222.4_all.deb
依次点击 Jenkins > 凭据 > 系统 > 全局凭据(unrestricted) > 添加凭据(地址http://<JENKINS-IP>:8080/credentials/store/system/domain/_/newCredentials
),凭据类型为 Username with password
,并依次填入以下信息:
- 用户名:登录 docker hub 的用户名
- 密码
- ID:凭据标识
在 Jenkins 主页点击 新建任务
- 输入任务名称,选择
构建一个自由风格的软件项目
。 - 在
General
中选择GitHub 项目
并输入项目 URL
- 在
源码管理
中,选择Git
并输入Repository URL
- 在
构建触发器
中选择GitHub hook trigger for GITScm polling
-
构建环境
选择Use secret text(s) or file(s)
- 在
绑定
中,依次点击添加
>Username with password(separated)
,然后选择此前添加的 docker hub 凭据,并输入用户名变量
和密码变量
- 用户名变量:
DOCKER_HUB_USERNAME
- 密码变量:
DOCKER_HUB_PASSWORD
- 在构建中添加
执行 shell
- Build & Push images
# 镜像名称
ACTIVITYAPI_IMAGE_NAME="togetherhub/activityapi:jenkins-${BUILD_NUMBER}"
MESSAGINGAPI_IMAGE_NAME="togetherhub/messagingapi:jenkins-${BUILD_NUMBER}"
APIGATEWAYUSER_IMAGE_NAME="togetherhub/apigatewayuser:jenkins-${BUILD_NUMBER}"
WEBSPA_IMAGE_NAME="togetherhub/webspa:jenkins-${BUILD_NUMBER}"
# 构建镜像
docker build -t $ACTIVITYAPI_IMAGE_NAME -f ./src/microservices/Activity/Activity.API/Dockerfile .
docker build -t $MESSAGINGAPI_IMAGE_NAME -f ./src/microservices/Messaging/Messaging.API/Dockerfile .
docker build -t $APIGATEWAYUSER_IMAGE_NAME -f ./src/apigateways/ApiGateway.User/Dockerfile .
docker build -t $WEBSPA_IMAGE_NAME -f ./src/webapps/webspa/Dockerfile .
# 登录 docker hub
docker login -u ${DOCKER_HUB_USERNAME} -p ${DOCKER_HUB_PASSWORD}
# 推送到 docker hub
docker push $ACTIVITYAPI_IMAGE_NAME
docker push $MESSAGINGAPI_IMAGE_NAME
docker push $APIGATEWAYUSER_IMAGE_NAME
docker push $WEBSPA_IMAGE_NAME
- Deploy
IMAGE_TAG="jenkins-${BUILD_NUMBER}"
KUBE_CONFIG_PATH="/var/lib/jenkins/config"
helm upgrade --install activityapi ./k8s/helm/activityapi/ -f ./k8s/helm/inf.yaml --set image.tag=$IMAGE_TAG --namespace together --kubeconfig $KUBE_CONFIG_PATH
helm upgrade --install messagingapi ./k8s/helm/messagingapi/ -f ./k8s/helm/inf.yaml --set image.tag=$IMAGE_TAG --namespace together --kubeconfig $KUBE_CONFIG_PATH
helm upgrade --install apigatewayuser ./k8s/helm/apigatewayuser/ -f ./k8s/helm/inf.yaml -f ./k8s/helm/ingress-values.yaml --set image.tag=$IMAGE_TAG --namespace together --kubeconfig $KUBE_CONFIG_PATH
helm upgrade --install webspa ./k8s/helm/webspa/ -f ./k8s/helm/inf.yaml -f ./k8s/helm/ingress-values.yaml --set image.tag=$IMAGE_TAG --namespace together --kubeconfig $KUBE_CONFIG_PATH
- 完成保存
- 在 GitHub 存储库中点击
Settings
,然后转到Webhooks
- 点击
Add webhook
,输入以下信息:
- Payload URL:
http://<YOUR-JENKINS-PUBLIC-IP:8080>/github-webhook/
- 保存添加
修改代码后推送到 GitHub,Jenkins 将会自动启动生成作业,并从 GitHub 拉取最新代码,生成、推送镜像,最终部署到 AKS 集群中