Skip to content

Commit 513b781

Browse files
committed
Pulling image before updating
1 parent a634e49 commit 513b781

File tree

3 files changed

+43
-22
lines changed

3 files changed

+43
-22
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## [Next Version - available as `edge`]
22

3-
- TBD
3+
- Improved: Pulling the new image before attempt to upgrade the CapRover engine to improve reliability of upgrades
44

55
## [1.10.1] - 2021-10-09
66

src/routes/user/system/SystemRouter.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,17 @@ router.get('/versionInfo/', function (req, res, next) {
180180

181181
router.post('/versionInfo/', function (req, res, next) {
182182
const latestVersion = req.body.latestVersion
183+
const registryHelper =
184+
InjectionExtractor.extractUserFromInjected(
185+
res
186+
).user.serviceManager.getRegistryHelper()
183187

184188
return Promise.resolve()
185189
.then(function () {
186-
return VersionManager.get().updateCaptain(latestVersion)
190+
return VersionManager.get().updateCaptain(
191+
latestVersion,
192+
registryHelper
193+
)
187194
})
188195
.then(function () {
189196
const baseApi = new BaseApi(

src/user/system/VersionManager.ts

Lines changed: 34 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import axios from 'axios'
33
import DockerApi from '../../docker/DockerApi'
44
import CaptainConstants from '../../utils/CaptainConstants'
55
import Logger from '../../utils/Logger'
6+
import DockerRegistryHelper from '../DockerRegistryHelper'
67

78
class VersionManager {
89
private dockerApi: DockerApi
@@ -148,27 +149,40 @@ class VersionManager {
148149
})
149150
}
150151

151-
updateCaptain(versionTag: string) {
152+
updateCaptain(
153+
versionTag: string,
154+
dockerRegistryHelper: DockerRegistryHelper
155+
) {
152156
const self = this
153-
return Promise.resolve().then(function () {
154-
return self.dockerApi.updateService(
155-
CaptainConstants.captainServiceName,
156-
`${CaptainConstants.configs.publishedNameOnDockerHub}:${versionTag}`,
157-
undefined,
158-
undefined,
159-
undefined,
160-
undefined,
161-
undefined,
162-
undefined,
163-
undefined,
164-
undefined,
165-
undefined,
166-
undefined,
167-
undefined,
168-
undefined,
169-
undefined
170-
)
171-
})
157+
const providedImageName = `${CaptainConstants.configs.publishedNameOnDockerHub}:${versionTag}`
158+
return Promise.resolve()
159+
.then(function () {
160+
return dockerRegistryHelper.getDockerAuthObjectForImageName(
161+
providedImageName
162+
)
163+
})
164+
.then(function (authObj) {
165+
return self.dockerApi.pullImage(providedImageName, authObj)
166+
})
167+
.then(function () {
168+
return self.dockerApi.updateService(
169+
CaptainConstants.captainServiceName,
170+
providedImageName,
171+
undefined,
172+
undefined,
173+
undefined,
174+
undefined,
175+
undefined,
176+
undefined,
177+
undefined,
178+
undefined,
179+
undefined,
180+
undefined,
181+
undefined,
182+
undefined,
183+
undefined
184+
)
185+
})
172186
}
173187

174188
private static captainManagerInstance: VersionManager | undefined

0 commit comments

Comments
 (0)