如何对私人jelastic环境进行版本控制

时间:2019-01-03 12:21:12

标签: git devops jelastic

为了跟踪Jelastic托管环境的配置,我想在git存储库中对其进行版本控制。该存储库应该是私有的,并且包含具有不同版本(例如masterabc123v1.1)的多个不同分支。

我的第一个尝试是创建一个包含以下内容的私有github存储库:

  • 一个manifest.json,用于描述环境的拓扑
  • 一组配置文件,例如Web服务器配置,...

现在,我想知道:

A)如何将环境从私有git(hub)存储库导入Jelastic?我可以使用仪表板导入URL功能吗?还是我必须使用CLI?

B)如何确保manifest.json引用与manifest.json本身版本相同的配置文件?如何通过凭证让Jelastic能够检索配置文件?

我看过一种Jelastic示例环境: https://github.com/jelastic-jps/basic-examples/blob/master/automatic-environment-migration-after-cloning/manifest.jps

有: 配置文件(例如alfresco-global.properties)是从公共 github存储库加载的。因此,manifest.json和配置文件都不需要凭据。此外,配置文件将始终从master分支加载。

相反,

  • 我希望存储库是私有的
  • 我想确保manifest.json的abc123版本始终与配置文件的abc123版本一起部署。

这有可能吗?有最佳实践吗?

2 个答案:

答案 0 :(得分:3)

如何从私有git(hub)存储库中将环境导入Jelastic?我可以使用仪表板导入URL功能吗?还是我必须使用CLI?

为此,我们需要使用任何体面的GIT SCM提供的 webhook 功能。选中生成令牌链接。

sample

在打开的安装窗口中,指定以下数据:

  • Git存储库网址-HTTPS链接到您的应用程序存储库
  • 分支-要使用的项目分支
  • 用户-您的Git帐户登录名
  • 令牌-用于生成Webhook的个人Git访问令牌(可以在GitHub / GitLab帐户设置中创建)
  • 环境名称-应用程序应部署到的目标环境
  • 节点-应用程序服务器名称(选择环境后会自动获取)

成功安装后,所有提交到源存储库的进一步更改将自动提交到您在Jelastic Cloud中的环境中。

如何确保manifest.json引用与manifest.json本身版本相同的配置文件?如何通过凭证让Jelastic能够检索配置文件?

当我们使用Jelastic时,我们只能使用Jelastic提供的功能。当前,您可以设置分支名称,因此您可以:

  • 与manifest.jps一样多的存储库
  • 与manifest.jps一样多的分支

有最佳实践吗?

可以尝试使用 与manifest.jps一样多的存储库,并使用git flow进行版本控制:

git-flow

作为manifest.jps的稳定版和生产版掌握。此manifest.jps的任何更改都必须由团队审核或审查,以防止出错。您也可以使用标签对该manifest.jps进行版本控制,并轻松将主版还原为任何标签。

参考

答案 1 :(得分:2)

  

A)如何从私有git(hub)存储库导入环境   进入Jelastic?我可以使用仪表板导入URL功能吗?要么   我必须使用CLI吗?

     

B)如何确保manifest.json引用了   与manifest.json本身版本相同的配置文件?   我如何通过Jelastic的凭证才能检索到   配置文件?

要将环境从私有Github存储库导入Jelastic,您应该通过仪表板Import功能将带有令牌的清单文件URL导入。

为此,您需要:

清单文件示例:

type: install
name: Test Private Repo

baseUrl: https://raw.githubusercontent.com/{user}/{repo}/{branch}
settings: 
 fields: 
- name: token
  caption: Token
  type: string
  default: 

globals: 
  token: ${settings.token}

description: README.md?access_token=${globals.token}

onInstall:
  # Shell script by URL
  - cmd: script.sh?access_token=${globals.token}

  # Base URL inside shell script
  - cmd: |
      wget '${baseUrl}/script.sh?access_token=${globals.token}' -O script.sh
      chmod +x script.sh
      ./script.sh

  # Javascript by URL
  - script: script.js?access_token=${globals.token}