65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Jenkins 将静态网页从 GitLab 部署到 Amazon S3

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.33/5 (3投票s)

2018年1月1日

CPOL

4分钟阅读

viewsIcon

16507

自动从 GitLab 拉取静态网页代码并使用 Jenkins 部署到 Amazon S3。

引言

本文档提供了使用 Jenkins 将源代码从 GitLab 拉取并推送到 S3 存储桶,然后部署到 Amazon S3 的基本设置说明。使用 Jenkins 进行部署自动化可以省去使用 AWS 在线控制台手动上传文件的麻烦。除了节省时间,这种方法还能推送最新 Git 推送中提交的精确代码,从而避免上传错误的文件。这对于存储在 S3 上、包含大量文件的静态网站非常有用。

先决条件

操作系统:Mac OS,但主要思路与操作系统无关。

假定您已经有一个 AWS S3 上的静态网页。如果没有,您可以查看AWS 文档中的说明

您还应该已将项目添加到 GitLab。如果没有,您可以查看他们的文档

安装 Jenkins

  1. 下载 Jenkins 并安装(撰写本文时当前 LTS 版本为 2.89.2)
  2. 安装后,将 更新站点 (Update Site) URL 从 https 更改为 http

    Jenkins->插件管理器(Plugin Manager)->高级(Advanced) (选项卡)->更新站点(Update Site):http://updates.jenkins.io/update-center.json

  3. 安装 Git 插件 (3.7.0)

    Jenkins->插件管理器(Plugin Manager)->可用(Available) (选项卡)

可选。安装 Green Balls 插件,将蓝色的成功球变成绿色。

设置从 GitLab 拉取项目

在本地计算机和 GitLab 之间建立 SSH 身份验证。

  1. 获取文件 /.ssh/id_rsa 中的私钥,并创建一个 Git 凭证。

    如果您还没有 SSH 密钥对,此网站将向您展示如何创建:https://docs.gitlab.com/ce/ssh/README.html

  2. 在 Jenkins 中创建一个 Git 凭证。

    Jenkins->凭证(Credentials)->系统(System)->全局凭证(Global credentials) (无限制) -> 添加凭证(Add Credentials)

    1. 类型:带私钥的 SSH 用户名 (SSH Username with private key)
    2. 选择私钥并粘贴私钥
    3. OK

  3. 向 Jenkins Git 属性添加 Git 用户名和邮箱。
    1. 管理 Jenkins(Manage Jenkins)->系统配置(Configure System)
    2. 在 Git 插件部分下添加您的 Git 用户名和邮箱

  4. 在 Jenkins 中创建一个项目/作业。

    Jenkins->新建 Item(New Item)

    1. 为此作业输入任何名称
    2. 选择 自由风格项目(Freestyle Project)
    3. OK

  5. 配置 源代码管理(Source Code Management) 以从 Git 拉取项目。
    1. 源代码管理(Source Code Management) 选项卡下,填写 Git 项目 URL 并选择要使用的凭证(在步骤 2 中创建)。
    2. 保存(Save)。

  6. 此时,您可以测试 Jenkins 作业是否可以从 Git 检索您的项目,方法是单击 立即构建(Build Now)

    如果成功,您应该会看到一个蓝色或绿色的球。您可以单击蓝色/绿色球来查看日志。

    要检查项目是否已正确从 git 拉取到 Jenkins 工作区,请单击 工作区(Workspace)。您应该会看到与您的 Git 存储库中的文件相同的列表。

    将项目推送到 Amazon S3

  7. 创建一个用户以允许访问您的 S3 存储桶。
    1. 在在线 AWS 控制台 ->IAM (服务) ->用户(Users)
    2. 单击 添加用户(Add user)
    3. 输入您想要的任何用户名
    4. 勾选 编程访问 (Programmatic access)
    5. 单击 下一步:权限(Next Permission)
    6. 选择 直接附加策略(Attach Policy Directly) 选项卡
    7. 搜索 's3'
    8. 选择 AmazonS3FullAccess
    9. 单击 下一步:复核(Next Review)
    10. 单击 创建用户(Create user)
    11. 记下 访问密钥 ID(Access Key ID) 和 秘密访问密钥(Secret Access Key),因为在此之后它们将不再可用。
    12. 单击 关闭(Close)

  8. 安装并配置 S3cmd(用于访问 S3 的命令行客户端)。

    在终端中

    1. 如果尚未安装 PIP,请安装 PIP,以便使用它来安装 S3CMD:sudo easy_install pip
    2. 安装 S3cmd:sudo pip install s3cmd
    3. 配置 S3cmd:s3cmd —configure
    4. 输入访问密钥 ID 和秘密访问密钥,并接受其他问题的默认设置。(除非您的区域不是美国,否则输入不同的区域。)
    5. 键入 which s3cmd 查找 S3cmd 的位置(我的位置是“/usr/local/bin/s3cmd”)
  9. 更新 Jenkins 作业以使用 S3cmd 将代码推送到 S3
    1. 返回 Jenkins 中创建的作业并单击 配置(Configure)
    2. 转到 构建(Build) 部分
    3. Enter

      PATH="/usr/local/bin:$PATH"
      s3cmd sync . s3://optimus.com --delete-removed --exclude '.git/'

      说明

      第一行通过将 s3cmd 的位置添加到 PATH 来告诉 Jenkins 在哪里可以找到 s3cmd 命令。
      第二行使用 s3cmd 将所有文件(.)复制到名为
      optimus.com 的 S3 存储桶。
      --delete-removed 将从 S3 中删除已删除的文件。
      --
      exclude '.git/' 排除要同步到 S3 的 git 目录。

    4. 单击 保存(Save)
    5. 单击 立即构建(Build Now)

通过查看作业日志,您应该会看到 Jenkins 从 Git 拉取了代码并将其推送到 AWS S3。

就是这样!希望这对您有所帮助。

历史

  • 2018 年 1 月 1 日:初始版本
© . All rights reserved.