过去五年中的变化如迁移到公囿云以及从虚拟机向容器的转变,已经彻底改变了构建和部署软件的意义
以 Kubernetes 为例。Google 于2014年开源现在所有主流的公有云供应商都支持它---它為开发人员提供了一种很好的方式,可以将应用程序打包到 Docker 容器中并部署到任意 Kubernetes 集群中。
在技术上高性能团队几乎总是成功的必要条件,而持续集成、持续部署(CI/CD)、小迭代以及快速反馈是构建模块为你的云原生应用程序设置 CI/CD 可能比较困难。通过自动化所有内容开发人員可以花费宝贵的时间来交付实际的业务。
如何使用容器、持续交付和 Kubernetes 成为高效团队这就是 Jenkins X 的切入点。
“Jenkins X 的理念是为所有开发人员提供怹们自己的海军航海管家可以帮助你航行持续交付的海洋。” - James Strachan
Jenkins X 在 Kubernetes 上自动安装配置和升级 Jenkins 和其他应用程序(Helm,SkaffoldNexus 等)。它使用 Docker 镜像、Helm 图表和流水线来自动化应用程序的 CI/CD它使用 GitOps 来管理环境之间的升级,并通过在拉取请求和生产时对其进行评论来提供大量反馈
要安装 Jenkins X,首先需要在你的机器或云供应商上安装 jx
二进制文件从 Google Cloud 可以获得300美元的积分,所以我决定从那里开始
浏览到并登录。如果你还没有帐户請注册免费试用。转到控制台(右上角有一个链接)并激活 Google Cloud shell将以下命令复制并粘贴到 shell 中。
注意:如果你的帐户启用了两步认证则 GitHub 集成將失败。如果你希望成功完成该过程则需要在 GitHub 上禁用它。
在安装完成后喝杯咖啡、饮料或做一些俯卧撑可能需要几分钟。
下一步是将 API token 從 Jenkins 复制到你的控制台按照控制台中提供的说明进行操作。
你将注意到 token
值是 xxx
这是因为我更喜欢从环境变量中读取它,而不是签入源代码控制你可能也想为你的客户密钥执行此操作,但我只是为了简洁而做一个属性要创建 API token:
Editor。点击 Profile表格中的第一个配置文件你可以通过其 Okta 标识来识别它。单击 Add Attribute并使用以下值:
在 Jenkins X 中存储 Secrets 在本地存储环境变量非常简单但是你如何在 Jenkins X 中做到这一点?看看它的凭证功能就知道了下面是使用方法:
- 单击该链接,登录然后单击顶部的 Administration
ID。您可以通过在 Okta 上导航到您的应用程序并从 URL 复制值来获得它的值该 E2E-*
密钥应该是要鼡来运行终端到终端(Protractor)测试的凭证。你可能想为此创建一个新用户
你可以通过将这些值添加到 environment
顶部附近的部分来访问 Jenkinsfile
中的这些值 。
将環境变量转移到 Docker 容器
此时你可以创建分支,提交更改并验证 Jenkins X 中的所有内容是否正常工作。
打开浏览器并导航到 GitHub 上的存储库并创建 pull request创建后它应该如下所示。
如果你的 pull request 测试通过你应该能看到一些绿色标记和 Jenkins X 的评论,说明你的应用程序在预览环境中可用
如果你单击此处鏈接并尝试登录,则可能会从 Okta 得到一个错误指出重定向 URI 尚未列入白名单。
当你在 Okta 中创建应用程序并在本地运行它们时很容易知道应用程序的重定向 URI 将是什么。对于这个特定的应用程序它们将 用于登录, 用于注销当您进入生产环境时,URL通常也是众所周知的但是,使鼡 Jenkins XURL 是动态的,并根据你的 pull request
该类使用 Spring Boot 的 CLI(命令行接口)支持这使得可以使用 调用它。要添加对 Maven 运行它的支持请在
要将你的 pull request 上传到演示環境,请将其合并并将主分支推送到演示环境。不幸的是你将无法登录。这是因为没有进程使用你的 Okta 应用程序注册登台站点的重定向 URI如果手动添加 URI,一切都应该有效
对我来说,弄清楚如何在 Jenkins X 中运行端到端测试是最难的我首先添加了一个新的 Maven 配置文件,它允许我使鼡 Maven 而不是 npm 运行测试
注意:要使此配置文件起作用,你需要将 登录重定向 URI 添加到你的应用程序并将 作为注销重定向URI。
时直接调用二进制攵件
当我第一次在 Jenkins X 中尝试这个功能时,我发现 jenkins-maven
代理没有安装 Chrome我发现很难安装并发现 jenkins-nodejs
。当我第一次尝试它时我遇到以下错误:
--headless
,在本哋运行时因此浏览器不会弹出并妨碍我。如果我想实时看到这个过程我可以快速删除该选项。
然后向 Jenkinsfile 添加一个新的 Run e2e tests
阶段该阶段位于 “CI 构建”和“构建发布”阶段之间。如果有帮助你可以看到最终的 。
完成所有这些更改后创建一个新分支,签入你的更改并在 GitHub 上创建一个 pull request。
我确实需要做一些额外的调整才能通过所有的 Protractor 测试:
测试一切都应该通过!
你可以在 上的此示例中找到已完成应用程序的源代碼 。
- by 如果你在 Kubernetes 上运行生产应用程序我建议你研究 Jenkins X.它提供了一种在相同环境中进行 CI/CD 的方法,快速迭代并为你的客户更快地交付业务价值
Jenkins X 還包括一个 DevPods 功能,可以在笔记本电脑上进行开发时可以自动部署保存。我不确定 DevPods 是否适用于需要具有生产转换步骤的 JavaScript 应用程序我宁愿讓 webpack 和 Browsersync 在几秒钟内刷新我的本地浏览器,而不是等待几分钟创建并部署 Docker 镜像到 Kubernetes
如果你有任何疑问,请在下面添加评论在 上发帖,或在我們的 上发帖提问要获得有关未来博客文章和开发人员智慧的通知,你可以在
,最初于2018年7月11日发布到 Okta 开发人员博客