切换功能 - 版本控制工作流程

时间:2016-08-18 12:38:40

标签: github jenkins merge continuous-integration continuous-deployment

我正在看看Toggle Feature是如何工作的。实际上,我正在使用简单的版本控制工作流程。一个master分支,随时可以在生产中部署,另一个分支称为develop。新功能分支从develop分叉,然后在稳定时合并回master。因此,我们将develop分支合并回master。当我们将master推送到存储库时,它会触发Jenkins作业,该作业运行测试并部署到生产中。

所以我想了解在处理功能切换时什么是最严格(或最常见)的版本控制工作流程。

我是否只有一个主分支,所有开发工作都在上面?

或者常见的方法是让所有开发人员都在开发分支,并定期合并到主分支?

1 个答案:

答案 0 :(得分:0)

一个与另一个无关。功能切换只是应用程序中选项的一个奇特名称;在您的配置文件中,输入&#34; COOL_FEATURE = off&#34;,然后您可以随时在世界上开发您的功能(可能在多个分支中;所有分支都合并到if (cluster.isMaster) { // fork workers debug('master process (%s) ', process.pid); for (let i = 0; i < numCPUs; i++) { let fork = cluster.fork() clusterStore.insert(fork.id) } // if a worker dies, log it to the console and start another worker cluster.on('exit', (worker, code, signal) => { debug('worker (%s) died', worker.process.pid) if(worker.exitedAfterDisconnect !== true) { let fork = cluster.fork() clusterStore.update(worker.id, fork.id) } }) // log when a worker starts listening cluster.on('listening', (worker, address) => { debug('worker (%s) started', worker.process.pid) }) process.on('SIGHUP', function() { debug("respawning forks"); let oldClusters = clusterStore.get().slice() oldClusters.forEach(function(id) { let worker = cluster.workers[id] let timer; if(worker) { let fork = cluster.fork() clusterStore.update(worker.id, fork.id) } }) oldClusters.forEach(id => { cluster.workers[id].send('shutdown') }) }) } else { worker() } function worker () { const app = require('../app') const http = require('http') const port = normalizePort(process.env.PORT || '3000') app.set('port', port) const server = http.createServer(app) process.on('message', (msg) => { if(msg ==='shutdown') { server.close(err => { if(err) debug("Error encountered while closing server (%s)", err.message) process.exit() }) } }) server.listen(port) server.on('error', onError) server.on('listening', onListening) } 并部署到生产中随着时间的推移)。只有当事物真的具有特征时,才启用该功能(&#34; COOL_FEATURE = on&#34;)。