面试题答案
一键面试实现思路
- 获取用户输入:从脚本执行参数中获取要拉取的GitLab分支名称。
- 拉取代码:使用
git
命令从GitLab指定分支拉取代码。 - 构建Docker镜像:在代码目录中使用
docker build
命令构建Docker镜像,镜像标签可包含分支名和时间戳等信息以区分版本。 - 推送镜像:使用
docker push
命令将构建好的镜像推送到镜像仓库。 - 部署到测试环境:使用
kubectl apply -f
命令,指定测试环境的Kubernetes配置文件进行部署。 - 部署到生产环境:同理,使用
kubectl apply -f
命令,指定生产环境的Kubernetes配置文件进行部署。 - 记录日志:在每个关键步骤成功执行后,使用
echo
等命令将相关信息记录到日志文件中,日志文件可包含时间、操作、结果等信息。
关键代码
#!/bin/bash
# 获取分支名称作为参数
branch=$1
if [ -z "$branch" ]; then
echo "请指定分支名称"
exit 1
fi
# 拉取代码
git clone -b $branch <gitlab_repository_url>
cd <project_directory>
# 构建Docker镜像
timestamp=$(date +%Y%m%d%H%M%S)
image_tag=your_image_name:$branch-$timestamp
docker build -t $image_tag.
# 推送镜像到镜像仓库
docker push $image_tag
# 部署到测试环境
kubectl apply -f test_env_k8s_config.yaml
echo "$(date): 测试环境部署成功,镜像: $image_tag" >> deployment_log.txt
# 部署到生产环境
kubectl apply -f prod_env_k8s_config.yaml
echo "$(date): 生产环境部署成功,镜像: $image_tag" >> deployment_log.txt
请注意:
<gitlab_repository_url>
需替换为实际的GitLab代码仓库URL。<project_directory>
需替换为实际项目代码所在目录。your_image_name
需替换为实际的镜像名称。test_env_k8s_config.yaml
和prod_env_k8s_config.yaml
需替换为实际的Kubernetes配置文件名及路径。