From 8121909e2075b4d88809675ae7d7682d7975968a Mon Sep 17 00:00:00 2001 From: vinod kumar kakarla Date: Thu, 5 Dec 2024 14:33:14 -0800 Subject: [PATCH 1/8] Pdip 1114 mfa polish (#638) * Reset MFA section added for profile dropdown. * MFA polished. * FAQ - MFA reset steps changed to bullet points. * add to mobile menu * rearrange imports * implement onDestroy --------- Co-authored-by: Panos Hatzinikolaou --- .../bc-provider-edit.page.html | 4 +- .../bc-provider-edit.page.scss | 3 ++ .../features/faq/pages/help/help.page.html | 24 ++++++++++ .../components/navbar-menu/nav-menu.html | 12 +++++ .../components/navbar-menu/nav-menu.model.ts | 6 +++ .../navbar-menu/nav-menu.resource.service.ts | 28 ++++++++++++ .../shell/components/navbar-menu/nav-menu.ts | 45 ++++++++++++++++++- 7 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 workspace/apps/pidp/src/app/features/shell/components/navbar-menu/nav-menu.model.ts create mode 100644 workspace/apps/pidp/src/app/features/shell/components/navbar-menu/nav-menu.resource.service.ts diff --git a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.html b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.html index 4eb455c1c..ef2141067 100644 --- a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.html +++ b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.html @@ -2,7 +2,7 @@
-

BC Provider Account Management

+

BCProvider Account Management

Set a new password or reset your MFA at your convenience

@@ -95,7 +95,7 @@

Set new password

(click)="toggleTooltip('mfa')">

- Reset your multifactor authentication (MFA) + Reset your multi-factor authentication (MFA)

Only available if you login with BCSC

diff --git a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.scss b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.scss index 96501d789..9a44344cf 100644 --- a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.scss +++ b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.scss @@ -57,6 +57,9 @@ --header-margin: unset; --avatar-size: 4rem; --content-padding: var(--gap); + ul li{ + list-style-type: decimal; + } } .viewport-medium { diff --git a/workspace/apps/pidp/src/app/features/faq/pages/help/help.page.html b/workspace/apps/pidp/src/app/features/faq/pages/help/help.page.html index d85d9c4b8..f9201a025 100644 --- a/workspace/apps/pidp/src/app/features/faq/pages/help/help.page.html +++ b/workspace/apps/pidp/src/app/features/faq/pages/help/help.page.html @@ -216,6 +216,30 @@

Frequently asked questions

+
+ + + How do I reset my MFA on BCProvider? + +
    +
  • Click Access
  • +
  • Click BC Provider Account
  • +
  • On the right-hand side click “Reset my MFA” link
  • +
  • Click continue, system will unpair your phone
  • +
  • After completely the unpairing, you will be prompted to login
  • +
  • Select the BCprovider acccount
  • +
  • Enter your current password
  • +
  • After successfully logging into your account, you will be prompted to setup MFA on a phone or tablet.
  • +
+
+
User Access Agreement + Password and MFA reset
@@ -115,6 +121,12 @@ (click)="navigateTo(ProfileRoutes.routePath(ProfileRoutes.USER_ACCESS_AGREEMENT))" >User Access Agreement + Password and MFA reset { + return this.apiResource + .get(this.getResourcePath(partyId)) + .pipe( + catchError((error: HttpErrorResponse) => { + return throwError(() => error); + }), + ); + } + + protected getResourcePath(partyId: number): string { + return `parties/${partyId}/credentials`; + } +} diff --git a/workspace/apps/pidp/src/app/features/shell/components/navbar-menu/nav-menu.ts b/workspace/apps/pidp/src/app/features/shell/components/navbar-menu/nav-menu.ts index 70ba8fdb3..0e1412b55 100644 --- a/workspace/apps/pidp/src/app/features/shell/components/navbar-menu/nav-menu.ts +++ b/workspace/apps/pidp/src/app/features/shell/components/navbar-menu/nav-menu.ts @@ -4,6 +4,8 @@ import { EventEmitter, Input, OnChanges, + OnDestroy, + OnInit, Output, SimpleChanges, ViewChild, @@ -24,6 +26,8 @@ import { RouterOutlet, } from '@angular/router'; +import { Observable, Subject, takeUntil } from 'rxjs'; + import { FaIconComponent } from '@fortawesome/angular-fontawesome'; import { faBell } from '@fortawesome/free-regular-svg-icons'; @@ -37,9 +41,15 @@ import { } from '@bcgov/shared/ui'; import { RoutePath } from '@bcgov/shared/utils'; +import { PartyService } from '@app/core/party/party.service'; +import { AccessRoutes } from '@app/features/access/access.routes'; +import { IdentityProvider } from '@app/features/auth/enums/identity-provider.enum'; import { AlertCode } from '@app/features/portal/enums/alert-code.enum'; import { ProfileRoutes } from '@app/features/profile/profile.routes'; +import { Credential } from './nav-menu.model'; +import { NavMenuResource } from './nav-menu.resource.service'; + @Component({ selector: 'app-nav-menu', templateUrl: './nav-menu.html', @@ -62,7 +72,7 @@ import { ProfileRoutes } from '@app/features/profile/profile.routes'; NgClass, ], }) -export class NavMenuComponent implements OnChanges { +export class NavMenuComponent implements OnChanges, OnInit, OnDestroy { @Input() public alerts: AlertCode[] | null = []; @Input() public menuItems!: DashboardMenuItem[]; @Input() public emailSupport!: string; @@ -79,21 +89,41 @@ export class NavMenuComponent implements OnChanges { public isLogoutMenuItemVisible = false; public isTopMenuVisible = false; public ProfileRoutes = ProfileRoutes; + public AccessRoutes = AccessRoutes; public showCollegeAlert = false; public faBell = faBell; public AlertCode = AlertCode; + public credentials: Credential[] = []; + public credentials$: Observable; + private unsubscribe$ = new Subject(); + public IdentityProvider = IdentityProvider; public constructor( private viewportService: ViewportService, private router: Router, + private resource: NavMenuResource, + private partyService: PartyService, ) { this.viewportService.viewportBroadcast$.subscribe((viewport) => this.onViewportChange(viewport), ); + const partyId = this.partyService.partyId; + this.credentials$ = this.resource.getCredentials(partyId); + } + + public ngOnInit(): void { + this.handleLinkedAccounts(); } + public ngOnChanges(_: SimpleChanges): void { this.refresh(); } + + public ngOnDestroy(): void { + this.unsubscribe$.next(); + this.unsubscribe$.complete(); + } + public onMiniMenuButtonClick(): void { // Toggle display of the sidenav. this.isSidenavOpened = !this.isSidenavOpened; @@ -137,6 +167,11 @@ export class NavMenuComponent implements OnChanges { } return undefined; } + + public hasCredential(idp: IdentityProvider): boolean { + return this.credentials.some((c) => c.identityProvider === idp); + } + public onLogout(): void { this.logout.emit(); } @@ -146,6 +181,14 @@ export class NavMenuComponent implements OnChanges { } } + private handleLinkedAccounts(): void { + this.credentials$ + .pipe(takeUntil(this.unsubscribe$)) + .subscribe((credentials) => { + this.credentials = credentials; + }); + } + private onViewportChange(viewport: PidpViewport): void { this.viewport = viewport; this.refresh(); From 6e16f71bd76db15a112616b90ec48d189eef50de Mon Sep 17 00:00:00 2001 From: Panos Hatzinikolaou <45132887+Paahn@users.noreply.github.com> Date: Thu, 5 Dec 2024 18:09:13 -0500 Subject: [PATCH 2/8] BCProvider rename (#641) --- .../core/party/discovery-resource.service.ts | 4 +- ...c-provider-application-resource.service.ts | 2 +- .../bc-provider-application.page.html | 39 +++++++++---------- .../bc-provider-application.page.ts | 2 +- .../bc-provider-edit/bc-provider-edit.page.ts | 2 +- .../high-assurance-credential.guard.spec.ts | 2 +- .../bc-provider-uplift.page.html | 6 +-- .../link-account-confirm.page.html | 2 +- .../link-account-confirm.page.ts | 2 +- .../link-account-error.page.html | 2 +- .../features/auth/pages/login/login.page.html | 2 +- .../bc-provider-completed.resolver.spec.ts | 4 +- .../bc-provider-edit.resolver.spec.ts | 4 +- .../features/faq/pages/help/help.page.html | 15 +++---- .../faq/pages/mfa-setup/mfa-setup.page.html | 2 +- .../bc-provider-portal-section.class.ts | 2 +- .../account-linking.constants.ts | 2 +- .../account-linking/account-linking.page.html | 2 +- .../dialog-bcprovider-create.component.ts | 2 +- .../pipes/is-high-assurance.pipe.spec.ts | 2 +- 20 files changed, 50 insertions(+), 50 deletions(-) diff --git a/workspace/apps/pidp/src/app/core/party/discovery-resource.service.ts b/workspace/apps/pidp/src/app/core/party/discovery-resource.service.ts index 4da447652..5b0da838e 100644 --- a/workspace/apps/pidp/src/app/core/party/discovery-resource.service.ts +++ b/workspace/apps/pidp/src/app/core/party/discovery-resource.service.ts @@ -25,7 +25,7 @@ export enum DiscoveryStatus { AlreadyLinkedError, CredentialExistsError, ExpiredCredentialLinkTicketError, - AccountLinkingError + AccountLinkingError, } @Injectable({ @@ -38,7 +38,7 @@ export class DiscoveryResource { * @description * Get the party's ID based on the access token user ID, * creates a party if one does not already exist, - * or discovers that the User is a new BC Provider (and so cannot create a Party). + * or discovers that the User is a new BCProvider (and so cannot create a Party). */ public discover(): Observable { return this.apiResource.post('discovery', null); diff --git a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application-resource.service.ts b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application-resource.service.ts index bcf39b1d8..f05dc847d 100644 --- a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application-resource.service.ts +++ b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application-resource.service.ts @@ -34,7 +34,7 @@ export class BcProviderApplicationResource { .pipe(map((upn) => upn)); } - // Currently automatically links to BC Provider + // Currently automatically links to BCProvider public createLinkTicket(partyId: number): NoContent { return this.apiResource .post(`${this.getResourcePath(partyId)}/link-ticket`, { diff --git a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.html b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.html index cf2b2fb68..96c90d0cd 100644 --- a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.html +++ b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.html @@ -2,21 +2,20 @@
-

BC Provider account information

+

BCProvider account information

- Welcome {{ (fullName$ | async) }} to your BC Provider knowledge - center! + Welcome {{ (fullName$ | async) }} to your BCProvider knowledge center!

The OneHealthID Service is designed to use the digital identity created - by the BC Services Card as a foundation for your BC Provider account. + by the BC Services Card as a foundation for your BCProvider account.

- Whether you are existing, or new to BC Provider, we have you covered. + Whether you are existing, or new to BCProvider, we have you covered.

OneHealthID is looking for a one-time setup if you are an existing BC @@ -25,19 +24,19 @@

- Do you not have a BC Provider account? setup is quick and easy. + Do you not have a BCProvider account? setup is quick and easy.

- Interested in BC Provider? + Interested in BCProvider?

For brand new users that are looking for the flexibility and - security of BC Services card and a BC Provider account. + security of BC Services card and a BCProvider account.

@@ -99,13 +98,13 @@

- Advantage with BC Provider + Advantage with BCProvider

After this quick uplift you will have the flexibility to then - login to OneHealthID with your BC Provider, or your BC Services - Card account info. All you have to do is log into BC Provider + login to OneHealthID with your BCProvider, or your BC Services + Card account info. All you have to do is log into BCProvider with your existing information, and we will automatically take care of the secure uplift.

@@ -132,7 +131,7 @@

-

You get more out of OneHealthID when you sign in with BC Provider.

+

You get more out of OneHealthID when you sign in with BCProvider.

  1. Go to Microsoft account and select @@ -169,7 +168,7 @@

    You get more out of OneHealthID when you sign in with BC Provider.

    -

    You get more out of OneHealthID when you sign in with BC Provider.

    +

    You get more out of OneHealthID when you sign in with BCProvider.

    Your password must be 8 to 256 characters long, with at least one letter and one number or special character. Strong passwords include both upper- @@ -242,7 +241,7 @@

    Create an account

    Let's get started
    - using BC Provider today! + using BCProvider today!
@@ -261,7 +260,7 @@

Create an account

Let's get started

- using BC Provider today! + using BCProvider today!
@@ -283,7 +282,7 @@

Create an account

diff --git a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.ts b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.ts index 299327afa..68e8655b1 100644 --- a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.ts +++ b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-application/bc-provider-application.page.ts @@ -132,7 +132,7 @@ export class BcProviderApplicationPage title: 'Access', path: AccessRoutes.routePath(AccessRoutes.ACCESS_REQUESTS), }, - { title: 'BC Provider account information', path: '' }, + { title: 'BCProvider account information', path: '' }, ]; public fullName$!: Observable; diff --git a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.ts b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.ts index 7191447ca..b4769b386 100644 --- a/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.ts +++ b/workspace/apps/pidp/src/app/features/access/pages/bc-provider-edit/bc-provider-edit.page.ts @@ -124,7 +124,7 @@ export class BcProviderEditPage title: 'Access', path: AccessRoutes.routePath(AccessRoutes.ACCESS_REQUESTS), }, - { title: 'BC Provider Account', path: '' }, + { title: 'BCProvider Account', path: '' }, ]; // ui-page is handling this. diff --git a/workspace/apps/pidp/src/app/features/auth/guards/high-assurance-credential.guard.spec.ts b/workspace/apps/pidp/src/app/features/auth/guards/high-assurance-credential.guard.spec.ts index 18b0b8d9e..fe7f434d4 100644 --- a/workspace/apps/pidp/src/app/features/auth/guards/high-assurance-credential.guard.spec.ts +++ b/workspace/apps/pidp/src/app/features/auth/guards/high-assurance-credential.guard.spec.ts @@ -66,7 +66,7 @@ describe('highAssuranceCredentialGuard', () => { }); }); - given('the user is authenticated with a BC Provider', (done) => { + given('the user is authenticated with a BCProvider', (done) => { authorizedUserServiceSpy.accessorSpies.getters.identityProvider$.mockReturnValue( of(IdentityProvider.BC_PROVIDER), ); diff --git a/workspace/apps/pidp/src/app/features/auth/pages/bc-provider-uplift/bc-provider-uplift.page.html b/workspace/apps/pidp/src/app/features/auth/pages/bc-provider-uplift/bc-provider-uplift.page.html index 1d8fe883d..fe07c8284 100644 --- a/workspace/apps/pidp/src/app/features/auth/pages/bc-provider-uplift/bc-provider-uplift.page.html +++ b/workspace/apps/pidp/src/app/features/auth/pages/bc-provider-uplift/bc-provider-uplift.page.html @@ -13,7 +13,7 @@
BC Provider uplift @@ -22,10 +22,10 @@

Keeping you safe

- Your BC Provider account is currently missing a key component which lets + Your BCProvider account is currently missing a key component which lets us know it is you.
You will need to perform a one-time setup with your BC Services Card.
- Once complete, please continue using your BC Provider account. + Once complete, please continue using your BCProvider account.

diff --git a/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.html b/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.html index 9c09b92ef..7f6e1dff6 100644 --- a/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.html +++ b/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.html @@ -82,7 +82,7 @@

BC Services Card

alt="contact" />
-

BC Provider

+

BCProvider

Access a growing number of provincial health applications

diff --git a/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.ts b/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.ts index 195c0fd58..0abfd5059 100644 --- a/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.ts +++ b/workspace/apps/pidp/src/app/features/auth/pages/link-account-confirm/link-account-confirm.page.ts @@ -142,7 +142,7 @@ export class LinkAccountConfirmPage implements OnInit { case IdentityProvider.BC_PROVIDER: { const idpId = (user as BcProviderUser).idpId; const accountName = idpId.endsWith('@bcp') ? idpId.slice(0, -4) : idpId; - return `the BC Provider account ${accountName}`; + return `the BCProvider account ${accountName}`; } default: return 'a new account'; diff --git a/workspace/apps/pidp/src/app/features/auth/pages/link-account-error/link-account-error.page.html b/workspace/apps/pidp/src/app/features/auth/pages/link-account-error/link-account-error.page.html index dcb593be4..be0b45ec4 100644 --- a/workspace/apps/pidp/src/app/features/auth/pages/link-account-error/link-account-error.page.html +++ b/workspace/apps/pidp/src/app/features/auth/pages/link-account-error/link-account-error.page.html @@ -13,7 +13,7 @@
BC Provider uplift diff --git a/workspace/apps/pidp/src/app/features/auth/pages/login/login.page.html b/workspace/apps/pidp/src/app/features/auth/pages/login/login.page.html index 8eb42d633..1db316b74 100644 --- a/workspace/apps/pidp/src/app/features/auth/pages/login/login.page.html +++ b/workspace/apps/pidp/src/app/features/auth/pages/login/login.page.html @@ -97,7 +97,7 @@

class="login-button-secondary" mat-stroked-button (click)="onLogin(IdentityProvider.BC_PROVIDER)"> - BC Provider + BCProvider

@@ -252,7 +253,7 @@

Frequently asked questions

BC E-Substance Reporting
- BC Provider
+ BCProvider
Connect Extranet Website
Driver Fitness Practitioner Portal
Driver Medical Fitness Testing
diff --git a/workspace/apps/pidp/src/app/features/faq/pages/mfa-setup/mfa-setup.page.html b/workspace/apps/pidp/src/app/features/faq/pages/mfa-setup/mfa-setup.page.html index 2d7dabd19..68dac0b6e 100644 --- a/workspace/apps/pidp/src/app/features/faq/pages/mfa-setup/mfa-setup.page.html +++ b/workspace/apps/pidp/src/app/features/faq/pages/mfa-setup/mfa-setup.page.html @@ -25,7 +25,7 @@

BCProvider Active Directory Multi-factor Authentication (MFA) Setup

.

- The BCprovider uses Multi-Factor Authentication (MFA) is an additional + The BCProvider uses Multi-Factor Authentication (MFA) is an additional layer of security that helps protect your online accounts and sensitive information. It enhances the traditional username and password login process by requiring at least two or more forms of verification. This diff --git a/workspace/apps/pidp/src/app/features/portal/state/access/bc-provider-portal-section.class.ts b/workspace/apps/pidp/src/app/features/portal/state/access/bc-provider-portal-section.class.ts index 39431673b..af87ee7f9 100644 --- a/workspace/apps/pidp/src/app/features/portal/state/access/bc-provider-portal-section.class.ts +++ b/workspace/apps/pidp/src/app/features/portal/state/access/bc-provider-portal-section.class.ts @@ -30,7 +30,7 @@ export class BcProviderPortalSection implements IPortalSection { private router: Router, ) { this.key = 'bcProvider'; - this.heading = 'BC Provider Account'; + this.heading = 'BCProvider Account'; this.description = `A reusable credential for access to health data in BC.`; this.keyWords = profileStatus.status.bcProvider.keyWords || []; } diff --git a/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.constants.ts b/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.constants.ts index 1cd43b407..44b276467 100644 --- a/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.constants.ts +++ b/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.constants.ts @@ -4,5 +4,5 @@ export const linkedAccountCardText = { [IdentityProvider.BCSC]: 'BC Services Card', [IdentityProvider.PHSA]: 'Health Authority ID', [IdentityProvider.IDIR]: 'IDIR Account', - [IdentityProvider.BC_PROVIDER]: 'BC Provider Account', + [IdentityProvider.BC_PROVIDER]: 'BCProvider Account', }; diff --git a/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.page.html b/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.page.html index db59c4669..a07a0c55f 100644 --- a/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.page.html +++ b/workspace/apps/pidp/src/app/features/profile/pages/account-linking/account-linking.page.html @@ -109,7 +109,7 @@

BC Services Card

alt="contact" />
-

BC Provider

+

BCProvider

Access a growing number of provincial health applications

- BC Provider account {{ username }} has been created.
+ BCProvider account {{ username }} has been created.
You will now have the option to sign in to our system with these credentials.
Please note, this is not an email address.
You will not be able to diff --git a/workspace/apps/pidp/src/app/shared/pipes/is-high-assurance.pipe.spec.ts b/workspace/apps/pidp/src/app/shared/pipes/is-high-assurance.pipe.spec.ts index 4a1338f8e..4f72914f5 100644 --- a/workspace/apps/pidp/src/app/shared/pipes/is-high-assurance.pipe.spec.ts +++ b/workspace/apps/pidp/src/app/shared/pipes/is-high-assurance.pipe.spec.ts @@ -14,7 +14,7 @@ describe('IsHighAssurancePipe', () => { expect(pipe.transform(IdentityProvider.BCSC)).toEqual(true); }); - it('returns true when BC Provider', () => { + it('returns true when BCProvider', () => { expect(pipe.transform(IdentityProvider.BC_PROVIDER)).toEqual(true); }); From 8e92c39920c722525ad7683f9594d51a07043ffc Mon Sep 17 00:00:00 2001 From: James Hollinger <39168456+james-hollinger@users.noreply.github.com> Date: Thu, 5 Dec 2024 16:07:19 -0800 Subject: [PATCH 3/8] Fix sticky SSO session (#642) --- .../src/app/features/auth/pages/auto-login/auto-login.page.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workspace/apps/pidp/src/app/features/auth/pages/auto-login/auto-login.page.ts b/workspace/apps/pidp/src/app/features/auth/pages/auto-login/auto-login.page.ts index 10a051cc7..873581144 100644 --- a/workspace/apps/pidp/src/app/features/auth/pages/auto-login/auto-login.page.ts +++ b/workspace/apps/pidp/src/app/features/auth/pages/auto-login/auto-login.page.ts @@ -18,7 +18,7 @@ export class AutoLoginPage implements OnInit { private authService: AuthService, private route: ActivatedRoute, private router: Router, - ) {} + ) { } public ngOnInit(): void { const idpHint = this.route.snapshot.queryParamMap.get('idp_hint') ?? ''; @@ -28,6 +28,7 @@ export class AutoLoginPage implements OnInit { .login({ idpHint: idpHint, redirectUri: this.config.applicationUrl, + prompt: 'login' }) .subscribe(); } else { From d4e27eff1733e7f6fdffa6dfa574c4657d83844b Mon Sep 17 00:00:00 2001 From: "Roya.Shourouni@gov.bc.ca" Date: Fri, 6 Dec 2024 14:47:49 -0800 Subject: [PATCH 4/8] Delete silver github workflows (#639) * Delete silver github workflows * zip helm charts --- .github/workflows/build_midas_probe.yaml | 2 +- .github/workflows/demo-deploy_helm_chart.yaml | 4 +- .../dev-build-endorsement-reminder.yaml | 10 +- .github/workflows/dev-build-frontend.yaml | 39 --- .github/workflows/dev-build-plr-intake.yaml | 26 -- .github/workflows/dev-build-webapi.yaml | 25 -- .../workflows/dev-deploy-db-migration.yaml | 10 +- .../dev-deploy-endorsement-reminder.yaml | 21 +- .github/workflows/dev-deploy-helm_chart.yaml | 24 +- .../main-build-endorsement-reminder.yaml | 18 -- .github/workflows/main-build-frontend.yaml | 21 +- .github/workflows/main-build-plr-intake.yaml | 18 -- .github/workflows/main-build-webapi.yaml | 19 -- .../workflows/main-deploy-db-migration.yaml | 31 +-- .../main-deploy-endorsement-reminder.yaml | 22 +- .../main-deploy_helm_chart Gold.yaml | 34 --- .github/workflows/main-deploy_helm_chart.yaml | 69 +++-- .github/workflows/pr-build-gold.yaml | 249 ------------------ .github/workflows/pr-build.yaml | 44 ++-- .github/workflows/pr-deploy-cleanup Gold.yaml | 47 ---- .github/workflows/pr-deploy-cleanup.yaml | 92 +++---- .../test-build-endorsement-reminder.yaml | 19 -- .github/workflows/test-build-frontend.yaml | 19 -- .github/workflows/test-build-plr-intake.yaml | 18 -- .github/workflows/test-build-webapi.yaml | 19 -- .../workflows/test-deploy-db-migration.yaml | 8 +- .../test-deploy-endorsement-reminder.yaml | 20 -- .github/workflows/test-deploy_helm_chart.yaml | 23 +- charts/frontend/values.yaml | 4 +- charts/nginx/values.yaml | 2 +- charts/pidp/charts/frontend-0.1.1.tgz | Bin 4966 -> 4971 bytes charts/pidp/charts/nginx-9.7.3.tgz | Bin 38206 -> 37263 bytes charts/pidp/charts/plr-intake-0.1.2.tgz | Bin 5096 -> 5105 bytes charts/pidp/charts/webapi-0.1.5.tgz | Bin 5699 -> 5701 bytes charts/pidp/values.yaml | 9 +- charts/plr-intake/values.yaml | 4 +- charts/webapi/values.yaml | 6 +- deploy/dev_values.yaml | 8 +- deploy/pr_values.yaml | 7 +- deploy/prod_values.yaml | 12 +- deploy/prod_values_gold.yaml | 46 ---- deploy/test_values.yaml | 8 +- infra/endorsement_reminder/values.yaml | 3 +- infra/fluentbit/fluentbit-configmap.yaml | 4 +- infra/metabase/README.md | 8 +- infra/metabase/metabase-template.yml | 2 +- infra/pipelines/cicd-pipeline.yaml | 6 +- .../pipeline-cicd-pipeline-testing.yaml | 10 +- infra/pipelines/pr-cleanup-pipeline.yaml | 4 +- infra/resources/github-pr-event-listener.yaml | 2 +- infra/tasks/test-frontend.yaml | 6 +- infra/tasks/zap-scan.yaml | 4 +- .../triggers/github-pr-trigger-template.yaml | 4 +- .../github-push-trigger-template.yaml | 2 +- .../triggers/pr-cleanup-trigger-template.yaml | 4 +- scripts/pod_cleanup.sh | 2 +- 56 files changed, 185 insertions(+), 933 deletions(-) delete mode 100644 .github/workflows/main-deploy_helm_chart Gold.yaml delete mode 100644 .github/workflows/pr-build-gold.yaml delete mode 100644 .github/workflows/pr-deploy-cleanup Gold.yaml delete mode 100644 deploy/prod_values_gold.yaml diff --git a/.github/workflows/build_midas_probe.yaml b/.github/workflows/build_midas_probe.yaml index 91454e795..dd0c4e66b 100644 --- a/.github/workflows/build_midas_probe.yaml +++ b/.github/workflows/build_midas_probe.yaml @@ -59,7 +59,7 @@ jobs: helm upgrade --install --values ./midas-probe/values.yaml --set environment=${{ github.event.inputs.Environment }} midas-probe midas-probe build-midas-goldDR: - name: Build Midas Probe-GOLD + name: Build Midas Probe-GOLDDR runs-on: ubuntu-latest steps: - name: Checkout code diff --git a/.github/workflows/demo-deploy_helm_chart.yaml b/.github/workflows/demo-deploy_helm_chart.yaml index 47592e2fb..72a7d2a4c 100644 --- a/.github/workflows/demo-deploy_helm_chart.yaml +++ b/.github/workflows/demo-deploy_helm_chart.yaml @@ -29,7 +29,7 @@ jobs: - name: Helm Deploy / install command run: | echo current installed helm releases - helm list --namespace d8a8f9-test + helm list --namespace f088b1-test echo installing helm chart... - helm upgrade --wait --values ./deploy/demo_values.yaml --namespace d8a8f9-test demo charts/pidp --debug + helm upgrade --wait --values ./deploy/demo_values.yaml --namespace f088b1-test demo charts/pidp --debug diff --git a/.github/workflows/dev-build-endorsement-reminder.yaml b/.github/workflows/dev-build-endorsement-reminder.yaml index b0412f48f..dd7b78661 100644 --- a/.github/workflows/dev-build-endorsement-reminder.yaml +++ b/.github/workflows/dev-build-endorsement-reminder.yaml @@ -23,16 +23,16 @@ jobs: - name: "Docker Build" working-directory: "./backend" run: | - docker build -f ./services.endorsement-reminder/Dockerfile -t image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/endorsement-reminder:develop . + docker build -f ./services.endorsement-reminder/Dockerfile -t image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/endorsement-reminder:develop . # Uses the builder service account token - - name: "Docker Login to Silver OCP" + - name: "Docker Login to GOLD OCP" uses: docker/login-action@v2 with: - registry: image-registry.apps.silver.devops.gov.bc.ca + registry: image-registry.apps.gold.devops.gov.bc.ca username: builder - password: ${{ secrets.SILVER_TOOLS_BUILDER_TOKEN }} + password: ${{ secrets.GOLD_TOOLS_BUILDER_TOKEN }} - name: "Push image" run: | - docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/endorsement-reminder:develop + docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/endorsement-reminder:develop diff --git a/.github/workflows/dev-build-frontend.yaml b/.github/workflows/dev-build-frontend.yaml index 6b39fb521..e9c11b54b 100644 --- a/.github/workflows/dev-build-frontend.yaml +++ b/.github/workflows/dev-build-frontend.yaml @@ -13,45 +13,6 @@ concurrency: cancel-in-progress: true jobs: - build-frontend-silver: - name: Frontend Build - Silver - runs-on: ubuntu-latest - defaults: - run: - working-directory: "./workspace" - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: Use Node.js 18.x - uses: actions/setup-node@v3 - with: - node-version: 18.x - - - name: YARN Install - run: | - yarn install - - - name: YARN Build - run: | - yarn build - - - name: "Docker Build" - run: | - docker build -t image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-frontend:develop . - - # Uses the builder service account token - - name: "Docker Login to Silver OCP" - uses: docker/login-action@v2 - with: - registry: image-registry.apps.silver.devops.gov.bc.ca - username: builder - password: ${{ secrets.SILVER_TOOLS_BUILDER_TOKEN }} - - - name: "Push image" - run: | - docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-frontend:develop - build-frontend-gold: name: Frontend Build - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/dev-build-plr-intake.yaml b/.github/workflows/dev-build-plr-intake.yaml index 5716c3f27..fe04db1b6 100644 --- a/.github/workflows/dev-build-plr-intake.yaml +++ b/.github/workflows/dev-build-plr-intake.yaml @@ -14,32 +14,6 @@ concurrency: cancel-in-progress: true jobs: - build-plr-intake-silver: - name: PLR Intake Backend Build - Silver - runs-on: ubuntu-latest - defaults: - run: - working-directory: "./backend/services.plr-intake" - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: "Docker Build" - run: | - docker build -t image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-plr-intake:develop . - - # Uses the builder service account token - - name: "Docker Login to Silver OCP" - uses: docker/login-action@v2 - with: - registry: image-registry.apps.silver.devops.gov.bc.ca - username: builder - password: ${{ secrets.SILVER_TOOLS_BUILDER_TOKEN }} - - - name: "Push image" - run: | - docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-plr-intake:develop - build-plr-intake-gold: name: PLR Intake Backend Build - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/dev-build-webapi.yaml b/.github/workflows/dev-build-webapi.yaml index 361d3b81d..ca6733e56 100644 --- a/.github/workflows/dev-build-webapi.yaml +++ b/.github/workflows/dev-build-webapi.yaml @@ -14,31 +14,6 @@ concurrency: cancel-in-progress: true jobs: - build-webapi-silver: - name: WebAPI Backend Build - Silver - runs-on: ubuntu-latest - defaults: - run: - working-directory: "./backend/webapi" - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: "Docker Build" - run: | - docker build -t image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-webapi:develop . - - # Uses the builder service account token - - name: "Docker Login to Silver OCP" - uses: docker/login-action@v2 - with: - registry: image-registry.apps.silver.devops.gov.bc.ca - username: builder - password: ${{ secrets.SILVER_TOOLS_BUILDER_TOKEN }} - - - name: "Push image" - run: | - docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-webapi:develop build-webapi-gold: name: WebAPI Backend Build - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/dev-deploy-db-migration.yaml b/.github/workflows/dev-deploy-db-migration.yaml index 5e1277952..0c79ff044 100644 --- a/.github/workflows/dev-deploy-db-migration.yaml +++ b/.github/workflows/dev-deploy-db-migration.yaml @@ -20,21 +20,21 @@ jobs: - name: Authenticate and set context uses: redhat-actions/oc-login@v1.1 with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} + openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} + openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - name: deply db migration job run: | - oc project d8a8f9-dev + oc project f088b1-dev echo deleting dev-webapi-migrations job oc delete job/dev-webapi-migrations --ignore-not-found echo applying web-api-migration template... - helm template dev charts/webapi -n d8a8f9-dev --values ./deploy/dev_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -n d8a8f9-dev -f - + helm template dev charts/webapi -n f088b1-dev --values ./deploy/dev_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -n f088b1-dev -f - echo deleting dev-plr-intake-migrations job oc delete job/dev-plr-intake-migrations --ignore-not-found echo applying plr-intake-migration template... - helm template dev charts/plr-intake -n d8a8f9-dev --values ./deploy/dev_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -n d8a8f9-dev -f - \ No newline at end of file + helm template dev charts/plr-intake -n f088b1-dev --values ./deploy/dev_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -n f088b1-dev -f - \ No newline at end of file diff --git a/.github/workflows/dev-deploy-endorsement-reminder.yaml b/.github/workflows/dev-deploy-endorsement-reminder.yaml index 2f4ac156e..8c1c73199 100644 --- a/.github/workflows/dev-deploy-endorsement-reminder.yaml +++ b/.github/workflows/dev-deploy-endorsement-reminder.yaml @@ -13,25 +13,6 @@ concurrency: cancel-in-progress: true jobs: - helm-deployment-endorsement-reminder-silver: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v4 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.2 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Helm Deploy Upgrade - run: | - echo current installed helm releases - helm list --namespace d8a8f9-dev - - echo installing helm chart... - helm upgrade --wait --namespace d8a8f9-dev --values infra/endorsement_reminder/values.yaml endorsement-reminder infra/endorsement_reminder - helm-deployment-endorsement-reminder-gold: runs-on: 'ubuntu-latest' steps: @@ -49,4 +30,4 @@ jobs: helm list --namespace f088b1-dev echo installing helm chart... - helm upgrade --wait --namespace f088b1-dev --values infra/endorsement_reminder/values.yaml --set global.image.registry=image-registry.openshift-image-registry.svc:5000/f088b1-tools endorsement-reminder infra/endorsement_reminder + helm upgrade --wait --namespace f088b1-dev --values infra/endorsement_reminder/values.yaml endorsement-reminder infra/endorsement_reminder diff --git a/.github/workflows/dev-deploy-helm_chart.yaml b/.github/workflows/dev-deploy-helm_chart.yaml index f142e2dbe..535b4f3d0 100644 --- a/.github/workflows/dev-deploy-helm_chart.yaml +++ b/.github/workflows/dev-deploy-helm_chart.yaml @@ -14,26 +14,6 @@ concurrency: cancel-in-progress: true jobs: - - helm-deployment-silver: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v1 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.1 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Helm Deploy / install command - run: | - echo current installed helm releases - helm list --namespace d8a8f9-dev - - echo installing helm chart... - helm upgrade --wait --values ./deploy/dev_values.yaml --namespace d8a8f9-dev dev charts/pidp --debug - helm-deployment-gold: runs-on: 'ubuntu-latest' steps: @@ -51,7 +31,7 @@ jobs: helm list --namespace f088b1-dev echo installing helm chart... - helm upgrade --wait --values ./deploy/dev_values.yaml --set global.image.registry=image-registry.openshift-image-registry.svc:5000/f088b1-tools --set global.license_plate=f088b1 --namespace f088b1-dev dev charts/pidp --debug + helm upgrade --wait --values ./deploy/dev_values.yaml --namespace f088b1-dev dev charts/pidp --debug helm-deployment-goldDR: runs-on: 'ubuntu-latest' @@ -71,5 +51,5 @@ jobs: helm list --namespace f088b1-dev echo installing helm chart... - helm upgrade --wait --values ./deploy/dev_values.yaml --set global.image.registry=image-registry.openshift-image-registry.svc:5000/f088b1-tools --set global.license_plate=f088b1 --namespace f088b1-dev dev charts/pidp --debug + helm upgrade --wait --values ./deploy/dev_values.yaml --namespace f088b1-dev dev charts/pidp --debug diff --git a/.github/workflows/main-build-endorsement-reminder.yaml b/.github/workflows/main-build-endorsement-reminder.yaml index 03d7dc139..47266a7ee 100644 --- a/.github/workflows/main-build-endorsement-reminder.yaml +++ b/.github/workflows/main-build-endorsement-reminder.yaml @@ -17,24 +17,6 @@ concurrency: cancel-in-progress: true jobs: - promote-image-to-prod-silver: - name: WebAPI Backend Promote to prod - Silver - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote webapi from test to prod - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/endorsement-reminder:${{ env.ORIG_TAG }} \ - d8a8f9-tools/endorsement-reminder:${{ env.PROMOTE_TAG }} promote-image-to-prod-gold: name: WebAPI Backend Promote to prod - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/main-build-frontend.yaml b/.github/workflows/main-build-frontend.yaml index dbdaf904c..a99d2217f 100644 --- a/.github/workflows/main-build-frontend.yaml +++ b/.github/workflows/main-build-frontend.yaml @@ -16,26 +16,7 @@ concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true -jobs: - promote-image-to-prod-silver: - name: WebAPI Backend Promote to prod- Silver - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote frontend from test to prod - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/pidp-frontend:${{ env.ORIG_TAG }} \ - d8a8f9-tools/pidp-frontend:${{ env.PROMOTE_TAG }} - +jobs: promote-image-to-prod-gold: name: WebAPI Backend Promote to prod- Gold runs-on: ubuntu-latest diff --git a/.github/workflows/main-build-plr-intake.yaml b/.github/workflows/main-build-plr-intake.yaml index 0dec7288f..7476e9963 100644 --- a/.github/workflows/main-build-plr-intake.yaml +++ b/.github/workflows/main-build-plr-intake.yaml @@ -19,24 +19,6 @@ concurrency: cancel-in-progress: true jobs: - promote-image-to-prod-silver: - name: Plr Intake Backend Promote to prod - Silver - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote plr-intake from test to prod - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/pidp-plr-intake:${{ env.ORIG_TAG }} \ - d8a8f9-tools/pidp-plr-intake:${{ env.PROMOTE_TAG }} promote-image-to-prod-gold: name: Plr Intake Backend Promote to prod - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/main-build-webapi.yaml b/.github/workflows/main-build-webapi.yaml index 8d923d8f3..b969b9074 100644 --- a/.github/workflows/main-build-webapi.yaml +++ b/.github/workflows/main-build-webapi.yaml @@ -18,25 +18,6 @@ concurrency: cancel-in-progress: true jobs: - promote-image-to-prod-silver: - name: WebAPI Backend Promote to prod - Silver - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote webapi from test to prod - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/pidp-webapi:${{ env.ORIG_TAG }} \ - d8a8f9-tools/pidp-webapi:${{ env.PROMOTE_TAG }} - promote-image-to-prod-gold: name: WebAPI Backend Promote to prod - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/main-deploy-db-migration.yaml b/.github/workflows/main-deploy-db-migration.yaml index ba9244333..e035122ed 100644 --- a/.github/workflows/main-deploy-db-migration.yaml +++ b/.github/workflows/main-deploy-db-migration.yaml @@ -11,33 +11,6 @@ concurrency: cancel-in-progress: true jobs: - db-migration-silver: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v1 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.1 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: deply db migration job - silver - run: | - oc project d8a8f9-prod - - echo deleting prod-webapi-migrations job - oc delete job/prod-webapi-migrations -n d8a8f9-prod --ignore-not-found - - echo applying web-api-migration template... - helm template prod charts/webapi -n d8a8f9-prod --values ./deploy/prod_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -n d8a8f9-prod -f - - - echo deleting prod-plr-intake-migrations job - oc delete job/prod-plr-intake-migrations -n d8a8f9-prod --ignore-not-found - - echo applying plr-intake-migration template... - helm template prod charts/plr-intake -n d8a8f9-prod --values ./deploy/prod_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -n d8a8f9-prod -f - - db-migration-gold: runs-on: 'ubuntu-latest' steps: @@ -57,10 +30,10 @@ jobs: oc delete job/prod-webapi-migrations -n f088b1-prod --ignore-not-found echo applying web-api-migration template... - helm template prod charts/webapi -n f088b1-prod --values ./deploy/prod_values_gold.yaml -s templates/migrations.yaml --wait --debug | oc apply -n f088b1-prod -f - + helm template prod charts/webapi -n f088b1-prod --values ./deploy/prod_values.yaml -s templates/migrations.yaml --wait --debug | oc apply -n f088b1-prod -f - echo deleting prod-plr-intake-migrations job oc delete job/prod-plr-intake-migrations -n f088b1-prod --ignore-not-found echo applying plr-intake-migration template... - helm template prod charts/plr-intake -n f088b1-prod --values ./deploy/prod_values_gold.yaml -s templates/migrations.yaml --wait --debug | oc apply -n f088b1-prod -f - + helm template prod charts/plr-intake -n f088b1-prod --values ./deploy/prod_values.yaml -s templates/migrations.yaml --wait --debug | oc apply -n f088b1-prod -f - diff --git a/.github/workflows/main-deploy-endorsement-reminder.yaml b/.github/workflows/main-deploy-endorsement-reminder.yaml index ca57cb8b9..55ad10835 100644 --- a/.github/workflows/main-deploy-endorsement-reminder.yaml +++ b/.github/workflows/main-deploy-endorsement-reminder.yaml @@ -13,26 +13,6 @@ concurrency: cancel-in-progress: true jobs: - - helm-deployment-endorsement-reminder-silver: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v4 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.2 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Helm Deploy Upgrade - run: | - echo current installed helm releases - helm list --namespace d8a8f9-test - - echo installing helm chart... - helm upgrade --wait --namespace d8a8f9-prod --values infra/endorsement_reminder/values.yaml --set env=prod --set global.image.tag=main --set aspnetcore.environment=Production endorsement-reminder infra/endorsement_reminder - helm-deployment-endorsement-reminder-gold: runs-on: 'ubuntu-latest' steps: @@ -50,5 +30,5 @@ jobs: helm list --namespace f088b1-test echo installing helm chart... - helm upgrade --wait --namespace f088b1-prod --values infra/endorsement_reminder/values.yaml --set env=prod --set global.image.tag=main --set aspnetcore.environment=Production --set global.image.registry=image-registry.openshift-image-registry.svc:5000/f088b1-tools endorsement-reminder infra/endorsement_reminder + helm upgrade --wait --namespace f088b1-prod --values infra/endorsement_reminder/values.yaml --set env=prod --set global.image.tag=main --set aspnetcore.environment=Production endorsement-reminder infra/endorsement_reminder diff --git a/.github/workflows/main-deploy_helm_chart Gold.yaml b/.github/workflows/main-deploy_helm_chart Gold.yaml deleted file mode 100644 index 39ab6d293..000000000 --- a/.github/workflows/main-deploy_helm_chart Gold.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: Deploy Helm Charts - Prod - Gold - -on: - push: - branches: [main] - paths: - - "charts/**" - - "./deploy/prod_values_gold.yaml" - workflow_dispatch: - -# This will terminate builds that are previously, but continuing to run. Saves GHA hours. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - helm-deployment-gold: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v1 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.1 - with: - openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Helm Deploy / install command - run: | - echo current installed helm releases - helm list --namespace f088b1-prod - - echo installing helm chart... - helm upgrade --wait --values ./deploy/prod_values_gold.yaml --namespace f088b1-prod prod charts/pidp --debug diff --git a/.github/workflows/main-deploy_helm_chart.yaml b/.github/workflows/main-deploy_helm_chart.yaml index 3fa2a5642..87ef62f74 100644 --- a/.github/workflows/main-deploy_helm_chart.yaml +++ b/.github/workflows/main-deploy_helm_chart.yaml @@ -1,35 +1,34 @@ -name: Deploy Helm Charts - Prod - -on: - push: - branches: [main] - paths: - - "charts/**" - - "./deploy/prod_values.yaml" - workflow_dispatch: - -# This will terminate builds that are previously, but continuing to run. Saves GHA hours. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - - helm-deployment: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v1 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.1 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Helm Deploy / install command - run: | - echo current installed helm releases - helm list --namespace d8a8f9-prod - - echo installing helm chart... - helm upgrade --wait --values ./deploy/prod_values.yaml --namespace d8a8f9-prod prod charts/pidp --debug +name: Deploy Helm Charts - Prod - Gold + +on: + push: + branches: [main] + paths: + - "charts/**" + - "./deploy/prod_values.yaml" + workflow_dispatch: + +# This will terminate builds that are previously, but continuing to run. Saves GHA hours. +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + helm-deployment-gold: + runs-on: 'ubuntu-latest' + steps: + - uses: actions/checkout@v1 + + - name: Authenticate and set context + uses: redhat-actions/oc-login@v1.1 + with: + openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} + openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} + + - name: Helm Deploy / install command + run: | + echo current installed helm releases + helm list --namespace f088b1-prod + + echo installing helm chart... + helm upgrade --wait --values ./deploy/prod_values.yaml --namespace f088b1-prod prod charts/pidp --debug diff --git a/.github/workflows/pr-build-gold.yaml b/.github/workflows/pr-build-gold.yaml deleted file mode 100644 index 0f1c3bd80..000000000 --- a/.github/workflows/pr-build-gold.yaml +++ /dev/null @@ -1,249 +0,0 @@ -name: Build All - PR - GOLD - -on: - workflow_dispatch: - push: - # paths: - # - "workspace/**" - # - "backend/services.plr-intake/**" - # - "backend/services.plr-intake.tests/**" - # - "backend/webapi/**" - # - "backend/webapi.tests/**" - branches-ignore: - - 'develop' - - 'test' - - 'main' - pull_request: - types: [opened] - branches-ignore: - - 'test' - - 'master' - -permissions: read-all - -# This will terminate builds that are previously, but continuing to run. Saves GHA hours. -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - - get-pr-number: - runs-on: ubuntu-latest - defaults: - run: - working-directory: "./workspace" - - outputs: - pr_number: ${{ steps.find-pr.outputs.pr }} - - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: find-pr - id: find-pr - uses: jwalton/gh-find-current-pr@v1 - with: - state: open - - - name: job1 - id: job1 - run: echo "Your PR is ${PR}" - if: success() && steps.find-pr.outputs.number - env: - PR: ${{ steps.find-pr.outputs.pr }} - - Yarn-Lint: - name: Frontend Yarn Lint - runs-on: ubuntu-latest - needs: get-pr-number - if: ${{ always() && !cancelled() && needs.get-pr-number.outputs.pr_number != '' }} - defaults: - run: - working-directory: "./workspace" - - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: Use Node.js 18.x - uses: actions/setup-node@v3 - with: - node-version: 18.x - - - name: YARN Install - run: yarn install - - - name: YARN Lint - run: yarn lint:all - - build-and-push-frontend: - name: Frontend Build & Push - runs-on: ubuntu-latest - needs: get-pr-number - if: ${{ always() && !cancelled() && needs.get-pr-number.outputs.pr_number != '' }} - defaults: - run: - working-directory: "./workspace" - - permissions: - contents: read - id-token: write - - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: Use Node.js 18.x - uses: actions/setup-node@v3 - with: - node-version: 18.x - - - name: YARN Install - run: yarn install - - - name: YARN Build - run: yarn build - - - name: YARN Test - run: | - yarn test:ci - - - name: "Docker Build" - run: | - docker build -t image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-frontend:pr-${{ needs.get-pr-number.outputs.pr_number }} . - - # Uses the builder service account token - - name: "Docker Login to Gold OCP" - uses: docker/login-action@v2 - with: - registry: image-registry.apps.gold.devops.gov.bc.ca - username: builder - password: ${{ secrets.GOLD_TOOLS_BUILDER_TOKEN }} - - - name: "Push image" - run: | - docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-frontend:pr-${{ needs.get-pr-number.outputs.pr_number }} - - unit-test-backend: - needs: get-pr-number - if: ${{ always() && !cancelled() && needs.get-pr-number.outputs.pr_number != '' }} - runs-on: ubuntu-latest - defaults: - run: - working-directory: "./backend" - permissions: - contents: read - id-token: write - - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - name: Setup .NET Core - uses: actions/setup-dotnet@v3 - with: - dotnet-version: 8.0.x - - name: Build backend - run: dotnet build --configuration Release - - name: Run Tests - run: dotnet test --configuration Release - - build-and-push-plr-intake: - name: PLR Intake Backend Build & Push - needs: [get-pr-number, unit-test-backend] - if: ${{ !(contains(needs.*.result, 'failure')) && needs.get-pr-number.outputs.pr_number != '' }} - runs-on: ubuntu-latest - defaults: - run: - working-directory: "./backend/services.plr-intake" - permissions: - contents: read - id-token: write - - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: "Docker Build" - run: | - docker build -t image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-plr-intake:pr-${{ needs.get-pr-number.outputs.pr_number }} . - - # Uses the builder service account token - - name: "Docker Login to Gold OCP" - uses: docker/login-action@v2 - with: - registry: image-registry.apps.gold.devops.gov.bc.ca - username: builder - password: ${{ secrets.GOLD_TOOLS_BUILDER_TOKEN }} - - - name: "Push image" - run: | - docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-plr-intake:pr-${{ needs.get-pr-number.outputs.pr_number }} - - build-and-push-webapi: - name: WebAPI Backend Build & Push - needs: [get-pr-number, unit-test-backend] - if: ${{ !(contains(needs.*.result, 'failure')) && needs.get-pr-number.outputs.pr_number != '' }} - runs-on: ubuntu-latest - defaults: - run: - working-directory: "./backend/webapi" - permissions: - contents: read - id-token: write - - steps: - - name: "Checkout Code" - uses: actions/checkout@master - - - name: "Docker Build Gold" - run: | - docker build -t image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-webapi:pr-${{ needs.get-pr-number.outputs.pr_number }} . - - # Uses the builder service account token - - name: "Docker Login to Gold OCP" - uses: docker/login-action@v2 - with: - registry: image-registry.apps.gold.devops.gov.bc.ca - username: builder - password: ${{ secrets.GOLD_TOOLS_BUILDER_TOKEN }} - - - name: "Push image" - run: | - docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-webapi:pr-${{ needs.get-pr-number.outputs.pr_number }} - - helm-deployment: - needs: [build-and-push-webapi, build-and-push-plr-intake, build-and-push-frontend] - runs-on: 'ubuntu-latest' - permissions: - contents: read - id-token: write - steps: - - uses: actions/checkout@master - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.2 - with: - openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Get pr number from GH cli command (pushing to pr) - if: ${{ github.event.number == ''}} - run: echo "pr_number=$(gh pr view --json number -q .number || echo "")" >> "$GITHUB_ENV" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Get pr number from github.event.number (opening a pr) - if: ${{ github.event.number != ''}} - run: echo "pr_number=${{ github.event.number }}" >> "$GITHUB_ENV" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Helm Deploy / install command - run: | - echo current installed helm releases - helm list --namespace f088b1-dev - - echo installing helm chart... - helm upgrade --install --wait --values ./deploy/pr_values.yaml --set global.license_plate=f088b1 --set global.image.registry=image-registry.openshift-image-registry.svc:5000/f088b1-tools --namespace f088b1-dev pr-${{ env.pr_number }} charts/pidp --debug --set global.image.tag=pr-${{ env.pr_number }} diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml index 2fb7c5a52..cde4caa8e 100644 --- a/.github/workflows/pr-build.yaml +++ b/.github/workflows/pr-build.yaml @@ -1,4 +1,4 @@ -name: Build All - PR +name: Build All - PR - GOLD on: workflow_dispatch: @@ -112,19 +112,19 @@ jobs: - name: "Docker Build" run: | - docker build -t image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-frontend:pr-${{ needs.get-pr-number.outputs.pr_number }} . + docker build -t image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-frontend:pr-${{ needs.get-pr-number.outputs.pr_number }} . # Uses the builder service account token - - name: "Docker Login to Silver OCP" + - name: "Docker Login to Gold OCP" uses: docker/login-action@v2 with: - registry: image-registry.apps.silver.devops.gov.bc.ca + registry: image-registry.apps.gold.devops.gov.bc.ca username: builder - password: ${{ secrets.SILVER_TOOLS_BUILDER_TOKEN }} + password: ${{ secrets.GOLD_TOOLS_BUILDER_TOKEN }} - name: "Push image" run: | - docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-frontend:pr-${{ needs.get-pr-number.outputs.pr_number }} + docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-frontend:pr-${{ needs.get-pr-number.outputs.pr_number }} unit-test-backend: needs: get-pr-number @@ -167,19 +167,19 @@ jobs: - name: "Docker Build" run: | - docker build -t image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-plr-intake:pr-${{ needs.get-pr-number.outputs.pr_number }} . + docker build -t image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-plr-intake:pr-${{ needs.get-pr-number.outputs.pr_number }} . # Uses the builder service account token - - name: "Docker Login to Silver OCP" + - name: "Docker Login to Gold OCP" uses: docker/login-action@v2 with: - registry: image-registry.apps.silver.devops.gov.bc.ca + registry: image-registry.apps.gold.devops.gov.bc.ca username: builder - password: ${{ secrets.SILVER_TOOLS_BUILDER_TOKEN }} + password: ${{ secrets.GOLD_TOOLS_BUILDER_TOKEN }} - name: "Push image" run: | - docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-plr-intake:pr-${{ needs.get-pr-number.outputs.pr_number }} + docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-plr-intake:pr-${{ needs.get-pr-number.outputs.pr_number }} build-and-push-webapi: name: WebAPI Backend Build & Push @@ -197,22 +197,22 @@ jobs: - name: "Checkout Code" uses: actions/checkout@master - - name: "Docker Build" + - name: "Docker Build Gold" run: | - docker build -t image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-webapi:pr-${{ needs.get-pr-number.outputs.pr_number }} . + docker build -t image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-webapi:pr-${{ needs.get-pr-number.outputs.pr_number }} . # Uses the builder service account token - - name: "Docker Login to Silver OCP" + - name: "Docker Login to Gold OCP" uses: docker/login-action@v2 with: - registry: image-registry.apps.silver.devops.gov.bc.ca + registry: image-registry.apps.gold.devops.gov.bc.ca username: builder - password: ${{ secrets.SILVER_TOOLS_BUILDER_TOKEN }} + password: ${{ secrets.GOLD_TOOLS_BUILDER_TOKEN }} - name: "Push image" run: | - docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/pidp-webapi:pr-${{ needs.get-pr-number.outputs.pr_number }} - + docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/pidp-webapi:pr-${{ needs.get-pr-number.outputs.pr_number }} + helm-deployment: needs: [build-and-push-webapi, build-and-push-plr-intake, build-and-push-frontend] runs-on: 'ubuntu-latest' @@ -225,8 +225,8 @@ jobs: - name: Authenticate and set context uses: redhat-actions/oc-login@v1.2 with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} + openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} + openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - name: Get pr number from GH cli command (pushing to pr) if: ${{ github.event.number == ''}} @@ -243,7 +243,7 @@ jobs: - name: Helm Deploy / install command run: | echo current installed helm releases - helm list --namespace d8a8f9-dev + helm list --namespace f088b1-dev echo installing helm chart... - helm upgrade --install --wait --values ./deploy/pr_values.yaml --namespace d8a8f9-dev pr-${{ env.pr_number }} charts/pidp --debug --set global.image.tag=pr-${{ env.pr_number }} + helm upgrade --install --wait --values ./deploy/pr_values.yaml --namespace f088b1-dev pr-${{ env.pr_number }} charts/pidp --debug --set global.image.tag=pr-${{ env.pr_number }} diff --git a/.github/workflows/pr-deploy-cleanup Gold.yaml b/.github/workflows/pr-deploy-cleanup Gold.yaml deleted file mode 100644 index ddcc88968..000000000 --- a/.github/workflows/pr-deploy-cleanup Gold.yaml +++ /dev/null @@ -1,47 +0,0 @@ -name: Remove Helm deployment on PR merge - Gold -on: - workflow_dispatch: - pull_request: - types: [closed] - branches-ignore: - - 'test' - - 'master' -jobs: - remove-deployment: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.1 - with: - openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Remove Helm deployment - run: | - helm uninstall pr-${{ github.event.number }} --namespace f088b1-dev - - - name: Remove PR imagestream - run: | - oc tag -d pidp-frontend:pr-${{ github.event.number }} -n f088b1-tools - oc tag -d pidp-plr-intake:pr-${{ github.event.number }} -n f088b1-tools - oc tag -d pidp-webapi:pr-${{ github.event.number }} -n f088b1-tools - - merge_job: - - # this job will only run if the PR has been merged - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - steps: - - run: | - echo PR #${{ github.event.number }} has been merged - - close_job: - # this job will only run if the PR has been closed without being merged - if: github.event.pull_request.merged == false - runs-on: ubuntu-latest - steps: - - run: | - echo PR #${{ github.event.number }} has been closed without being merged \ No newline at end of file diff --git a/.github/workflows/pr-deploy-cleanup.yaml b/.github/workflows/pr-deploy-cleanup.yaml index 81ac92e80..ddcc88968 100644 --- a/.github/workflows/pr-deploy-cleanup.yaml +++ b/.github/workflows/pr-deploy-cleanup.yaml @@ -1,47 +1,47 @@ -name: Remove Helm deployment on PR merge -on: - workflow_dispatch: - pull_request: - types: [closed] - branches-ignore: - - 'test' - - 'master' -jobs: - remove-deployment: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.1 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Remove Helm deployment - run: | - helm uninstall pr-${{ github.event.number }} --namespace d8a8f9-dev - - - name: Remove PR imagestream - run: | - oc tag -d pidp-frontend:pr-${{ github.event.number }} -n d8a8f9-tools - oc tag -d pidp-plr-intake:pr-${{ github.event.number }} -n d8a8f9-tools - oc tag -d pidp-webapi:pr-${{ github.event.number }} -n d8a8f9-tools - - merge_job: - - # this job will only run if the PR has been merged - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - steps: - - run: | - echo PR #${{ github.event.number }} has been merged - - close_job: - # this job will only run if the PR has been closed without being merged - if: github.event.pull_request.merged == false - runs-on: ubuntu-latest - steps: - - run: | +name: Remove Helm deployment on PR merge - Gold +on: + workflow_dispatch: + pull_request: + types: [closed] + branches-ignore: + - 'test' + - 'master' +jobs: + remove-deployment: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Authenticate and set context + uses: redhat-actions/oc-login@v1.1 + with: + openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} + openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} + + - name: Remove Helm deployment + run: | + helm uninstall pr-${{ github.event.number }} --namespace f088b1-dev + + - name: Remove PR imagestream + run: | + oc tag -d pidp-frontend:pr-${{ github.event.number }} -n f088b1-tools + oc tag -d pidp-plr-intake:pr-${{ github.event.number }} -n f088b1-tools + oc tag -d pidp-webapi:pr-${{ github.event.number }} -n f088b1-tools + + merge_job: + + # this job will only run if the PR has been merged + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - run: | + echo PR #${{ github.event.number }} has been merged + + close_job: + # this job will only run if the PR has been closed without being merged + if: github.event.pull_request.merged == false + runs-on: ubuntu-latest + steps: + - run: | echo PR #${{ github.event.number }} has been closed without being merged \ No newline at end of file diff --git a/.github/workflows/test-build-endorsement-reminder.yaml b/.github/workflows/test-build-endorsement-reminder.yaml index 9e75188f0..91199042e 100644 --- a/.github/workflows/test-build-endorsement-reminder.yaml +++ b/.github/workflows/test-build-endorsement-reminder.yaml @@ -17,25 +17,6 @@ concurrency: cancel-in-progress: true jobs: - promote-image-to-test-silver: - name: WebAPI Backend Promote to test - Silver - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote webapi from dev to test - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/endorsement-reminder:${{ env.ORIG_TAG }} \ - d8a8f9-tools/endorsement-reminder:${{ env.PROMOTE_TAG }} - promote-image-to-test-gold: name: WebAPI Backend Promote to test - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/test-build-frontend.yaml b/.github/workflows/test-build-frontend.yaml index 35e660346..8ffc4b3c9 100644 --- a/.github/workflows/test-build-frontend.yaml +++ b/.github/workflows/test-build-frontend.yaml @@ -17,25 +17,6 @@ concurrency: cancel-in-progress: true jobs: - promote-image-to-test-silver: - name: Frontend Promote to test - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote frontend from dev to test - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/pidp-frontend:${{ env.ORIG_TAG }} \ - d8a8f9-tools/pidp-frontend:${{ env.PROMOTE_TAG }} - promote-image-to-test-gold: name: Frontend Promote to test - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/test-build-plr-intake.yaml b/.github/workflows/test-build-plr-intake.yaml index af91a5236..8a766de86 100644 --- a/.github/workflows/test-build-plr-intake.yaml +++ b/.github/workflows/test-build-plr-intake.yaml @@ -18,24 +18,6 @@ concurrency: cancel-in-progress: true jobs: - promote-image-to-test-silver: - name: Plr Intake Backend Promote to test - Silver - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote plr-intake from dev to test - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/pidp-plr-intake:${{ env.ORIG_TAG }} \ - d8a8f9-tools/pidp-plr-intake:${{ env.PROMOTE_TAG }} promote-image-to-test-gold: name: Plr Intake Backend Promote to test - Gold diff --git a/.github/workflows/test-build-webapi.yaml b/.github/workflows/test-build-webapi.yaml index 074393d90..0a71c56b5 100644 --- a/.github/workflows/test-build-webapi.yaml +++ b/.github/workflows/test-build-webapi.yaml @@ -18,25 +18,6 @@ concurrency: cancel-in-progress: true jobs: - promote-image-to-test-silver: - name: WebAPI Backend Promote to test - Silver - runs-on: ubuntu-latest - steps: - - name: Install oc - uses: redhat-actions/openshift-tools-installer@v1 - with: - oc: "4.7" - - - name: oc login - run: | - oc login --token=${{ secrets.OPENSHIFT_GHA_SERVICE_ACCOUNT_TOKEN }} --server=${{ secrets.OPENSHIFT_CLUSTER_URL }} - - - name: Promote webapi from dev to test - run: | - oc -n d8a8f9-tools tag \ - d8a8f9-tools/pidp-webapi:${{ env.ORIG_TAG }} \ - d8a8f9-tools/pidp-webapi:${{ env.PROMOTE_TAG }} - promote-image-to-test-gold: name: WebAPI Backend Promote to test - Gold runs-on: ubuntu-latest diff --git a/.github/workflows/test-deploy-db-migration.yaml b/.github/workflows/test-deploy-db-migration.yaml index cd2c2d72d..500958caf 100644 --- a/.github/workflows/test-deploy-db-migration.yaml +++ b/.github/workflows/test-deploy-db-migration.yaml @@ -23,18 +23,18 @@ jobs: openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - name: deply db migration job into d8a8f9-test + - name: deply db migration job into f088b1-test run: | - oc project d8a8f9-test + oc project f088b1-test echo deleting test-webapi-migrations job oc delete job/test-webapi-migrations --ignore-not-found echo applying web-api-migration template... - helm template test charts/webapi -n d8a8f9-test --values ./deploy/test_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -f - + helm template test charts/webapi -n f088b1-test --values ./deploy/test_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -f - echo deleting test-plr-intake-migrations job oc delete job/test-plr-intake-migrations --ignore-not-found echo applying plr-intake-migration template... - helm template test charts/plr-intake -n d8a8f9-test --values ./deploy/test_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -f - \ No newline at end of file + helm template test charts/plr-intake -n f088b1-test --values ./deploy/test_values.yaml -s templates/migrations.yaml --wait --debug| oc apply -f - \ No newline at end of file diff --git a/.github/workflows/test-deploy-endorsement-reminder.yaml b/.github/workflows/test-deploy-endorsement-reminder.yaml index fa899689a..371b8d4ee 100644 --- a/.github/workflows/test-deploy-endorsement-reminder.yaml +++ b/.github/workflows/test-deploy-endorsement-reminder.yaml @@ -13,26 +13,6 @@ concurrency: cancel-in-progress: true jobs: - - helm-deployment-endorsement-reminder: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v4 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.2 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Helm Deploy Upgrade - run: | - echo current installed helm releases - helm list --namespace d8a8f9-test - - echo installing helm chart... - helm upgrade --wait --namespace d8a8f9-test --values infra/endorsement_reminder/values.yaml endorsement-reminder infra/endorsement_reminder - helm-deployment-endorsement-reminder-gold: runs-on: 'ubuntu-latest' steps: diff --git a/.github/workflows/test-deploy_helm_chart.yaml b/.github/workflows/test-deploy_helm_chart.yaml index b8715487f..9c53e6524 100644 --- a/.github/workflows/test-deploy_helm_chart.yaml +++ b/.github/workflows/test-deploy_helm_chart.yaml @@ -14,25 +14,6 @@ concurrency: cancel-in-progress: true jobs: - helm-deployment: - runs-on: 'ubuntu-latest' - steps: - - uses: actions/checkout@v1 - - - name: Authenticate and set context - uses: redhat-actions/oc-login@v1.1 - with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - - - name: Helm Deploy / install command - run: | - echo current installed helm releases - helm list --namespace d8a8f9-test - - echo installing helm chart... - helm upgrade --wait --values ./deploy/test_values.yaml --namespace d8a8f9-test test charts/pidp --debug - helm-deployment-gold: runs-on: 'ubuntu-latest' steps: @@ -50,7 +31,7 @@ jobs: helm list --namespace f088b1-test echo installing helm chart... - helm upgrade --wait --values ./deploy/test_values.yaml --set global.license_plate=f088b1 --set global.image.registry=image-registry.openshift-image-registry.svc:5000/f088b1-tools --namespace f088b1-test test charts/pidp --debug + helm upgrade --wait --values ./deploy/test_values.yaml --namespace f088b1-test test charts/pidp --debug helm-deployment-golddr: runs-on: 'ubuntu-latest' steps: @@ -68,4 +49,4 @@ jobs: helm list --namespace f088b1-test echo installing helm chart... - helm upgrade --wait --values ./deploy/test_values.yaml --set global.license_plate=f088b1 --set global.image.registry=image-registry.openshift-image-registry.svc:5000/f088b1-tools --namespace f088b1-test test charts/pidp --debug + helm upgrade --wait --values ./deploy/test_values.yaml --namespace f088b1-test test charts/pidp --debug diff --git a/charts/frontend/values.yaml b/charts/frontend/values.yaml index e9cbd49f9..600e89f28 100644 --- a/charts/frontend/values.yaml +++ b/charts/frontend/values.yaml @@ -6,9 +6,9 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: latest - license_plate: "d8a8f9" + license_plate: "f088b1" replicaCount: 1 diff --git a/charts/nginx/values.yaml b/charts/nginx/values.yaml index dacdf1dc1..34b558994 100644 --- a/charts/nginx/values.yaml +++ b/charts/nginx/values.yaml @@ -885,7 +885,7 @@ metrics: ## @section fluentbit parameters fluentbit: - enabled: true + enabled: false imageRegistry: docker.io/fluent/fluent-bit:3.0.3-debug imagePullPolicy: IfNotPresent securityContext: diff --git a/charts/pidp/charts/frontend-0.1.1.tgz b/charts/pidp/charts/frontend-0.1.1.tgz index 3a65e0ac015c1730ecf9da095512ed731426e866..ef51c559642c1481bafa42de3d1edf79391cc9c6 100644 GIT binary patch literal 4971 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 literal 4966 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 diff --git a/charts/pidp/charts/nginx-9.7.3.tgz b/charts/pidp/charts/nginx-9.7.3.tgz index c71aae711406868204200a7f319a59e8ec2c4d55..a70171cfc0465ea416a775040a85dc6d88709b47 100644 GIT binary patch literal 37263 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 literal 38206 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�~Rhr!UV(^aQK+UNB_36 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 Gz5@V)s!RU> diff --git a/charts/pidp/charts/plr-intake-0.1.2.tgz b/charts/pidp/charts/plr-intake-0.1.2.tgz index 4610c6cff3896499351e8a5a53abadffcf5de224..1ed5c3db491162cd87fc2e78d08e24f2ed855423 100644 GIT binary patch delta 4277 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 X8}Gi`YpSzi5q<&)ab7ES0CoTXMGRhT delta 4268 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 OegX(m!FUq@b^riv$z#+2 diff --git a/charts/pidp/charts/webapi-0.1.5.tgz b/charts/pidp/charts/webapi-0.1.5.tgz index e91565e78441e7ee388d9650b21f0d10fe60beae..d993ea808d2be84e18a7e75bdbe2dd23d75647a1 100644 GIT binary patch delta 5679 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 V>3Mpdo~Nhr`2*={IEes$0004|HXr~1 literal 5699 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 diff --git a/charts/pidp/values.yaml b/charts/pidp/values.yaml index d59a81730..a7f460112 100644 --- a/charts/pidp/values.yaml +++ b/charts/pidp/values.yaml @@ -6,9 +6,9 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: latest - license_plate: "d8a8f9" + license_plate: "f088b1" # used for creating/dropping databases image: @@ -252,7 +252,4 @@ tolerations: [] affinity: {} rabbitmq: - autoCreate: false - -routes: - enabled: false \ No newline at end of file + autoCreate: false \ No newline at end of file diff --git a/charts/plr-intake/values.yaml b/charts/plr-intake/values.yaml index 622923b4e..91b2bf6f7 100644 --- a/charts/plr-intake/values.yaml +++ b/charts/plr-intake/values.yaml @@ -6,9 +6,9 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: latest - license_plate: "d8a8f9" + license_plate: "f088b1" replicaCount: 1 diff --git a/charts/webapi/values.yaml b/charts/webapi/values.yaml index 62fcdb23e..131ffc594 100644 --- a/charts/webapi/values.yaml +++ b/charts/webapi/values.yaml @@ -6,9 +6,9 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: latest - license_plate: "d8a8f9" + license_plate: "f088b1" replicaCount: 1 aspnetcore: @@ -103,7 +103,7 @@ rabbitmq: fluentbit: - enabled: true + enabled: false imageRegistry: docker.io/fluent/fluent-bit:3.0.3-debug imagePullPolicy: IfNotPresent securityContext: diff --git a/deploy/dev_values.yaml b/deploy/dev_values.yaml index b1841d60d..efd65caf7 100644 --- a/deploy/dev_values.yaml +++ b/deploy/dev_values.yaml @@ -3,9 +3,9 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: develop - license_plate: "d8a8f9" + license_plate: "f088b1" database: autoCreate: false @@ -20,8 +20,6 @@ redis: nginx: replicaCount: 1 - fluentbit: - enabled: false frontend: replicaCount: 1 @@ -34,8 +32,6 @@ webapi: replicaCount: 1 aspnetcore: environment: Staging - fluentbit: - enabled: false plr-intake: replicaCount: 1 diff --git a/deploy/pr_values.yaml b/deploy/pr_values.yaml index a3cdd02ec..1d6a9aef1 100644 --- a/deploy/pr_values.yaml +++ b/deploy/pr_values.yaml @@ -3,7 +3,7 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: dev license_plate: "f088b1" @@ -20,8 +20,7 @@ redis: nginx: replicaCount: 1 - fluentbit: - enabled: false + frontend: replicaCount: 1 @@ -32,8 +31,6 @@ webapi: replicaCount: 1 aspnetcore: environment: Staging - fluentbit: - enabled: false plr-intake: replicaCount: 1 diff --git a/deploy/prod_values.yaml b/deploy/prod_values.yaml index 110696160..fe7726b25 100644 --- a/deploy/prod_values.yaml +++ b/deploy/prod_values.yaml @@ -3,9 +3,11 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: main - license_plate: "d8a8f9" - + license_plate: f088b1 + + database: autoCreate: false # databaseHost: dev-patroni @@ -19,7 +21,9 @@ redis: nginx: replicaCount: 3 - + fluentbit: + enabled: true + frontend: replicaCount: 3 settings: @@ -31,6 +35,8 @@ webapi: replicaCount: 3 aspnetcore: environment: Production + fluentbit: + enabled: true plr-intake: replicaCount: 2 diff --git a/deploy/prod_values_gold.yaml b/deploy/prod_values_gold.yaml deleted file mode 100644 index fe7726b25..000000000 --- a/deploy/prod_values_gold.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# PR Helm values -global: - vanityURL: "healthprovideridentityportal.gov.bc.ca" - commit_sha: "" - image: - registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools - tag: main - license_plate: f088b1 - - -database: - autoCreate: false - # databaseHost: dev-patroni -# existingSecret: dev-patroni-secret - -redis: - enabled: false - auth: - existingSecret: redis - existingSecretPasswordKey: database-password - -nginx: - replicaCount: 3 - fluentbit: - enabled: true - -frontend: - replicaCount: 3 - settings: - environmentName: prod - keycloak: - url: https://common-logon.hlth.gov.bc.ca/auth - -webapi: - replicaCount: 3 - aspnetcore: - environment: Production - fluentbit: - enabled: true - -plr-intake: - replicaCount: 2 - -rabbitmq: - autoCreate: true - host: rabbitmq://pidp:password@rabbitmq:5672/ \ No newline at end of file diff --git a/deploy/test_values.yaml b/deploy/test_values.yaml index a33cafc65..729cff3c6 100644 --- a/deploy/test_values.yaml +++ b/deploy/test_values.yaml @@ -3,9 +3,9 @@ global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools tag: test - license_plate: "d8a8f9" + license_plate: "f088b1" database: autoCreate: false @@ -20,8 +20,6 @@ redis: nginx: replicaCount: 2 - fluentbit: - enabled: false frontend: replicaCount: 3 @@ -34,8 +32,6 @@ webapi: replicaCount: 3 aspnetcore: environment: Staging - fluentbit: - enabled: false plr-intake: replicaCount: 2 diff --git a/infra/endorsement_reminder/values.yaml b/infra/endorsement_reminder/values.yaml index e3aba441b..09296b674 100644 --- a/infra/endorsement_reminder/values.yaml +++ b/infra/endorsement_reminder/values.yaml @@ -3,8 +3,9 @@ cron: 0 8 * * * global: vanityURL: "healthprovideridentityportal.gov.bc.ca" commit_sha: "" + license_plate: "f088b1" image: - registry: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + registry: image-registry.openshift-image-registry.svc:5000/f088b1-tools repository: endorsement-reminder # Overrides the image tag whose default is the chart appVersion. tag: develop diff --git a/infra/fluentbit/fluentbit-configmap.yaml b/infra/fluentbit/fluentbit-configmap.yaml index 004f5646a..ebf7c608f 100644 --- a/infra/fluentbit/fluentbit-configmap.yaml +++ b/infra/fluentbit/fluentbit-configmap.yaml @@ -179,12 +179,12 @@ parameters: description: Namespace displayName: Namespace required: true - value: d8a8f9-dev + value: f088b1-prod - name: OC_ENV description: OpenShift Environment displayName: OpenShift Environment required: true - value: dev + value: prod - name: SLACK_ERROR_NOTIFICATION_WEBHOOK description: Slack error notification Webhook URL displayName: Slack Webhook URL diff --git a/infra/metabase/README.md b/infra/metabase/README.md index e36ff4c42..d6e2721ba 100644 --- a/infra/metabase/README.md +++ b/infra/metabase/README.md @@ -8,17 +8,17 @@ `oc login ` ### 3. Switch to the desired project -`oc project d8a8f9-tools` +`oc project f088b1-tools` ### 4. Tag the downloaded image -`docker tag metabase/metabase:latest image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/metabase:` +`docker tag metabase/metabase:latest image-registry.apps.silver.devops.gov.bc.ca/f088b1-tools/metabase:` ### 5. Login to docker and Push the image to the metabase imagestream in tools namespace -`docker login -u 'oc whoami' -p image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools` +`docker login -u 'oc whoami' -p image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools` -`docker push image-registry.apps.silver.devops.gov.bc.ca/d8a8f9-tools/metabase:` +`docker push image-registry.apps.gold.devops.gov.bc.ca/f088b1-tools/metabase:` ### 6. Point the latest image in metabase imagestream to the newly downlowded image diff --git a/infra/metabase/metabase-template.yml b/infra/metabase/metabase-template.yml index 8c9524609..971efc76f 100644 --- a/infra/metabase/metabase-template.yml +++ b/infra/metabase/metabase-template.yml @@ -51,7 +51,7 @@ parameters: displayName: Metabase Namespace description: The OpenShift Namespace where the Metabase ImageStream resides. required: true - value: d8a8f9-tools + value: f088b1-tools - name: METABASE_CPU_REQUEST description: Minimal CPU needed to run displayName: Metabase CPU Request diff --git a/infra/pipelines/cicd-pipeline.yaml b/infra/pipelines/cicd-pipeline.yaml index e820e0269..c42765a4e 100644 --- a/infra/pipelines/cicd-pipeline.yaml +++ b/infra/pipelines/cicd-pipeline.yaml @@ -2,7 +2,7 @@ apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: cicd-pipeline - namespace: d8a8f9-tools + namespace: f088b1-tools spec: params: - name: git-url @@ -10,13 +10,13 @@ spec: default: develop - name: git-short-sha - name: image-registry - default: image-registry.openshift-image-registry.svc:5000/d8a8f9-tools + default: image-registry.openshift-image-registry.svc:5000/f088b1-tools - name: image-tag default: develop - name: release_name default: dev - name: release_namespace - default: d8a8f9-dev + default: f088b1-dev - name: release_version default: "v0.1.0" - name: values_file diff --git a/infra/pipelines/pipeline-cicd-pipeline-testing.yaml b/infra/pipelines/pipeline-cicd-pipeline-testing.yaml index 84e22bb64..0c4a5006d 100644 --- a/infra/pipelines/pipeline-cicd-pipeline-testing.yaml +++ b/infra/pipelines/pipeline-cicd-pipeline-testing.yaml @@ -2,7 +2,7 @@ kind: Pipeline metadata: name: cicd-pipeline-testing - namespace: d8a8f9-tools + namespace: f088b1-tools spec: params: - default: 'git@github.com:bcgov/moh-pidp.git' @@ -14,7 +14,7 @@ spec: - default: 224169b name: git-short-sha type: string - - default: 'image-registry.openshift-image-registry.svc:5000/d8a8f9-tools' + - default: 'image-registry.openshift-image-registry.svc:5000/f088b1-tools' name: image-registry type: string - default: pr-82 @@ -23,7 +23,7 @@ spec: - default: pr-82 name: release_name type: string - - default: d8a8f9-dev + - default: f088b1-dev name: release_namespace type: string - default: v0.1.0 @@ -144,7 +144,7 @@ spec: - '--build-arg' - SONAR_BUILDSTRING=$(params.git-short-sha) - '--build-arg' - - 'SONAR_HOST=http://sonarqube.d8a8f9-tools.svc.cluster.local:9000' + - 'SONAR_HOST=http://sonarqube.f088b1-tools.svc.cluster.local:9000' runAfter: - zap-scan-webapi taskRef: @@ -198,7 +198,7 @@ spec: - '--build-arg' - SONAR_BUILDSTRING=$(params.git-short-sha) - '--build-arg' - - 'SONAR_HOST=http://sonarqube.d8a8f9-tools.svc.cluster.local:9000' + - 'SONAR_HOST=http://sonarqube.f088b1-tools.svc.cluster.local:9000' runAfter: - zap-plr-intake taskRef: diff --git a/infra/pipelines/pr-cleanup-pipeline.yaml b/infra/pipelines/pr-cleanup-pipeline.yaml index ebe8f4f28..65f9179f4 100644 --- a/infra/pipelines/pr-cleanup-pipeline.yaml +++ b/infra/pipelines/pr-cleanup-pipeline.yaml @@ -2,12 +2,12 @@ apiVersion: tekton.dev/v1beta1 kind: Pipeline metadata: name: pr-cleanup-pipeline - namespace: d8a8f9-tools + namespace: f088b1-tools spec: params: - name: release_name - name: release_namespace - default: d8a8f9-dev + default: f088b1-dev workspaces: - name: source tasks: diff --git a/infra/resources/github-pr-event-listener.yaml b/infra/resources/github-pr-event-listener.yaml index abd048b80..0c52c0c46 100644 --- a/infra/resources/github-pr-event-listener.yaml +++ b/infra/resources/github-pr-event-listener.yaml @@ -2,7 +2,7 @@ apiVersion: triggers.tekton.dev/v1alpha1 kind: EventListener metadata: name: github-pr - namespace: d8a8f9-tools + namespace: f088b1-tools spec: namespaceSelector: {} podTemplate: {} diff --git a/infra/tasks/test-frontend.yaml b/infra/tasks/test-frontend.yaml index 5d119fb0d..98d9a1721 100644 --- a/infra/tasks/test-frontend.yaml +++ b/infra/tasks/test-frontend.yaml @@ -7,7 +7,7 @@ metadata: tekton.dev/platforms: 'linux/amd64,linux/s390x,linux/ppc64le' tekton.dev/tags: build-tool name: test-frontend - namespace: d8a8f9-tools + namespace: f088b1-tools labels: app.kubernetes.io/version: '0.1' spec: @@ -25,7 +25,7 @@ spec: description: The node image you want to use. name: IMAGE type: string - - default: 'http://sonarqube.d8a8f9-tools.svc.cluster.local:9000' + - default: 'http://sonarqube.f088b1-tools.svc.cluster.local:9000' name: SONAR_HOST type: string - default: sonarqube-login @@ -87,7 +87,7 @@ spec: key: $(params.SONAR_LOGIN_KEY_SECRET_KEY) name: $(params.SONAR_LOGIN_KEY_SECRET) image: >- - image-registry.openshift-image-registry.svc:5000/d8a8f9-tools/sonar-scanner-cli:4.7.0 + image-registry.openshift-image-registry.svc:5000/f088b1-tools/sonar-scanner-cli:4.7.0 name: sonar-scan resources: limits: diff --git a/infra/tasks/zap-scan.yaml b/infra/tasks/zap-scan.yaml index 7ba34ca3d..ae03da9df 100644 --- a/infra/tasks/zap-scan.yaml +++ b/infra/tasks/zap-scan.yaml @@ -17,7 +17,7 @@ metadata: operation: Update time: '2022-09-28T06:02:28Z' name: zap-scan - namespace: d8a8f9-tools + namespace: f088b1-tools resourceVersion: '4702162475' uid: ec1e02fa-1db7-4fee-9620-a7f6b68dae9b spec: @@ -28,7 +28,7 @@ spec: name: PATH_CONTEXT type: string - default: >- - image-registry.openshift-image-registry.svc:5000/d8a8f9-tools/zap2docker-stable:2.11.1-bcgov-1 + image-registry.openshift-image-registry.svc:5000/f088b1-tools/zap2docker-stable:2.11.1-bcgov-1 description: The node image you want to use. name: IMAGE type: string diff --git a/infra/triggers/github-pr-trigger-template.yaml b/infra/triggers/github-pr-trigger-template.yaml index ae73a0cae..ae7574baa 100644 --- a/infra/triggers/github-pr-trigger-template.yaml +++ b/infra/triggers/github-pr-trigger-template.yaml @@ -2,7 +2,7 @@ apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: github-pr-trigger-template - namespace: d8a8f9-tools + namespace: f088b1-tools spec: params: - name: git-revision @@ -39,7 +39,7 @@ spec: - name: release_name value: $(tt.params.git-pr-number) - name: release_namespace - value: d8a8f9-dev + value: f088b1-dev - name: values_file value: deploy/pr_values.yaml workspaces: diff --git a/infra/triggers/github-push-trigger-template.yaml b/infra/triggers/github-push-trigger-template.yaml index cf63a5851..d320eef2b 100644 --- a/infra/triggers/github-push-trigger-template.yaml +++ b/infra/triggers/github-push-trigger-template.yaml @@ -2,7 +2,7 @@ apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: github-push-trigger-template - namespace: d8a8f9-tools + namespace: f088b1-tools spec: params: - name: git-revision diff --git a/infra/triggers/pr-cleanup-trigger-template.yaml b/infra/triggers/pr-cleanup-trigger-template.yaml index f8ad23d12..4f235cd61 100644 --- a/infra/triggers/pr-cleanup-trigger-template.yaml +++ b/infra/triggers/pr-cleanup-trigger-template.yaml @@ -2,7 +2,7 @@ apiVersion: triggers.tekton.dev/v1alpha1 kind: TriggerTemplate metadata: name: pr-cleanup-trigger-template - namespace: d8a8f9-tools + namespace: f088b1-tools spec: params: - name: git-pr-number @@ -20,7 +20,7 @@ spec: - name: release_name value: $(tt.params.git-pr-number) - name: release_namespace - value: d8a8f9-dev + value: f088b1-dev workspaces: - name: source emptyDir: {} diff --git a/scripts/pod_cleanup.sh b/scripts/pod_cleanup.sh index f7c36005b..665ba5a60 100755 --- a/scripts/pod_cleanup.sh +++ b/scripts/pod_cleanup.sh @@ -6,5 +6,5 @@ echo ${pvc_arr[1]} for i in "${pvc_arr[@]}" do - kubectl delete pod $i --grace-period=0 --force --namespace d8a8f9-tools + kubectl delete pod $i --grace-period=0 --force --namespace f088b1-tools done From d2b92c6cd26e4cc9725a6dccb88ccb0d824fce65 Mon Sep 17 00:00:00 2001 From: Panos Hatzinikolaou <45132887+Paahn@users.noreply.github.com> Date: Tue, 10 Dec 2024 11:47:06 -0800 Subject: [PATCH 5/8] Add feature flag back to PRP (#643) --- .../pidp/src/app/features/portal/state/portal-state.builder.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/workspace/apps/pidp/src/app/features/portal/state/portal-state.builder.ts b/workspace/apps/pidp/src/app/features/portal/state/portal-state.builder.ts index 422c24cb3..5902b36eb 100644 --- a/workspace/apps/pidp/src/app/features/portal/state/portal-state.builder.ts +++ b/workspace/apps/pidp/src/app/features/portal/state/portal-state.builder.ts @@ -124,7 +124,8 @@ export class AccessStateBuilder { ], ), ...ArrayUtils.insertResultIf( - this.insertSection('providerReportingPortal', profileStatus), + this.insertSection('providerReportingPortal', profileStatus) && + this.permissionsService.hasRole([Role.FEATURE_PIDP_DEMO]), () => [new ProviderReportingPortalSection(profileStatus, this.router)], ), ...ArrayUtils.insertResultIf( From c46334e78d3e13dd1af174cc7ef2f7094216ec05 Mon Sep 17 00:00:00 2001 From: "Roya.Shourouni@gov.bc.ca" Date: Tue, 10 Dec 2024 13:53:08 -0800 Subject: [PATCH 6/8] update test-deploy-endorsement-reminder (#644) --- .github/workflows/demo-deploy_helm_chart.yaml | 6 +++--- .github/workflows/test-deploy-db-migration.yaml | 4 ++-- .github/workflows/test-deploy-endorsement-reminder.yaml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/demo-deploy_helm_chart.yaml b/.github/workflows/demo-deploy_helm_chart.yaml index 72a7d2a4c..e1514eee2 100644 --- a/.github/workflows/demo-deploy_helm_chart.yaml +++ b/.github/workflows/demo-deploy_helm_chart.yaml @@ -15,7 +15,7 @@ concurrency: jobs: - helm-deployment: + helm-deployment-gold: runs-on: 'ubuntu-latest' steps: - uses: actions/checkout@v1 @@ -23,8 +23,8 @@ jobs: - name: Authenticate and set context uses: redhat-actions/oc-login@v1.1 with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} + openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} + openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - name: Helm Deploy / install command run: | diff --git a/.github/workflows/test-deploy-db-migration.yaml b/.github/workflows/test-deploy-db-migration.yaml index 500958caf..277656c34 100644 --- a/.github/workflows/test-deploy-db-migration.yaml +++ b/.github/workflows/test-deploy-db-migration.yaml @@ -20,8 +20,8 @@ jobs: - name: Authenticate and set context uses: redhat-actions/oc-login@v1.1 with: - openshift_server_url: ${{secrets.OPENSHIFT_CLUSTER_URL}} - openshift_token: ${{secrets.OPENSHIFT_PIPELINE_SERVICE_ACCOUNT_TOKEN}} + openshift_server_url: ${{secrets.GOLD_OPENSHIFT_CLUSTER_URL}} + openshift_token: ${{secrets.GOLD_PIPELINE_SERVICE_ACCOUNT_TOKEN}} - name: deply db migration job into f088b1-test run: | diff --git a/.github/workflows/test-deploy-endorsement-reminder.yaml b/.github/workflows/test-deploy-endorsement-reminder.yaml index 371b8d4ee..887883c6b 100644 --- a/.github/workflows/test-deploy-endorsement-reminder.yaml +++ b/.github/workflows/test-deploy-endorsement-reminder.yaml @@ -30,4 +30,4 @@ jobs: helm list --namespace f088b1-test echo installing helm chart... - helm upgrade --wait --namespace f088b1-test --values infra/endorsement_reminder/values.yaml endorsement-reminder infra/endorsement_reminder + helm upgrade --wait --namespace f088b1-test --values infra/endorsement_reminder/values.yaml --set global.image.tag=test --set env=test endorsement-reminder infra/endorsement_reminder From 5537f20d9f4dc4a5f91cb65572a92a7975782e75 Mon Sep 17 00:00:00 2001 From: "Roya.Shourouni@gov.bc.ca" Date: Wed, 11 Dec 2024 12:23:38 -0800 Subject: [PATCH 7/8] add helm upgrade to golddr cluster (#645) --- .github/workflows/main-deploy_helm_chart.yaml | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/main-deploy_helm_chart.yaml b/.github/workflows/main-deploy_helm_chart.yaml index 87ef62f74..4a3a7edd5 100644 --- a/.github/workflows/main-deploy_helm_chart.yaml +++ b/.github/workflows/main-deploy_helm_chart.yaml @@ -32,3 +32,23 @@ jobs: echo installing helm chart... helm upgrade --wait --values ./deploy/prod_values.yaml --namespace f088b1-prod prod charts/pidp --debug + + helm-deployment-golddr: + runs-on: 'ubuntu-latest' + steps: + - uses: actions/checkout@v1 + + - name: Authenticate and set context + uses: redhat-actions/oc-login@v1.1 + with: + openshift_server_url: ${{secrets.GOLDDR_OPENSHIFT_CLUSTER_URL}} + openshift_token: ${{secrets.GOLDDR_PIPELINE_SERVICE_ACCOUNT_TOKEN}} + + - name: Helm Deploy / install command + run: | + echo current installed helm releases + helm list --namespace f088b1-prod + + echo installing helm chart... + helm upgrade --wait --values ./deploy/prod_values.yaml --namespace f088b1-prod prod charts/pidp --debug + From 287f4832700806be825c31c1058288a8e455d58c Mon Sep 17 00:00:00 2001 From: Panos Hatzinikolaou <45132887+Paahn@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:33:14 -0800 Subject: [PATCH 8/8] PIDP-1093 Add isPharm Keycloak Attribute (#630) * set attribute * make tests pass * alphabetize * reformat --------- Co-authored-by: James Hollinger <39168456+james-hollinger@users.noreply.github.com> Co-authored-by: James Hollinger --- .../UpdateKeycloakAfterCollegeLicenceUpdated.cs | 14 +++++++++----- .../CommonHandlers/CollegeLicenceUpdatedHandler.cs | 8 +++++++- .../HttpClients/Keycloak/KeycloakApiDefinitions.cs | 2 ++ 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/backend/webapi.tests/Features/CommonEventHandlers/UpdateKeycloakAfterCollegeLicenceUpdated.cs b/backend/webapi.tests/Features/CommonEventHandlers/UpdateKeycloakAfterCollegeLicenceUpdated.cs index 67733fe8e..45cc3584a 100644 --- a/backend/webapi.tests/Features/CommonEventHandlers/UpdateKeycloakAfterCollegeLicenceUpdated.cs +++ b/backend/webapi.tests/Features/CommonEventHandlers/UpdateKeycloakAfterCollegeLicenceUpdated.cs @@ -44,13 +44,17 @@ public async void UpdateKeycloakAfterCollegeLicenceUpdated_OneLicence_BusPushedW var message = capturedMessages.Single(); Assert.Equal(party.PrimaryUserId, message.UserId); - Assert.Single(message.Attributes); + Assert.Equal(2, message.Attributes.Count); - var attribute = message.Attributes.Single(); - Assert.Equal("college_licence_info", attribute.Key); - Assert.Single(attribute.Value); + var attribute1 = message.Attributes.Single(a => a.Key == "college_licence_info"); + Assert.Equal("college_licence_info", attribute1.Key); + Assert.Single(attribute1.Value); - var busRecords = JsonSerializer.Deserialize>(attribute.Value[0], new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase })!; + var attribute2 = message.Attributes.Single(a => a.Key == "is_pharm"); + Assert.Equal("is_pharm", attribute2.Key); + Assert.Single(attribute2.Value); + + var busRecords = JsonSerializer.Deserialize>(attribute1.Value[0], new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase })!; AssertThat.CollectionsAreEquivalent(expectedRecords, busRecords, (expected, bus) => expected.CollegeId == bus.CollegeId diff --git a/backend/webapi/Features/CommonHandlers/CollegeLicenceUpdatedHandler.cs b/backend/webapi/Features/CommonHandlers/CollegeLicenceUpdatedHandler.cs index e88130dea..b95236ded 100644 --- a/backend/webapi/Features/CommonHandlers/CollegeLicenceUpdatedHandler.cs +++ b/backend/webapi/Features/CommonHandlers/CollegeLicenceUpdatedHandler.cs @@ -41,9 +41,15 @@ public async Task Handle(CollegeLicenceUpdated notification, CancellationToken c return; } + var isPharmacist = PlrStandingsDigest.FromRecords(records) + .With(IdentifierType.Pharmacist) + .HasGoodStanding; + foreach (var userId in party.Credentials.Select(credential => credential.UserId)) { - await this.bus.Publish(UpdateKeycloakAttributes.FromUpdateAction(userId, user => user.SetCollegeLicenceInformation(records)), cancellationToken); + await this.bus.Publish(UpdateKeycloakAttributes.FromUpdateAction(userId, user => user + .SetCollegeLicenceInformation(records) + .SetIsPharm(isPharmacist)), cancellationToken); } } } diff --git a/backend/webapi/Infrastructure/HttpClients/Keycloak/KeycloakApiDefinitions.cs b/backend/webapi/Infrastructure/HttpClients/Keycloak/KeycloakApiDefinitions.cs index 32597840e..49da0d1f2 100644 --- a/backend/webapi/Infrastructure/HttpClients/Keycloak/KeycloakApiDefinitions.cs +++ b/backend/webapi/Infrastructure/HttpClients/Keycloak/KeycloakApiDefinitions.cs @@ -99,6 +99,8 @@ public UserRepresentation SetCollegeLicenceInformation(IEnumerable pl public UserRepresentation SetCpn(string cpn) => this.SetAttribute("common_provider_number", cpn); + public UserRepresentation SetIsPharm(bool isPharm) => this.SetAttribute("is_pharm", isPharm.ToString()); + internal UserRepresentation SetLdapOrgDetails(LdapLoginResponse.OrgDetails orgDetails) => this.SetAttribute("org_details", JsonSerializer.Serialize(orgDetails, SerializationOptions)); public UserRepresentation SetOpId(string opId) => this.SetAttribute("opId", opId);