初学者入门 CI/CD

2025-05-26

初学者入门 CI/CD

初学者的 CI/CD

什么是 CI/CD?

CI/CD 代表持续集成和持续部署。持续集成意味着持续构建应用程序。设想一下,开发人员对源代码进行了一些更改。现在,持续集成必须能够获取该源代码并准备构建。构建还涉及编译和验证代码、代码审查、单元测试和集成测试,以及打包应用程序。

持续集成之后,我们进入持续交付阶段。至此,您的产品已准备就绪,经过测试,可以交付了。不妨考虑一下像 Jenkins 这样的持续集成工具,它会部署到测试服务器中执行用户验收测试,完成后再部署到生产服务器进行发布。如果此步骤是手动完成的,则称为持续交付;如果是自动完成的,则称为持续部署。

了解工作流程

首先,我们在本地机器上创建一个简单的 Hello World 项目并初始化 Git。完成后,将代码推送到远程仓库。接下来,我们将编写简单的 Jenkins 作业,以便它触发并将代码部署到开发服务器。我们将为 Jenkins 和开发服务器创建两个不同的 AWS 实例。记住,我们将在 Docker 容器内运行 Jenkins 应用程序,这样就无需手动安装。

CI/CD 工作流程

让我们把它变成现实

本地机器内部

步骤 1:让我们创建用 php 编写的简单 Hello World 项目。

第 2 步:初始化 git,提交并将更改推送到远程存储库。

GitHub 内部

创建一个 webhook,以便每当代码推送到指定分支时,jenkins 作业就会触发或查找更改。

转到设置-> Webhooks-> 添加 Webhooks。

Payload URl:URL 的格式为 $JENKINS_BASE_URL/github-webhook/ — 例如:https://ci.example.com/jenkins/github-webhook/

内容类型:application/json

Secret Key:密钥,以便 github 可以访问 jenkins。

您希望哪些事件触发此 webhook?:取决于您偏好的事件。我刚刚检查了推送事件,即每当有内容推送到 GitHub 主分支时都会触发作业。(具体分支名称,您可以在 jenkins 中提及)。

更新 Webhooks。Github 内部就是这样。

Jenkins 实例内部

步骤 1:通过 SSH 连接到你的 AWS Jenkins 实例

```
Enter fullscreen mode Exit fullscreen mode

ssh-i




Step 2: Run update your packages.

Enter fullscreen mode Exit fullscreen mode

sudo apt-get 更新




Step 3: Install docker


Enter fullscreen mode Exit fullscreen mode

sudo apt-get 安装 docker.io




Step 4: Add Docker to your user group and login again after exit


Enter fullscreen mode Exit fullscreen mode

sudo usermod -aG docker ubuntu




Step 5: Let's pull docker image for jenkins:


Enter fullscreen mode Exit fullscreen mode

docker pull jenkins/jenkins




Step 6: Type


Enter fullscreen mode Exit fullscreen mode

Docker 镜像



to see pulled image from jenkins/jenkins repository

Step 7: Run Docker image:


Enter fullscreen mode Exit fullscreen mode

docker run -d -p 8080:8080 --name




Step 8:Type


Enter fullscreen mode Exit fullscreen mode

docker ps



to see running container.

Step 9: Once you setup jenkins inside docker. Try, accessing from browser


        ```
<instance public ip >:<external-port-number>
Enter fullscreen mode Exit fullscreen mode

注意:访问之前,请在 aws 中打开添加入站规则。选择安全组(启动向导)。单击编辑->添加规则,设置自定义 tcp 规则和_外部端口范围(我的情况是 8080)_还有 http 规则,然后保存

瞧!然后你就可以运行 jenkins,安装建议的插件(默认)。填写所需的凭证并设置你的第一个作业集!

步骤1:创建Freestyle项目。

第 2 步:添加一些描述并提供 jenkins 将从中获取您的项目的 github 存储库 url。

记住,要在 GitHub 内部设置 webhook。前往设置->webhooks->添加负载 URL,例如 /github-webhook/

步骤 3:编写一些 shell 脚本以在 dev-server 中部署您的代码。

为了建立 jenkins 和 dev 实例之间的连接,我们需要将 jenkins 公钥添加到 dev 授权密钥中。

在 jenkins 实例中运行ssh-keygen生成 .pub 密钥并将公钥从 .ssh/ 复制到 dev ./ssh/authorized_keys。

instance = '13.232.89.159' 

ARCHIVE_FILENAME = cicd.zip

zip --symlinks -x *.git* -r $ARCHIVE_FILENAME . #compress all the files and create zip file

echo "--------Copying Files to remote dev server from jenkins ----------"

scp -o StrictHostKeyChecking=no index.tar.gz ubuntu@$instance:/home/ubuntu/

echo "--------Finished Copying----------"

echo "Entering to Dev Instance"

ssh -o StrictHostKeyChecking=no ubuntu@$instance '

  mv $ARCHIVE_FILENAME /var/www/html #move zip file from current directory to /var/www/html

  cd /var/www/html

  unzip $ARCHIVE_FILENAME

  rm -rf $ARCHIVE_FILENAME #remove the file once done

' 

Enter fullscreen mode Exit fullscreen mode

脚本部分完成后,我们保存并构建我们的作业。作业构建成功后,我们可以从浏览器访问部署服务器并查看所做的更改。

这只是我们做的一个简单的例子,只是为了了解CI/CD的工作流程。

你太棒了!

文章来源:https://dev.to/samsha1/getting-started-in-cicd-for-begineers-1lp8
PREV
使用 JSDoc 类型增强你的 JavaScript
NEXT
我作为技术主管的第一次经历