如何从生产环境中(仅)刷新 NetSuite 沙箱代码?

How to refresh NetSuite sandbox code (only) from production?

从生产中刷新 NetSuite 沙箱(仅限代码)

我知道我们可以从生产环境中刷新沙箱,但我们不想刷新整个沙箱,而是想刷新 NetSuite SuiteScript、NetSuite Forms 和 UI 对象。

NetSuite 的专有技术infrastructure/code及其带来的挑战

几周来我一直拒绝问这个问题,认为它太基础了,但事实并非如此。在使用 NetSuite 一段时间后,很明显源代码和数据之间的界限变得模糊,我认为这正是使更新代码具有挑战性的原因。

我还了解到,将 NetSuite 代码存储在版本控制软件中几乎是不可能的(对所有代码而言),这让我相信我希望仅刷新代码也可能是不可能的。我想知道在控制和修改业务逻辑时,受到 SOX 合规性问题困扰的 IT 部门如何能够让审计人员满意。

刷新沙盒代码的真题及原因

我刷新沙箱代码的动机是,我们在沙箱帐户中遇到了某些表单(发票和估算)的意外行为,其中自定义税字段 (Ava-Tax) 神秘地从项目选项卡移动到选项卡包含交易主体字段!该表格似乎已经一年多没有被任何人更新过,并且沙箱中没有安装任何可能破坏表格的软件包。

如果我无法刷新源代码,知道 NetSuite 表单以专有方式存储并且没有明显的可用源代码,是否有一种方法可以确定 NetSuite 表单是如何损坏的?我知道大部分 NetSuite 代码是 JavaScript,它在服务器和客户端上运行,并且有一些部分对 NetSuite 以外的任何人都不可用。

欢迎和赞赏任何解决方案或建议。

在源代码管理中存储 NetSuite 代码并非完全不可能。我们使用 git 来跟踪我们所有的 NetSuite 源,我们遵循类似于 gitflow 的过程。我们的 master 分支始终与生产保持同步。每当我们将代码推送到生产环境时,它就会从其 feature/fix 分支合并到 master 并标记为发布。如果我们想回滚,我们只需恢复 master 一个提交并将整个项目上传到文件柜。然后,如果我们想刷新 Sandbox 以匹配 Production,我们只需签出 master 并将所有内容上传到 Sandbox。

沙盒本身很难与源代码中的单个分支保持同步,因为我们不断地在单独的功能分支上进行开发。

如果您还没有这样的系统,您真正需要做的就是从 Production File Cabinet 下载 SuiteScripts 文件夹的 zip 并将其上传到您的 Sandbox。

这不是源代码管理,但您可以使用 SuiteBundler 在帐户之间复制项目。 SuiteBundler 允许您从很多东西中进行选择,例如表单、脚本和自定义记录。稍后您可以卸载捆绑包或将其解散到帐户中。

这不是那么容易用几句话来解释,但是:您可以使用部署帐户来使事情正常进行。因此,您继续使用开发帐户并使用多个捆绑包/捆绑包版本进行后续 branches/Versions 自定义。仅当版本稳定且生产环境始终从部署(而不是从开发)安装/更新包版本时,您才从开发更新包以部署帐户。由于 bundle 是可版本化且无限的,您可以使用 git + dev + deploy account 来管理 Cvs。要获取表单的可版本版本,只需在任何表单的 url 中添加 &xml=t 即可。但这是只读的