feat: show build number value in the About if present in the config (#14955)

This commit is contained in:
cccs-joel 2021-09-13 12:59:08 -05:00 committed by GitHub
parent b0b996582c
commit c6ac10716a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 20 additions and 3 deletions

View File

@ -103,6 +103,7 @@ const mockedProps = {
locale: 'en', locale: 'en',
version_string: '1.0.0', version_string: '1.0.0',
version_sha: 'randomSHA', version_sha: 'randomSHA',
build_number: 'randomBuildNumber',
}, },
settings: [ settings: [
{ {
@ -280,10 +281,10 @@ test('should render the Profile link when available', async () => {
expect(profile).toHaveAttribute('href', user_profile_url); expect(profile).toHaveAttribute('href', user_profile_url);
}); });
test('should render the About section and version_string or sha when available', async () => { test('should render the About section and version_string, sha or build_number when available', async () => {
const { const {
data: { data: {
navbar_right: { version_sha, version_string }, navbar_right: { version_sha, version_string, build_number },
}, },
} = mockedProps; } = mockedProps;
@ -292,9 +293,11 @@ test('should render the About section and version_string or sha when available',
const about = await screen.findByText('About'); const about = await screen.findByText('About');
const version = await screen.findByText(`Version: ${version_string}`); const version = await screen.findByText(`Version: ${version_string}`);
const sha = await screen.findByText(`SHA: ${version_sha}`); const sha = await screen.findByText(`SHA: ${version_sha}`);
const build = await screen.findByText(`Build: ${build_number}`);
expect(about).toBeInTheDocument(); expect(about).toBeInTheDocument();
expect(version).toBeInTheDocument(); expect(version).toBeInTheDocument();
expect(sha).toBeInTheDocument(); expect(sha).toBeInTheDocument();
expect(build).toBeInTheDocument();
}); });
test('should render the Documentation link when available', async () => { test('should render the Documentation link when available', async () => {

View File

@ -44,6 +44,7 @@ export interface NavBarProps {
bug_report_url?: string; bug_report_url?: string;
version_string?: string; version_string?: string;
version_sha?: string; version_sha?: string;
build_number?: string;
documentation_url?: string; documentation_url?: string;
languages: Languages; languages: Languages;
show_language_picker: boolean; show_language_picker: boolean;

View File

@ -146,7 +146,9 @@ const RightMenu = ({
</Menu.Item> </Menu.Item>
</Menu.ItemGroup>, </Menu.ItemGroup>,
]} ]}
{(navbarRight.version_string || navbarRight.version_sha) && [ {(navbarRight.version_string ||
navbarRight.version_sha ||
navbarRight.build_number) && [
<Menu.Divider key="version-info-divider" />, <Menu.Divider key="version-info-divider" />,
<Menu.ItemGroup key="about-section" title={t('About')}> <Menu.ItemGroup key="about-section" title={t('About')}>
<div className="about-section"> <div className="about-section">
@ -165,6 +167,11 @@ const RightMenu = ({
SHA: {navbarRight.version_sha} SHA: {navbarRight.version_sha}
</div> </div>
)} )}
{navbarRight.build_number && (
<div css={versionInfoStyles}>
Build: {navbarRight.build_number}
</div>
)}
</div> </div>
</Menu.ItemGroup>, </Menu.ItemGroup>,
]} ]}

View File

@ -112,6 +112,10 @@ VERSION_STRING = _try_json_readversion(VERSION_INFO_FILE) or _try_json_readversi
VERSION_SHA_LENGTH = 8 VERSION_SHA_LENGTH = 8
VERSION_SHA = _try_json_readsha(VERSION_INFO_FILE, VERSION_SHA_LENGTH) VERSION_SHA = _try_json_readsha(VERSION_INFO_FILE, VERSION_SHA_LENGTH)
# Build number is shown in the About section if available. This
# can be replaced at build time to expose build information.
BUILD_NUMBER = None
# default viz used in chart explorer # default viz used in chart explorer
DEFAULT_VIZ_TYPE = "table" DEFAULT_VIZ_TYPE = "table"

View File

@ -309,6 +309,7 @@ def menu_data() -> Dict[str, Any]:
brand_text = appbuilder.app.config["LOGO_RIGHT_TEXT"] brand_text = appbuilder.app.config["LOGO_RIGHT_TEXT"]
if callable(brand_text): if callable(brand_text):
brand_text = brand_text() brand_text = brand_text()
build_number = appbuilder.app.config["BUILD_NUMBER"]
return { return {
"menu": menu, "menu": menu,
"brand": { "brand": {
@ -326,6 +327,7 @@ def menu_data() -> Dict[str, Any]:
"documentation_url": appbuilder.app.config["DOCUMENTATION_URL"], "documentation_url": appbuilder.app.config["DOCUMENTATION_URL"],
"version_string": appbuilder.app.config["VERSION_STRING"], "version_string": appbuilder.app.config["VERSION_STRING"],
"version_sha": appbuilder.app.config["VERSION_SHA"], "version_sha": appbuilder.app.config["VERSION_SHA"],
"build_number": build_number,
"languages": languages, "languages": languages,
"show_language_picker": len(languages.keys()) > 1, "show_language_picker": len(languages.keys()) > 1,
"user_is_anonymous": g.user.is_anonymous, "user_is_anonymous": g.user.is_anonymous,