18 构建与发布至生产环境

在上一篇文章中,我们探讨了如何将应用部署到测试环境。随着功能的验证和质量的提升,我们进入了 CI/CD 流程的下一阶段:将构建后的应用发布到生产环境。本篇将重点介绍这一过程的自动化实现,确保我们可以顺利、安全地将代码推向最终用户。

1. 准备工作

要将应用部署到生产环境,您首先需要确保以下几个要素已经备齐:

  • 可靠的构建工件:确保您的代码在测试环境经过充分的验证,构建出稳定的工件(如Docker镜像、JAR包等)。
  • 生产环境配置:生产环境通常与测试环境不同,确保您有正确的配置文件(数据库连接、API密钥等)。
  • 访问权限:确保运行 CI/CD 过程的工具能够访问到生产服务器。

2. 自动化构建

首先,我们需要设置构建过程的自动化。此过程可以使用 CI 工具(如 GitHub Actions、GitLab CI、Jenkins 等)来实现。下面是一个使用 GitHub Actions 设置构建的简要示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
name: CI/CD Pipeline

on:
push:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'

- name: Install dependencies
run: npm install

- name: Build application
run: npm run build

- name: Build Docker image
run: |
docker build -t myapp:${{ github.sha }} .

- name: Push Docker image
run: |
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
docker push myapp:${{ github.sha }}

在这个例子中,当我们将代码推送到 main 分支时,自动化构建过程会被触发。最终,我们的构建工件(Docker 镜像)将被推送到 Docker Hub。

3. 发布至生产环境

构建完镜像后,接下来是将其部署到生产环境的过程。我们将使用环境变量和适当的部署工具(如 Kubernetes、Docker Compose、直接使用 SSH 等)来实现这一点。

使用 Kubernetes 部署示例

假设您在生产环境中使用 Kubernetes,可以通过以下步骤将构建的 Docker 镜像部署到 Kubernetes 集群中:

首先,创建一个 deployment.yaml 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:${{ github.sha }}
ports:
- containerPort: 80

在 CI/CD 流水线中添加以下步骤以应用此部署:

1
2
3
- name: Deploy to Production
run: |
kubectl apply -f deployment.yaml

使用 SSH 直接部署示例

如果您直接在服务器上部署,并且使用 SSH,可以按照以下步骤更新应用:

1
2
3
- name: Deploy to Production Server
run: |
ssh user@production-server "docker pull myapp:${{ github.sha }} && docker-compose up -d"

这里通过 SSH 连接到生产服务器,拉取更新的 Docker 镜像,并且重启服务。

4. 验证发布

在完成发布后,可以通过自动化测试(如健康检查)验证我们的应用是否成功运行。例如,可以添加以下步骤检查应用是否可用:

1
2
3
- name: Check application health
run: |
curl -f http://your-production-url/health || exit 1

如果健康检查失败,发布流程可以及时终止,以避免影响用户。

5. 连贯的 CI/CD 结构

本节我们讨论了从构建到生产环境发布的一系列自动化过程。确保每一步都是自动且可靠的,为随后的监控和反馈提供了基础。在下一篇文章中,我们将聚焦于如何监控应用的运行状况和采集日志,以便及时获得反馈并进行迭代。


通过这一系列内容,我们可以看到 CI/CD 流程的重要性以及如何通过自动化来提高交付的可靠性和效率。持续集成和部署不仅提高了开发效率,也减少了人为错误的发生,确保更高质量的软件交付。

18 构建与发布至生产环境

https://zglg.work/cicd-pipeline-automation/18/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论