fix action for k8s deploy3
Some checks failed
Some checks failed
This commit is contained in:
parent
da6c1874a4
commit
e54ed965de
@ -104,12 +104,40 @@ jobs:
|
||||
echo "停止 NGINX..."
|
||||
sudo /usr/local/nginx/sbin/nginx -s quit
|
||||
|
||||
- name: 准备 Docker 构建上下文
|
||||
- name: 准备构建产物
|
||||
run: |
|
||||
echo "复制 nginx 文件到构建上下文..."
|
||||
sudo cp -r /usr/local/nginx ./nginx-install
|
||||
sudo chown -R $(whoami):$(whoami) ./nginx-install
|
||||
|
||||
# 打包构建产物供后续步骤使用
|
||||
tar -czf nginx-install.tar.gz ./nginx-install
|
||||
|
||||
- name: 上传构建产物
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: nginx-install
|
||||
path: nginx-install.tar.gz
|
||||
retention-days: 1
|
||||
|
||||
build-docker-image:
|
||||
needs: build-nginx
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: 检出代码
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 下载构建产物
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: nginx-install
|
||||
|
||||
- name: 准备构建上下文
|
||||
run: |
|
||||
tar -xzf nginx-install.tar.gz
|
||||
ls -la
|
||||
|
||||
- name: 创建 Dockerfile
|
||||
run: |
|
||||
cat > Dockerfile << 'EOF'
|
||||
@ -154,6 +182,31 @@ jobs:
|
||||
echo "构建 Docker 镜像..."
|
||||
docker build -t nginx-local:latest .
|
||||
|
||||
- name: 保存 Docker 镜像
|
||||
run: |
|
||||
docker save nginx-local:latest > nginx-image.tar
|
||||
|
||||
- name: 上传 Docker 镜像
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: nginx-docker-image
|
||||
path: nginx-image.tar
|
||||
retention-days: 1
|
||||
|
||||
push-to-harbor:
|
||||
needs: build-docker-image
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: 下载 Docker 镜像
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: nginx-docker-image
|
||||
|
||||
- name: 加载 Docker 镜像
|
||||
run: |
|
||||
docker load < nginx-image.tar
|
||||
|
||||
- name: 登录到 Harbor
|
||||
run: |
|
||||
echo "登录到 Harbor 仓库..."
|
||||
@ -174,75 +227,61 @@ jobs:
|
||||
docker rmi ${{ secrets.HARBOR_REGISTRY }}/test/nginx:${{ github.sha }} || true
|
||||
docker rmi ${{ secrets.HARBOR_REGISTRY }}/test/nginx:latest || true
|
||||
|
||||
- name: 部署到 Kubernetes (可选)
|
||||
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
||||
deploy-to-kubernetes:
|
||||
needs: push-to-harbor
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
|
||||
|
||||
steps:
|
||||
- name: 检出代码
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 安装 kubectl
|
||||
uses: azure/setup-kubectl@v3
|
||||
with:
|
||||
version: 'latest'
|
||||
|
||||
- name: 创建 kubeconfig
|
||||
run: |
|
||||
mkdir -p ~/.kube
|
||||
if echo "${{ secrets.KUBE_CONFIG }}" | base64 -d > ~/.kube/config 2>/dev/null; then
|
||||
chmod 600 ~/.kube/config
|
||||
echo "kubectl 配置文件创建成功"
|
||||
else
|
||||
echo "ERROR: kubectl 配置文件创建失败,请检查 KUBE_CONFIG secret 是否正确"
|
||||
echo "KUBE_CONFIG 应该是 base64 编码的 kubeconfig 文件内容"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: 部署到 Kubernetes
|
||||
run: |
|
||||
echo "开始部署到 Kubernetes..."
|
||||
|
||||
# 检查是否配置了 Kubernetes 部署
|
||||
if [[ -n "${{ secrets.KUBE_CONFIG }}" ]]; then
|
||||
# 检查并安装 kubectl (如果需要)
|
||||
if ! command -v kubectl &> /dev/null; then
|
||||
echo "kubectl 未安装,开始安装最新版本..."
|
||||
KUBECTL_VERSION=$(curl -L -s https://dl.k8s.io/release/stable.txt)
|
||||
echo "下载 kubectl 版本: $KUBECTL_VERSION"
|
||||
|
||||
if curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"; then
|
||||
chmod +x kubectl
|
||||
sudo mv kubectl /usr/local/bin/
|
||||
echo "kubectl 安装完成,版本: $(kubectl version --client --short 2>/dev/null || kubectl version --client)"
|
||||
else
|
||||
echo "kubectl 下载失败,尝试使用包管理器安装..."
|
||||
sudo apt-get update && sudo apt-get install -y kubectl || (echo "kubectl 安装失败" && exit 1)
|
||||
fi
|
||||
else
|
||||
echo "kubectl 已存在,当前版本: $(kubectl version --client --short 2>/dev/null || kubectl version --client)"
|
||||
# 可选:检查版本是否过旧,如果需要可以升级
|
||||
# CURRENT_VERSION=$(kubectl version --client -o json 2>/dev/null | jq -r '.clientVersion.gitVersion' || echo "unknown")
|
||||
# echo "当前 kubectl 版本: $CURRENT_VERSION"
|
||||
fi
|
||||
|
||||
# 配置 kubectl
|
||||
echo "配置 kubectl 连接信息..."
|
||||
mkdir -p ~/.kube
|
||||
if echo "${{ secrets.KUBE_CONFIG }}" | base64 -d > ~/.kube/config 2>/dev/null; then
|
||||
chmod 600 ~/.kube/config
|
||||
echo "kubectl 配置文件创建成功"
|
||||
else
|
||||
echo "ERROR: kubectl 配置文件创建失败,请检查 KUBE_CONFIG secret 是否正确"
|
||||
echo "KUBE_CONFIG 应该是 base64 编码的 kubeconfig 文件内容"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 验证 kubectl 连接
|
||||
echo "验证 Kubernetes 集群连接..."
|
||||
if kubectl cluster-info --short; then
|
||||
echo "Kubernetes 集群连接成功"
|
||||
else
|
||||
echo "ERROR: 无法连接到 Kubernetes 集群"
|
||||
echo "请检查:"
|
||||
echo " 1. KUBE_CONFIG secret 是否正确"
|
||||
echo " 2. 集群是否可访问"
|
||||
echo " 3. 证书是否有效"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 设置环境变量
|
||||
export HARBOR_REGISTRY="${{ secrets.HARBOR_REGISTRY }}"
|
||||
export HARBOR_USERNAME="${{ secrets.HARBOR_USERNAME }}"
|
||||
export HARBOR_PASSWORD="${{ secrets.HARBOR_PASSWORD }}"
|
||||
export NGINX_IMAGE_TAG="${{ github.sha }}"
|
||||
export NAMESPACE="${{ secrets.K8S_NAMESPACE || 'default' }}"
|
||||
|
||||
# 进入 k8s 目录
|
||||
cd k8s
|
||||
|
||||
# 运行部署脚本
|
||||
chmod +x deploy.sh
|
||||
./deploy.sh
|
||||
|
||||
echo "Kubernetes 部署完成"
|
||||
# 验证 kubectl 连接
|
||||
echo "验证 Kubernetes 集群连接..."
|
||||
if kubectl cluster-info --short; then
|
||||
echo "Kubernetes 集群连接成功"
|
||||
else
|
||||
echo "跳过 Kubernetes 部署 - 未配置 KUBE_CONFIG"
|
||||
echo "ERROR: 无法连接到 Kubernetes 集群"
|
||||
echo "请检查:"
|
||||
echo " 1. KUBE_CONFIG secret 是否正确"
|
||||
echo " 2. 集群是否可访问"
|
||||
echo " 3. 证书是否有效"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 设置环境变量
|
||||
export HARBOR_REGISTRY="${{ secrets.HARBOR_REGISTRY }}"
|
||||
export HARBOR_USERNAME="${{ secrets.HARBOR_USERNAME }}"
|
||||
export HARBOR_PASSWORD="${{ secrets.HARBOR_PASSWORD }}"
|
||||
export NGINX_IMAGE_TAG="${{ github.sha }}"
|
||||
export NAMESPACE="${{ secrets.K8S_NAMESPACE || 'default' }}"
|
||||
|
||||
# 进入 k8s 目录
|
||||
cd k8s
|
||||
|
||||
# 运行部署脚本
|
||||
chmod +x deploy.sh
|
||||
./deploy.sh
|
||||
|
||||
echo "Kubernetes 部署完成"
|
Loading…
x
Reference in New Issue
Block a user