简化 DevOps 工作流程:集成 Atlassian BitBucket 和 Slack 实现无缝管道和 Docker 管理

2025-05-25

简化 DevOps 工作流程:集成 Atlassian BitBucket 和 Slack 实现无缝管道和 Docker 管理

在当今快速发展的软件开发领域,成功实施 DevOps 实践已成为快速交付高质量软件的关键。DevOps 是开发与运营的融合,强调协作、自动化以及持续集成/持续部署 (CI/CD) 流水线,以简化软件开发生命周期。

为了实现这种无缝的工作流程,越来越多的组织开始使用 Atlassian BitBucket 等强大的工具进行版本控制、协作和代码部署。此外,Slack 已成为领先的沟通和协作平台,为团队提供了一个实时沟通和与各种开发工具集成的中心枢纽。

在本指南中,我们将探索如何利用 Atlassian BitBucket 和 Slack 的强大功能,打造一个和谐的 CI/CD 流水线和 Docker 容器管理环境。这种集成将使您的开发和运营团队能够高效协作、自动化工作流程并自信地部署代码。

访问您的 BitBucket 仪表板

我们的旅程从 BitBucket 仪表板开始,它是管理代码库、代码和协作的中央控制面板。如果您还没有 BitBucket 帐户,可以在其网站上注册一个。登录后,请按照以下步骤操作:

  • 创建新的存储库:
  • 单击创建新存储库

图片描述

  • 在创建新存储库时执行以下操作:

A. 项目名称:为您的项目指定一个有意义的名称,以便有效地对您的工作进行分类。B
. 存储库名称:为存储库提供一个唯一的名称,以反映项目或应用程序。C
. 点击“创建存储库”按钮完成设置。

图片描述

D.确认存储库已成功创建。

图片描述

设置 Slack

有效的沟通和协作在 DevOps 中至关重要,而 Slack 提供了一个完美的实时交互平台。以下是如何设置 Slack 工作区:

  • 转到 Slack 网站并单击“免费试用”按钮。

图片描述

  • 提供您的电子邮件地址并点击“继续”。

  • 在“创建新的 Slack 工作区”页面上,单击“创建工作区”按钮。

  • 为您的公司或团队提供一个名称。

图片描述

  • 接下来,添加工作区名称,然后单击“下一步”。

图片描述

  • 虽然您可以邀请团队成员,但为了本文的目的,我们跳过此步骤并单击“下一步”。

图片描述

  • 提供有关您的团队当前正在开展的工作的信息。

图片描述

  • 确认您的工作区现在处于活动状态。

图片描述

  • 创建一个名为“devops-engineering”的频道。

图片描述

图片描述

将 BitBucket 连接到 Slack

有了 BitBucket 存储库和 Slack 工作区,就可以将两者连接起来,实现无缝协作和自动通知:

  • 返回您的 BitBucket 存储库页面并单击“存储库设置”。

图片描述

  • 在“Slack”部分下,单击“连接”按钮。

图片描述

  • 单击“允许”允许 BitBucket Cloud 访问您的 Slack 工作区。

图片描述

  • 选择你的工作区和频道,添加聊天订阅。点击“添加”按钮。

图片描述

  • 确认订阅。

图片描述

克隆您的 BitBucket 存储库

要开始在本地使用代码,您需要将 BitBucket 存储库克隆到本地计算机:

  • 在 BitBucket 仓库页面,点击“克隆”并复制仓库 URL 链接。

图片描述

图片描述

  • 使用存储库 URL 链接在命令行中运行 git clone。
git clone repo_url
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 导航到 cube360 目录。
cd cube360
Enter fullscreen mode Exit fullscreen mode
  • 创建一个名为 index.html 的新文件并添加

    你好世界!!!

touch index.html

<p>Hello World!!!</p>
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 使用 git add index.html 将 index.html 添加到暂存区。
git add index.html
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 运行 git status 来检查存储库的状态。
git status
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 使用 git commit -m“项目 Hello World!! 的初始提交”提交更改。
git commit -m "Initial commit of project Hello World!!"
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 使用 git push 将您的代码推送到 BitBucket。
git push
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 检查 Slack 中的“devops-engineering”频道,您应该会看到有关推送操作的警报。

图片描述

  • 为了进一步测试集成,添加

    这是一个很棒的 DevOps 协作功能

    到 index.html。
<p>This is a great DevOps Collaboration feature</p>
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 运行 git add * 和 git commit -m“添加了更多代码”。
git add * and git commit -m "Added more code"
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 使用 git push 将您的更改推送到 BitBucket。
git push  
Enter fullscreen mode Exit fullscreen mode

图片描述

图片描述

用于构建和部署的 BitBucket Pipelines

现在,让我们深入探讨 DevOps 的核心——自动化。BitBucket Pipelines 是一个强大的 CI/CD 解决方案,支持代码的自动构建、测试和部署。我们将首先配置必要的文件和目录:

  • 返回您的 BitBucket 存储库仪表板并选择“Pipelines”选项。

图片描述

  • 在本地计算机上,创建以下文件和目录:

A. 使用 touch Dockerfile 创建一个名为“Dockerfile”的文件。

touch Dockerfile
Enter fullscreen mode Exit fullscreen mode

B. 使用 touch bitbucket-pipelines.yaml 创建另一个名为“bitbucket-pipelines.yml”的文件。

touch bitbucket-pipelines.yaml
Enter fullscreen mode Exit fullscreen mode

C. 使用 touch nginx.conf 创建一个名为“nginx.conf”的新文件。

touch nginx.conf
Enter fullscreen mode Exit fullscreen mode

D. 使用 mkdir www-data 创建一个名为“www-data”的目录。

mkdir www-data
Enter fullscreen mode Exit fullscreen mode

图片描述

E. 使用 mv index.html www-data/ 将 index.html 移动到“www-data/”目录。

mv index.html www-data/
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 使用以下命令添加、提交并将更改推送到 BitBucket:
git add .
Enter fullscreen mode Exit fullscreen mode
git status
Enter fullscreen mode Exit fullscreen mode
git commit -m "Updated with Docker code"
Enter fullscreen mode Exit fullscreen mode
git push
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 现在确认 Bitbucket 存储库仪表板上的最新更改。

图片描述

  • 现在,更新本地计算机上的文件并将其提交到远程存储库:

A.更新您的 Dockerfile。

# docker pull xxxxxxxx/yyyyyyy:zzzzzzzzz
# docker run --name nginx-webserver -d -p 8080:80 xxxxxxxx/yyyyyyy:zzzzzzzzz

FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y nginx
ADD nginx.conf /etc/nginx/nginx.conf

ADD ./www-data /www-data

EXPOSE 80
CMD ["nginx"] 

Enter fullscreen mode Exit fullscreen mode

图片描述

这是一个 Dockerfile,一个用于定义 Docker 镜像的文本脚本。Dockerfile 描述了如何使用 Ubuntu 14.04 基础镜像构建一个用于运行 NGINX Web 服务器的镜像。以下是 Dockerfile 各部分的详细说明:

基础图像选择

   FROM ubuntu:14.04
Enter fullscreen mode Exit fullscreen mode

此行指定了正在构建的新镜像的基础镜像。在本例中,它使用“ubuntu:14.04”镜像作为起点。生成的镜像将以 Ubuntu 14.04 作为其基础操作系统。

软件包安装

   RUN apt-get update
   RUN apt-get install -y nginx
Enter fullscreen mode Exit fullscreen mode

这些行使用RUN指令在构建过程中执行图像内的命令。

第一个命令apt-get update更新软件包存储库以确保软件包管理器(APT)具有最新的软件包信息。

第二条命令apt-get install -y nginx用于安装 NGINX Web 服务器。该-y标志会自动确认安装过程中出现的任何提示。

配置文件添加

   ADD nginx.conf /etc/nginx/nginx.conf
Enter fullscreen mode Exit fullscreen mode

此行将名为“nginx.conf”的文件从上下文(Dockerfile 所在的目录)复制到镜像中。

具体来说,它会将配置文件添加到镜像中的“/etc/nginx/nginx.conf”位置。这是 NGINX 默认查找其配置的位置。

目录添加

   ADD ./www-data /www-data
Enter fullscreen mode Exit fullscreen mode

此行将名为“www-data”的目录的内容从上下文复制到图像中。

它将内容放入图像内的“/www-data”目录中。

端口暴露

   EXPOSE 80
Enter fullscreen mode Exit fullscreen mode

这行代码告知 Docker,容器将在运行时监听 80 端口。它实际上并没有发布该端口,但它记录了容器期望在 80 端口上接收外部流量。

命令执行

   CMD ["nginx"]
Enter fullscreen mode Exit fullscreen mode

此行指定基于此映像的容器启动时运行的默认命令。

它运行“nginx”命令,启动容器内的 NGINX Web 服务器。

B. 更新您的bitbucket-pipelines.yml文件。

# This is a sample build configuration for Docker.
# Check our guides at https://confluence.atlassian.com/x/O1toN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: atlassian/default-image:2

pipelines:
  default:
    - step:
        name: Build NGINX Docker Image
        services:
          - docker
        script: # Modify the commands below to build your repository.
          # Set $DOCKER_HUB_USERNAME and $DOCKER_HUB_PASSWORD as environment variables in repository settings
          - export IMAGE_NAME=oloruntobi/my-nginx-image:$BITBUCKET_COMMIT

          # build the Docker image (this will use the Dockerfile in the root of the repo)
          - docker build -t $IMAGE_NAME .
          # authenticate with the Docker Hub registry
          - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
          # push the new Docker image to the Docker registry
          - docker push $IMAGE_NAME

          - echo "finished building!"
Enter fullscreen mode Exit fullscreen mode

图片描述

这段代码是一个 YAML 格式的配置文件,用于定义 Atlassian Bitbucket Pipelines 中使用 Docker 的构建流程。它描述了如何为 NGINX Web 服务器构建 Docker 镜像并将其推送到 Docker 镜像仓库(例如 Docker Hub)。代码分解如下:

Docker 镜像配置

  • image: atlassian/default-image:2:指定要用作构建环境的 Docker 镜像。在本例中,它使用“atlassian/default-image”版本 2 镜像作为运行构建步骤的基础镜像。

管道配置

  • pipelines:此部分定义了构建过程不同阶段的管道。在本例中,只有一个名为“default”的管道。

管道步骤

  • - step::这表示“默认”管道内构建步骤的开始。

步骤名称

  • name: Build NGINX Docker Image:这是构建步骤的名称,用于识别和显示目的。

服务配置

  • services::此部分指定了构建步骤中应可用的服务。在本例中,它包含“docker”服务,表示 Docker 应该可用来执行与 Docker 相关的命令。

构建脚本

  • script::此部分定义了构建步骤中要执行的命令序列。这些命令将在之前指定的 Docker 镜像中运行。

环境变量设置

  • export IMAGE_NAME=oloruntobi/my-nginx-image:$BITBUCKET_COMMIT:此命令设置一个名为 的环境变量IMAGE_NAME。它使用存储库名称“oloruntobi/my-nginx-image”,并附加 Bitbucket 提交哈希来为 Docker 镜像创建唯一名称。

Docker 构建

  • docker build -t $IMAGE_NAME .:此命令使用位于存储库根目录中的 Dockerfile 构建 Docker 镜像。该标志为镜像-t分配一个标签(在本例中为 的值)。IMAGE_NAME

Docker登录

  • docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD:此命令使用提供的 Docker Hub 用户名和密码向 Docker Hub 镜像仓库进行身份验证。此身份验证是将 Docker 镜像推送到 Docker Hub 所必需的。

Docker Push
- docker push $IMAGE_NAME:此命令将新构建的 Docker 镜像推送到 Docker 镜像仓库(在本例中为 Docker Hub)。它使用IMAGE_NAME变量作为镜像名称和标签。

Echo Finished
- echo "finished building!":这是一个简单的信息消息,将打印到构建日志中,表明构建过程已完成。

C.更新nginx.conf文件。

daemon off;
pid /var/lib/nginx/nginx.pid;

events {
  worker_connections 1024;
}

http {
  include /etc/nginx/mime.types;
  index index.html;

  server {
    listen *:80;

    location / {
      root /www-data;
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

图片描述

让我们分解一下此配置中的不同部分和指令:

全球指令

daemon off;:此指令控制 NGINX 是否作为守护进程在后台运行。设置为“off”表示 NGINX 将在前台运行,这对于 Docker 容器或直接从命令行运行 NGINX 非常有用。

pid /var/lib/nginx/nginx.pid;:此指令指定 NGINX 写入其进程 ID (PID) 文件的路径。该文件包含正在运行的 NGINX 实例的进程 ID。

事件块

events { ... }:此块包含与事件相关的配置指令。

worker_connections 1024;:此指令设置工作进程可以同时处理的最大连接数。在本例中,它设置为 1024 个连接,这是一个合理的默认值。

http 块

http { ... }:此块定义 NGINX 的 HTTP 相关配置指令。

包括指令

include /etc/nginx/mime.types;:此指令包含指定的文件“/etc/nginx/mime.types”,其中包含文件扩展名到 MIME 类型的映射。它用于确定 NGINX 所服务的文件的 MIME 类型。

index 指令

index index.html;:此指令指定请求目录时默认提供的文件。在本例中,如果请求的是目录,NGINX 将查找“index.html”文件,如果找到则提供该文件。

服务器块

server { ... }:此块定义了一个服务器块,它代表 NGINX 中的一个单独的 HTTP 服务器。listen
: 80;:此指令指定服务器应在端口 80 上监听传入的 HTTP 请求。星号 ( ) 表示它将监听所有可用的网络接口。

位置区块

location / { ... }:此块在服务器块中定义了一个 location 块。它指定了 NGINX 如何处理与 location 模式匹配的请求(在本例中为根路径“/”)。

root /www-data;:此指令设置用于为此位置提供内容的根目录。对根路径(“/”)的请求将从“/www-data”目录进行处理。这是 Web 内容预期所在的位置。

总之,此 NGINX 配置设置了一个监听端口 80 的基本 HTTP 服务器,提供来自“/www-data”目录的内容,并使用“index.html”作为默认文件。

D. 使用以下命令添加、提交和推送这些更改:

git add .
Enter fullscreen mode Exit fullscreen mode
git status
Enter fullscreen mode Exit fullscreen mode
git commit -m "Adding more code to our repo"
Enter fullscreen mode Exit fullscreen mode
git push
Enter fullscreen mode Exit fullscreen mode

图片描述

E.接下来在仓库设置中配置环境变量:

  • 点击“存储库设置”。

图片描述

  • 在“存储库变量”下,创建两个名为 DOCKER_HUB_USERNAME 和 DOCKER_HUB_PASSWORD 的变量。

图片描述

图片描述

图片描述

图片描述

  • 通过添加您的 Docker Hub 用户名和图像名称来更新 bitbucket-pipelines.yml 文件。

图片描述

  • 将更改推送到您的 BitBucket 存储库。
git add .
Enter fullscreen mode Exit fullscreen mode
git status
Enter fullscreen mode Exit fullscreen mode
git commit -m "Adding more code to our repo"
Enter fullscreen mode Exit fullscreen mode
git push
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 前往 BitBucket 仓库的“管道”页面,确认管道已成功通过。此外,请检查 Docker Hub 以验证您的工件是否可用。

图片描述

图片描述

图片描述

F.现在,让我们继续:

  • 通过 Docker Desktop 启动 Docker 守护进程。

图片描述

  • 按照以下步骤运行你的容器:a. 使用 docker ps -a 检查本地机器上的容器
docker ps -a
Enter fullscreen mode Exit fullscreen mode

图片描述

b. 使用 docker pull username/my-nginx-image:tag 从 Docker Hub 拉取镜像

docker pull username/my-nginx-image:tag
Enter fullscreen mode Exit fullscreen mode

图片描述

c. 使用 docker run --name nginx-webserver -d -p 8080:80 username/my-nginx-image:tag 启动你的容器

docker run --name nginx-webserver -d -p 8080:80 username/my-nginx-image:tag
Enter fullscreen mode Exit fullscreen mode

图片描述

d.使用docker ps确认容器的状态

docker ps
Enter fullscreen mode Exit fullscreen mode

图片描述

e. 运行 curl localhost:8080 测试你的应用程序

curl localhost:8080
Enter fullscreen mode Exit fullscreen mode

图片描述

BitBucket Pipelines 的 Slack 通知

要在管道成功或失败时在 Slack 中接收通知,请按照以下步骤操作:

  • 返回 BitBucket 存储库页面并点击“存储库设置”。

图片描述

  • 在“SLACK”部分下,单击“设置”按钮。

图片描述

  • 在主部分下添加“管道失败”和“管道成功”选项。

图片描述

  • 在您的 index.html 页面中添加新行:

    这个 DevOps 就是通过自动化实现的 DevOpsing!

<p>This DevOps is DevOpsing by automation!</p>
Enter fullscreen mode Exit fullscreen mode
  • 将更改推送至 BitBucket。
git add .
Enter fullscreen mode Exit fullscreen mode
git status
Enter fullscreen mode Exit fullscreen mode
git commit -m "adding more code to index.html file"
Enter fullscreen mode Exit fullscreen mode
git push
Enter fullscreen mode Exit fullscreen mode

图片描述

  • 通过检查 Slack 频道和 BitBucket Pipelines 页面进行确认。

图片描述

图片描述

图片描述

结论

通过将 Atlassian BitBucket 和 Slack 集成到您的 DevOps 工作流程中,您已朝着简化开发流程迈出了重要一步。这种全面的集成使您能够自动化代码部署、高效管理 Docker 容器,并接收有关管道状态的实时通知。

在快节奏的软件开发领域,协作和自动化至关重要。这种集成使您的团队能够更快速、更可靠地交付代码。它营造了一种协作透明的文化,使开发和运营团队能够无缝协作。

当您使用 BitBucket 和 Slack 开启 DevOps 之旅时,请记住,这仅仅是个开始。持续改进并适应团队的独特需求,将进一步提升您的 DevOps 实践,帮助您快速、自信地交付卓越的软件。祝您 DevOps 之旅愉快!

文章来源:https://dev.to/oloruntobiolurombi/streamlined-devops-workflows-integrating-atlassian-bitbucket-and-slack-for-seamless-pipelines-and-docker-management-2mnj
PREV
用简单的英语描述地形
NEXT
掌握建立 Amazon RDS 数据库的艺术:设置和优化的综合指南