From 7b003179bba178fd28baf855ab1830743176d0cf Mon Sep 17 00:00:00 2001 From: Tom Winter Date: Thu, 11 Jul 2024 17:17:37 +0200 Subject: [PATCH] feat: support new deployer args (#7) --- .github/workflows/pr-update.yml | 2 ++ .../form-actions/aam-deploy.php | 22 ++++++++++++++++++- src/app.controller.spec.ts | 12 +++++----- src/app.controller.ts | 16 +++++++++----- src/deployment-info.dto.ts | 11 ++++++++++ 5 files changed, 51 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pr-update.yml b/.github/workflows/pr-update.yml index 911034f..cc9e47d 100644 --- a/.github/workflows/pr-update.yml +++ b/.github/workflows/pr-update.yml @@ -20,6 +20,8 @@ jobs: context: ./ file: ./build/Dockerfile builder: ${{ steps.buildx.outputs.name }} + push: true + tags: aamdigital/deployer-ms:pr-${{ github.event.number }} cache-from: type=gha cache-to: type=gha,mode=max build-args: | diff --git a/integrations/elementor-plugin/form-actions/aam-deploy.php b/integrations/elementor-plugin/form-actions/aam-deploy.php index 161413c..616f3bd 100644 --- a/integrations/elementor-plugin/form-actions/aam-deploy.php +++ b/integrations/elementor-plugin/form-actions/aam-deploy.php @@ -41,7 +41,7 @@ public function get_label() { /** * Run action. * - * Submit the data to + * Submit the data to * * @since 1.0.0 * @access public @@ -72,7 +72,9 @@ public function run( $record, $ajax_handler ) { 'username' => $fields['username'], 'email' => $fields['email'], 'monitor' => $settings['monitor'] ? True : False, + 'sentry' => $settings['sentry'] ? True : False, 'backend' => $settings['backend'] ? True : False, + 'queryBackend' => $settings['queryBackend'] ? True : False, 'client' => $settings['client'], 'clientKey' => $settings['client-key'], 'base' => $settings['base'], @@ -177,6 +179,15 @@ public function register_settings_section( $widget ) { ] ); + $widget->add_control( + 'queryBackend', + [ + 'label' => esc_html__( 'Add am-backend-services (query-backend)', 'elementor-forms-aam-deploy' ), + 'type' => \Elementor\Controls_Manager::SWITCHER, + 'description' => esc_html__( 'Deploys aam-backend-services (e.g. reports).', 'elementor-forms-aam-deploy' ), + ] + ); + $widget->add_control( 'monitor', [ @@ -186,6 +197,15 @@ public function register_settings_section( $widget ) { ] ); + $widget->add_control( + 'sentry', + [ + 'label' => esc_html__( 'Add sentry monitoring', 'elementor-forms-aam-deploy' ), + 'type' => \Elementor\Controls_Manager::SWITCHER, + 'description' => esc_html__( 'Adds sentry monitoring for the deployment.', 'elementor-forms-aam-deploy' ), + ] + ); + $widget->add_control( 'msg_name_exists', [ diff --git a/src/app.controller.spec.ts b/src/app.controller.spec.ts index 791ee8b..6388c78 100644 --- a/src/app.controller.spec.ts +++ b/src/app.controller.spec.ts @@ -43,7 +43,9 @@ describe('AppController', () => { clientKey: 'test-key', base: 'test-base', backend: true, + queryBackend: true, monitor: false, + sentry: false, }; beforeEach(async () => { @@ -149,7 +151,7 @@ describe('AppController', () => { await expect(testMail('test-1@mail.co.uk')).resolves.toBeTruthy(); }); - it('should throw error if ERROR is written to log', async () => { + xit('should throw error if ERROR is written to log', async () => { const res = firstValueFrom(controller.deployApp(deploymentData)); lines.next('some logs'); lines.next('ERROR my custom error'); @@ -167,14 +169,14 @@ describe('AppController', () => { throw new Error('No error thrown'); }); - it('should write arguments to file', () => { + xit('should write arguments to file', () => { const res = firstValueFrom(controller.deployApp(deploymentData)); lines.next('DONE'); expect(res).resolves.toBeTruthy(); expect(mockWs.write).toHaveBeenCalledWith( - 'test-name de test@mail.com test-username test-base y n', + 'test-name test-base de test@mail.com test-username y y n n\n', ); expect(mockWs.close).toHaveBeenCalled(); // Ensure tail is properly "unwatched" @@ -185,7 +187,7 @@ describe('AppController', () => { const emptyLocale = { ...deploymentData, locale: '' }; controller.deployApp(emptyLocale).subscribe(() => { expect(mockWs.write).toHaveBeenCalledWith( - 'test-name en test@mail.com test-username test-base y n', + 'test-name test-base en test@mail.com test-username y y n n\n', ); done(); }); @@ -198,7 +200,7 @@ describe('AppController', () => { delete noLocale.locale; controller.deployApp(noLocale).subscribe(() => { expect(mockWs.write).toHaveBeenCalledWith( - 'test-name en test@mail.com test-username test-base y n', + 'test-name test-base en test@mail.com test-username y y n n\n', ); done(); }); diff --git a/src/app.controller.ts b/src/app.controller.ts index 3f64ba0..f3fdbcd 100644 --- a/src/app.controller.ts +++ b/src/app.controller.ts @@ -10,7 +10,7 @@ import { DeploymentInfo } from './deployment-info.dto'; import * as fs from 'fs'; import { HttpService } from '@nestjs/axios'; import { ConfigService } from '@nestjs/config'; -import { catchError, mergeMap, Observable, Subject } from 'rxjs'; +import { catchError, mergeMap, Observable, of, Subject } from 'rxjs'; import { Tail } from 'tail'; @Controller() @@ -69,16 +69,20 @@ export class AppController { throw new BadRequestException('No spaces allowed in arguments'); } - const args = `${deploymentInfo.name} ${deploymentInfo.locale || 'en'} ${ - deploymentInfo.email - } ${deploymentInfo.username} ${deploymentInfo.base} ${ + const args = `${deploymentInfo.name} ${deploymentInfo.base} ${ + deploymentInfo.locale || 'en' + } ${deploymentInfo.email} ${deploymentInfo.username} ${ deploymentInfo.backend ? 'y' : 'n' - } ${deploymentInfo.monitor ? 'y' : 'n'}`; + } ${deploymentInfo.queryBackend ? 'y' : 'n'} ${ + deploymentInfo.monitor ? 'y' : 'n' + } ${deploymentInfo.sentry ? 'y' : 'n'}\n`; console.log('args', args); const ws = fs.createWriteStream('dist/assets/arg-pipe'); ws.write(args); ws.close(); - return this.getResult(); + return of(true); + // TODO: checking logs may take too long and run into timeouts for user-facing form. Therefore deactivated for now. + // return this.getResult(); } private getResult() { diff --git a/src/deployment-info.dto.ts b/src/deployment-info.dto.ts index 01d6177..dc0b4cb 100644 --- a/src/deployment-info.dto.ts +++ b/src/deployment-info.dto.ts @@ -28,11 +28,22 @@ export class DeploymentInfo { }) backend: boolean; + @ApiProperty({ + description: + 'Whether the am-backend-services (query-backend) should be set up.', + }) + queryBackend = false; + @ApiProperty({ description: 'Whether the new system should be added to uptime monitoring.', }) monitor: boolean; + @ApiProperty({ + description: 'Whether the new system should be added to sentry monitoring.', + }) + sentry = false; + @ApiProperty({ description: 'Name of the Keycloak confidential client.', })