javascript - 如何使用Jenkins部署网站

标签 javascript jenkins babeljs jenkins-workflow

好的,我对我正在开发的网站进行了以下设置:

  • GitLab 上的 git 存储库(如果重要的话)
  • 与我的域关联的生产服务器

网站架构:

  • Hack 和 HHVM(我必须为其运行单元测试)
  • Babel(需要在部署时编译为 JavaScript)
  • SCSS(需要在部署时转换为 CSS)
  • 部署时也需要调整的配置文件

示例文件树

.
├── index.html
├── bin
|   └── my Hack scripts
├── dev-res 
|   ├── style (SCSS files)
|   └── js (Babel JS files)
├── res
|   ├── style (transpiled css files)
|   ├── js (compiled Babel JS files)
|   └── other resosurces
├── tests/
├── vendor/
├── node_modules/
├── Gulpfile.js
├── package.json
├── composer.json
└── .gitignore 

这是我的计算机中项目的假设文件树(因此,用于开发的文件树)。所以我有composer.json和Composer依赖项,我有package.json和节点模块,我有未编译的SCSS和Babel JS文件。

对于开发和本地测试,将安装所有依赖项,所有这些原始资源将被编译并保存在 res 目录中,但它们会添加到.gitignore 以免污染存储库。

这应该如何发生?

我点击了git Push。 GitLab 触发到我的 Jenkins 实例的 Web Hook(我知道如何完成此操作)。 Jenkins 将存储库克隆到工作目录中,获取并安装所有依赖项,运行服务器端测试并转换/编译所有资源,删除所有开发资源(*.scss/dev-res/*.jscomposer.jsonpackage.json)。

我认为 Jenkins 将是解决此类问题的一个很好的解决方案,因为我可以将它托管在我自己的服务器上。我知道我的问题可能太复杂,您无法在这里编写完整的教程,但我需要一些指导、如何处理此过程的概述,以及一些好的阅读 Material ,我们将不胜感激。

最佳答案

有很多方法可以回答这个问题,我可以从字面上想到 5 个。但出于时间和空间的考虑,让我给你我最好的答案。

我认为使用docker可以更好地实现这一点。此链接将帮助您进行这方面的设置。接下来,您将需要 docker plugin for jenkins

现在让我们配置您的项目。

您需要进行自由式构建。输入 git 存储库信息和凭据后,您将需要配置构建本身。作为旁注,我会将工作区配置为在每次构建时删除,以便 package.json 依赖项不会占用构建主机上的空间。 现在是构建配置。我想你有一个存储工件的地方,所以我的步骤是使用工件:

  1. 在 Jenkins 中创建新的构建作业非常简单:只需单击 Jenkins 仪表板上的“新作业”菜单项即可。
    • 自由式构建作业是通用构建作业,可提供最大的灵活性。
    • 您还可以复制现有作业,这是创建与现有构建作业非常相似的新作业的好方法,除了一些配置详细信息之外。 ...
  2. 添加您的源代码管理
    • 选择 Git
    • 添加您的存储库链接
    • 选择适当的凭据
    • 选择适当的分支
  3. 构建环境
    • 选中构建开始前删除工作区
    • 检查提供配置文件
      • 选择artifactory-npmrc
      • 在“目标”字段中输入:.npmrc
  4. 构建
    • 添加构建步骤
    • 完成菜单并选择“执行 shell”
    • 输入以下命令:

现在,正如您所说,还有很多事情要做,我非常愿意与您合作来完成这项工作。如果您有任何疑问,请随时询问

#!/bin/bash

npm install --registry=http://artifactory.com:8081/artifactory/api/npm/npm-virtual
npm publish --registry=http://artifactory.com:8081/artifactory/api/npm/npm-private
  • 选择“应用”,然后选择“保存”
  • 在仪表板左侧选择“立即构建”
  • 关于javascript - 如何使用Jenkins部署网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35879176/

    相关文章:

    npm - 不兼容的 babel-loader 和 babel-core 版本

    node.js - Babel 不会忽略 node_modules 目录,尽管它在 "ignore"配置中

    Javascript 网络服务轮询

    javascript - 最好的 jQuery 插件结构?

    Javascript:如何将多个图像文件推送到数组中

    android - ubuntu 服务器的 ANDROID_SDK_ROOT 在哪里?

    maven - 在我的工作站上重复 Jenkins groovy yaml 读写

    javascript - Ionic 中单独文件中的 Controller 并包含顺序

    jenkins - 使用 Jenkins 实现单元测试用例自动化

    meteor - Meteor 1.4 中的装饰器