diff --git a/src/bp/core/routers/admin/versioning.ts b/src/bp/core/routers/admin/versioning.ts index aff9d793b1a..cd2b12f49b0 100644 --- a/src/bp/core/routers/admin/versioning.ts +++ b/src/bp/core/routers/admin/versioning.ts @@ -1,8 +1,10 @@ +import axios from 'axios' import { Logger } from 'botpress/sdk' import { extractArchive } from 'core/misc/archive' import { GhostService } from 'core/services' import { BotService } from 'core/services/bot-service' import { Router } from 'express' +import httpsProxyAgent from 'https-proxy-agent' import _ from 'lodash' import mkdirp from 'mkdirp' import path from 'path' @@ -78,6 +80,15 @@ export class VersioningRouter extends CustomRouter { this.router.get('/bpfs_status', (req, res) => { res.send({ isAvailable: process.BPFS_STORAGE === 'database' }) }) + + this.router.get('/docker_images', async (req, res) => { + const { data } = await axios.get( + 'https://hub.docker.com/v2/repositories/botpress/server/tags/?page_size=125&page=1&name=v', + process.PROXY ? { httpsAgent: new httpsProxyAgent(process.PROXY) } : {} + ) + + res.send(data) + }) } extractArchiveFromRequest = async (request, folder) => { diff --git a/src/bp/ui-admin/src/Pages/Server/LatestReleases.tsx b/src/bp/ui-admin/src/Pages/Server/LatestReleases.tsx index 1257568873e..e235ec744d4 100644 --- a/src/bp/ui-admin/src/Pages/Server/LatestReleases.tsx +++ b/src/bp/ui-admin/src/Pages/Server/LatestReleases.tsx @@ -15,9 +15,10 @@ interface GithubRelease { githubUrl: string releaseDate: Date daysAgo: string + dockerUrl: string } -const DownloadLinks: FC<{ version: string }> = props => { +const DownloadLinks: FC<{ version: string; dockerUrl: string }> = props => { const version = `v${props.version.replace(/\./g, '_')}` return ( @@ -39,7 +40,7 @@ const DownloadLinks: FC<{ version: string }> = props => {
Docker Image
- + botpress/server:{version} @@ -64,7 +65,7 @@ const LastRelease: FC<{ latestReleases: GithubRelease[]; fetchLatestVersions: Fu
- +
) diff --git a/src/bp/ui-admin/src/reducers/versions.ts b/src/bp/ui-admin/src/reducers/versions.ts index 1ea857cab6f..e1eae64cf10 100644 --- a/src/bp/ui-admin/src/reducers/versions.ts +++ b/src/bp/ui-admin/src/reducers/versions.ts @@ -1,6 +1,7 @@ import axios from 'axios' import _ from 'lodash' import moment from 'moment' +import api from '~/api' interface GithubRelease { version: string @@ -45,8 +46,23 @@ export const fetchLatestVersions = () => { details: x.body, githubUrl: x.html_url, releaseDate: x.created_at, - daysAgo: moment(x.created_at).fromNow() + daysAgo: moment(x.created_at).fromNow(), + dockerUrl: '' })) + try { + const { data } = await api.getSecured().get('/admin/versioning/docker_images') + _.forEach(releases, x => { + _.forEach(data.results, r => { + const version = x.version.replace(/\./g, '_') + if (r.name.slice(1) === version) { + const digest = r.images[0].digest.replace(/\:/g, '-') + x.dockerUrl = `https://hub.docker.com/layers/botpress/server/v${version}/images/${digest}` + } + }) + }) + } catch (err) { + console.error('could not fetch docker image information') + } dispatch({ type: RECEIVE_LATEST_RELEASES,