(deploymentId: string, versionId: string, receiptFile: string, autoRemove: boolean)
| 92 | } |
| 93 | |
| 94 | export async function rollback(deploymentId: string, versionId: string, receiptFile: string, autoRemove: boolean) { |
| 95 | const spinner = logger.getSpinner(); |
| 96 | spinner.start(`Rollback of deployment '${deploymentId}' to version '${versionId}'`); |
| 97 | if (logger.inDebugMode()) { |
| 98 | spinner.info(); |
| 99 | } |
| 100 | |
| 101 | const configDirTmp = fs.mkdtempSync(path.join(os.tmpdir(), 'airnode')); |
| 102 | const configPathTmp = path.join(configDirTmp, 'config.json'); |
| 103 | const secretsPathTmp = path.join(configDirTmp, 'secrets.env'); |
| 104 | |
| 105 | try { |
| 106 | await saveDeploymentFiles(deploymentId, versionId, configPathTmp, secretsPathTmp); |
| 107 | const { creationTime } = await deploy(configPathTmp, secretsPathTmp, receiptFile, autoRemove); |
| 108 | |
| 109 | const secrets = parseSecretsFile(secretsPathTmp); |
| 110 | const config = loadConfig(configPathTmp, secrets); |
| 111 | const { airnodeWalletMnemonic, cloudProvider, stage, nodeVersion } = config.nodeSettings; |
| 112 | const airnodeAddress = deriveAirnodeAddress(airnodeWalletMnemonic); |
| 113 | const newVersionId = deriveDeploymentVersionId( |
| 114 | cloudProvider, |
| 115 | airnodeAddress, |
| 116 | stage, |
| 117 | nodeVersion, |
| 118 | `${creationTime.getTime()}` |
| 119 | ); |
| 120 | |
| 121 | spinner.succeed( |
| 122 | `Rollback of deployment '${deploymentId}' successful, new version '${newVersionId}' with configuration from version '${versionId}' created` |
| 123 | ); |
| 124 | } finally { |
| 125 | fs.rmSync(configDirTmp, { recursive: true }); |
| 126 | } |
| 127 | } |
no test coverage detected