在现代软件开发中,自动化部署是提高效率和减少人为错误的关键步骤。本文将介绍如何使用Jenkins自动化从GitLab获取源代码并推送到AWSS3的流程,这对于托管静态网站尤其有用。
本文假设已经拥有一个在AWSS3上的静态网页,如果没有,请参考AWS官方文档。同时,应该已经在GitLab上添加了项目。
下载并安装最新版本的Jenkins(截至本文撰写时,LTS版本为2.89.2)。安装后,将更新站点的URL从https更改为http:
Jenkins -> 插件管理器 -> 高级(标签页)-> 更新站点:http://updates.jenkins.io/update-center.json
安装Git插件(版本3.7.0)。
可选:安装Green Balls插件,将成功球变为绿色。
建立本地机器与GitLab之间的SSH认证。获取私钥文件/.ssh/id_rsa
并创建Git凭据。如果还没有SSH密钥对,可以参考GitLab文档创建。
在Jenkins中创建Git凭据:
Jenkins -> 凭据 -> 系统 -> 全局凭据(无限制) -> 添加凭据
选择SSH用户名与私钥类型,粘贴私钥。
在Jenkins中添加Git用户名和电子邮件到Git属性:
管理Jenkins -> 配置系统,在Git插件部分添加Git用户名和电子邮件。
在Jenkins中创建新项目/作业:
Jenkins-> 新建项目,输入作业名称,选择“自由风格项目”,点击“确定”。
在配置页面的“源代码管理”部分,填写Git项目URL并选择要使用的凭据(在步骤2中创建)。
点击“保存”。此时,可以通过点击“立即构建”测试Jenkins作业是否可以从Git获取项目。如果成功,应该看到一个蓝色或绿色的球。可以通过点击蓝色/绿色球查看日志。
要检查项目是否正确从Git拉取到Jenkins工作空间,请点击“工作空间”。应该看到与Git仓库中相同的文件。
IAM(服务)-> 用户,点击“添加用户”,输入想要的用户名,勾选“程序访问”,点击“下一步权限”,选择“直接附加策略”标签页,搜索's3',选择'AmazonS3FullAccess',点击“下一步审查”,点击“创建用户”。
记下用户的“访问密钥ID”和“秘密访问密钥”,因为在此之后将无法再次获取。
安装并配置S3cmd(命令行客户端访问S3):
在终端中:
sudo easy_install pip
sudo pip install s3cmd
配置S3cmd:
s3cmd —configure
输入访问密钥ID和秘密访问密钥,并接受其他默认问题(除非区域不是美国,请输入不同的区域)。
使用以下命令找到S3cmd的位置:
which s3cmd
更新Jenkins作业以使用S3cmd将代码推送到S3:
返回Jenkins中创建的作业并点击“配置”,转到“构建”部分,输入:
PATH="/usr/local/bin:$PATH"
s3cmd sync . s3://optimus.com --delete-removed --exclude '.git/'
解释:
第一行告诉Jenkins通过将S3cmd的位置添加到PATH来找到s3cmd命令。
第二行使用s3cmd将所有内容(.)复制到名为optimus.com的S3桶中,--delete-removed将从S3中删除已删除的文件,--exclude '.git/'排除将git目录同步到S3。
点击“保存”,然后点击“立即构建”。通过检查作业的日志,应该看到Jenkins从Git拉取代码并将其推送到AWS S3。