通过 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 凭据,并输入用户名变量和密码变量
- 在构建中添加
执行 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,输入以下信息:
- 保存添加
修改代码后推送到 GitHub,Jenkins 将会自动启动生成作业,并从 GitHub 拉取最新代码,生成、推送镜像,最终部署到 AKS 集群中



