Skip to content

Rewrite BuildEngine with same stack as Scriptoria (i.e. update to Svelte)#79

Open
FyreByrd wants to merge 144 commits intodevelopfrom
feature/svelte
Open

Rewrite BuildEngine with same stack as Scriptoria (i.e. update to Svelte)#79
FyreByrd wants to merge 144 commits intodevelopfrom
feature/svelte

Conversation

@FyreByrd
Copy link
Copy Markdown
Contributor

Changes:

  • Full refactor into SvelteKit + NodeJS
  • BullMQ for background tasks
  • OTEL
  • Breaking: PostgreSQL Database (will need to migrate data from MariaDB)

New Features:

  • Use Scriptoria as login source
  • Deleted (i.e. Cancelled) builds are now also cancelled in CodeBuild

Still missing:

  • Testing
    • Thought: we could have a CI environment in AWS, which may also be useful for testing Scriptoria
  • Channel Verification

@FyreByrd FyreByrd requested a review from chrisvire March 26, 2026 19:23
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 26, 2026

Important

Review skipped

Too many files!

This PR contains 294 files, which is 144 over the limit of 150.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e24dd1c8-a14f-452a-9976-04347d55a9a5

📥 Commits

Reviewing files that changed from the base of the PR and between f9adfda and 7d2fff3.

⛔ Files ignored due to path filters (6)
  • application/composer.lock is excluded by !**/*.lock
  • application/frontend/web/SILLogoBlue132x184.png is excluded by !**/*.png
  • application/frontend/web/favicon.ico is excluded by !**/*.ico
  • application/tests/_support/_generated/AcceptanceTesterActions.php is excluded by !**/_generated/**
  • application/tests/_support/_generated/FunctionalTesterActions.php is excluded by !**/_generated/**
  • application/tests/_support/_generated/UnitTesterActions.php is excluded by !**/_generated/**
📒 Files selected for processing (294)
  • .dockerignore
  • .github/workflows/deploy.yml
  • .github/workflows/main.yml
  • .github/workflows/pr.yml
  • .github/workflows/setup.yml
  • .gitignore
  • .npmrc
  • .prettierignore
  • .prettierrc
  • .vscode/settings.json
  • Dockerfile
  • Dockerfile.otel
  • Makefile
  • README.md
  • Vagrantfile
  • application/.bowerrc
  • application/.gitignore
  • application/LICENSE.md
  • application/README.md
  • application/backend/assets/AppAsset.php
  • application/backend/config/.gitignore
  • application/backend/config/bootstrap.php
  • application/backend/config/main.php
  • application/backend/config/params.php
  • application/backend/controllers/SiteController.php
  • application/backend/models/.gitkeep
  • application/backend/runtime/.gitignore
  • application/backend/views/layouts/main.php
  • application/backend/views/site/error.php
  • application/backend/views/site/index.php
  • application/backend/views/site/login.php
  • application/backend/web/.gitignore
  • application/backend/web/assets/.gitignore
  • application/backend/web/css/site.css
  • application/backend/web/index-test.php
  • application/backend/web/index.php
  • application/backend/web/robots.txt
  • application/codeception.yml
  • application/common/components/AWSCommon.php
  • application/common/components/Appbuilder_logger.php
  • application/common/components/CodeBuild.php
  • application/common/components/CodeCommit.php
  • application/common/components/EmailUtils.php
  • application/common/components/FileUtils.php
  • application/common/components/IAmWrapper.php
  • application/common/components/JenkinsUtils.php
  • application/common/components/S3.php
  • application/common/components/STS.php
  • application/common/config/.gitignore
  • application/common/config/bootstrap.php
  • application/common/config/main.php
  • application/common/helpers/Utils.php
  • application/common/interfaces/ArtifactsProvider.php
  • application/common/mail/layouts/html.php
  • application/common/mail/layouts/text.php
  • application/common/mail/operations/Test/enduser-testmsg.php
  • application/common/mail/passwordResetToken-html.php
  • application/common/mail/passwordResetToken-text.php
  • application/common/models/Build.php
  • application/common/models/BuildBase.php
  • application/common/models/Client.php
  • application/common/models/ClientBase.php
  • application/common/models/EmailQueue.php
  • application/common/models/EmailQueueBase.php
  • application/common/models/Job.php
  • application/common/models/JobBase.php
  • application/common/models/LoginForm.php
  • application/common/models/OperationQueue.php
  • application/common/models/OperationQueueBase.php
  • application/common/models/OriginalUser.php
  • application/common/models/Project.php
  • application/common/models/ProjectBase.php
  • application/common/models/Release.php
  • application/common/models/ReleaseBase.php
  • application/common/models/User.php
  • application/composer.json
  • application/console/components/ActionCommon.php
  • application/console/components/AwsStartupAction.php
  • application/console/components/CopyErrorToS3Operation.php
  • application/console/components/CopyToS3Operation.php
  • application/console/components/DevelopmentAction.php
  • application/console/components/ManageBuildsAction.php
  • application/console/components/ManageProjectsAction.php
  • application/console/components/ManageReleasesAction.php
  • application/console/components/MaxRetriesExceededException.php
  • application/console/components/OperationInterface.php
  • application/console/components/OperationsQueueAction.php
  • application/console/components/ProjectUpdateOperation.php
  • application/console/components/RemoveExpiredBuildsAction.php
  • application/console/components/S3MaintenanceAction.php
  • application/console/config/.gitignore
  • application/console/config/bootstrap.php
  • application/console/config/main.php
  • application/console/config/params.php
  • application/console/controllers/.gitkeep
  • application/console/controllers/CronController.php
  • application/console/migrations-local/.gitignore
  • application/console/migrations/.gitkeep
  • application/console/migrations/m150903_174303_create_job_table.php
  • application/console/migrations/m150914_144408_create_build_table.php
  • application/console/migrations/m150917_163901_add_artifact_url_base_to_job.php
  • application/console/migrations/m151005_142150_rename_build_columns.php
  • application/console/migrations/m151106_195737_change_job_request_id_type.php
  • application/console/migrations/m151117_175414_add_channel_to_build.php
  • application/console/migrations/m151217_202114_remove_artifact_url_from_job.php
  • application/console/migrations/m160104_194709_create_publish_table.php
  • application/console/migrations/m160108_213227_rename_publish_to_release.php
  • application/console/migrations/m160108_213259_remove_channel_from_build.php
  • application/console/migrations/m160112_160804_add_build_number_to_release_table.php
  • application/console/migrations/m160112_220005_alter_error_to_hold_url.php
  • application/console/migrations/m160119_135843_add_channel_version_number_to_build.php
  • application/console/migrations/m160204_143306_create_email_queue_table.php
  • application/console/migrations/m160303_200821_create_operation_queue_table.php
  • application/console/migrations/m160427_162531_create_client_table.php
  • application/console/migrations/m160427_182255_add_client_to_job.php
  • application/console/migrations/m160615_174530_change_artifact_url_of_build.php
  • application/console/migrations/m160630_200721_add_initial_version_code_to_job.php
  • application/console/migrations/m160707_142745_change_initial_to_existing_version_code.php
  • application/console/migrations/m160708_134340_add_jenkins_url_to_job.php
  • application/console/migrations/m160926_142214_add_promote_from_to_release.php
  • application/console/migrations/m161024_184204_create_project_table.php
  • application/console/migrations/m161102_191552_add_client_id_to_project.php
  • application/console/migrations/m161108_135607_alter_project_error_column.php
  • application/console/migrations/m180613_134204_change_build_number_to_build_guid.php
  • application/console/migrations/m180625_151653_change_build_number_to_build_guid_for_release.php
  • application/console/migrations/m180629_183318_addConsoleTextUrl.php
  • application/console/migrations/m180704_191855_addCodeBuildUrl.php
  • application/console/migrations/m190308_210456_add_target_env_to_build.php
  • application/console/migrations/m190311_200559_add_target_env_to_release.php
  • application/console/migrations/m190424_142509_add_artifacts_to_release.php
  • application/console/migrations/m200128_220041_alter_build_environment.php
  • application/console/migrations/m200616_193900_alter_multiple_apks.php
  • application/console/migrations/m210825_131342_alter_release_environment.php
  • application/console/models/.gitkeep
  • application/console/runtime/.gitignore
  • application/console/views/cron/scripts/scriptureappbuilder/google.groovy
  • application/console/views/cron/scripts/scriptureappbuilder/jobs.groovy
  • application/console/views/cron/scripts/scriptureappbuilder/keystore.groovy
  • application/console/views/cron/scripts/scriptureappbuilder_build.php
  • application/console/views/cron/scripts/scriptureappbuilder_publish.php
  • application/console/views/cron/scripts/utilities/Helper.groovy
  • application/environments/dev/backend/config/main-local.php
  • application/environments/dev/backend/config/params-local.php
  • application/environments/dev/backend/web/index-test.php
  • application/environments/dev/backend/web/index.php
  • application/environments/dev/common/config/main-local.php
  • application/environments/dev/common/config/params-local.php
  • application/environments/dev/console/config/main-local.php
  • application/environments/dev/console/config/params-local.php
  • application/environments/dev/frontend/config/main-local.php
  • application/environments/dev/frontend/config/params-local.php
  • application/environments/dev/frontend/web/index-test.php
  • application/environments/dev/frontend/web/index.php
  • application/environments/dev/yii
  • application/environments/index.php
  • application/environments/prod/backend/config/main-local.php
  • application/environments/prod/backend/config/params-local.php
  • application/environments/prod/backend/web/index.php
  • application/environments/prod/common/config/main-local.php
  • application/environments/prod/common/config/params-local.php
  • application/environments/prod/console/config/main-local.php
  • application/environments/prod/console/config/params-local.php
  • application/environments/prod/frontend/config/main-local.php
  • application/environments/prod/frontend/config/params-local.php
  • application/environments/prod/frontend/web/index.php
  • application/environments/prod/yii
  • application/frontend/assets/AppAsset.php
  • application/frontend/components/JobControllerUtils.php
  • application/frontend/config/.gitignore
  • application/frontend/config/bootstrap.php
  • application/frontend/config/main.php
  • application/frontend/controllers/BuildAdminController.php
  • application/frontend/controllers/ClientAdminController.php
  • application/frontend/controllers/JobAdminController.php
  • application/frontend/controllers/JobController.php
  • application/frontend/controllers/OperationQueueAdminController.php
  • application/frontend/controllers/ProjectAdminController.php
  • application/frontend/controllers/ProjectController.php
  • application/frontend/controllers/ReleaseAdminController.php
  • application/frontend/controllers/SiteController.php
  • application/frontend/controllers/SystemController.php
  • application/frontend/models/ContactForm.php
  • application/frontend/models/PasswordResetRequestForm.php
  • application/frontend/models/ResetPasswordForm.php
  • application/frontend/models/SignupForm.php
  • application/frontend/runtime/.gitignore
  • application/frontend/views/build-admin/_form.php
  • application/frontend/views/build-admin/create.php
  • application/frontend/views/build-admin/index.php
  • application/frontend/views/build-admin/update.php
  • application/frontend/views/build-admin/view.php
  • application/frontend/views/client-admin/_form.php
  • application/frontend/views/client-admin/create.php
  • application/frontend/views/client-admin/index.php
  • application/frontend/views/client-admin/update.php
  • application/frontend/views/client-admin/view.php
  • application/frontend/views/job-admin/_form.php
  • application/frontend/views/job-admin/create.php
  • application/frontend/views/job-admin/index.php
  • application/frontend/views/job-admin/update.php
  • application/frontend/views/job-admin/view.php
  • application/frontend/views/layouts/main.php
  • application/frontend/views/operation-queue-admin/_form.php
  • application/frontend/views/operation-queue-admin/create.php
  • application/frontend/views/operation-queue-admin/index.php
  • application/frontend/views/operation-queue-admin/update.php
  • application/frontend/views/operation-queue-admin/view.php
  • application/frontend/views/project-admin/_form.php
  • application/frontend/views/project-admin/create.php
  • application/frontend/views/project-admin/index.php
  • application/frontend/views/project-admin/update.php
  • application/frontend/views/project-admin/view.php
  • application/frontend/views/release-admin/_form.php
  • application/frontend/views/release-admin/create.php
  • application/frontend/views/release-admin/index.php
  • application/frontend/views/release-admin/update.php
  • application/frontend/views/release-admin/view.php
  • application/frontend/views/site/about.php
  • application/frontend/views/site/contact.php
  • application/frontend/views/site/error.php
  • application/frontend/views/site/index.php
  • application/frontend/views/site/login.php
  • application/frontend/views/site/requestPasswordResetToken.php
  • application/frontend/views/site/resetPassword.php
  • application/frontend/views/site/signup.php
  • application/frontend/web/.gitignore
  • application/frontend/web/.htaccess
  • application/frontend/web/assets/.gitignore
  • application/frontend/web/css/site.css
  • application/frontend/web/index-test.php
  • application/frontend/web/index.php
  • application/frontend/widgets/Alert.php
  • application/init
  • application/init.bat
  • application/quickstart.php
  • application/rebuildbasemodels.sh
  • application/requirements.php
  • application/run-cron.sh
  • application/run-tests.sh
  • application/run.sh
  • application/tests/README.md
  • application/tests/_bootstrap.php
  • application/tests/_data/dump.sql
  • application/tests/_support/AcceptanceHelper.php
  • application/tests/_support/AcceptanceTester.php
  • application/tests/_support/FunctionalHelper.php
  • application/tests/_support/FunctionalTester.php
  • application/tests/_support/UnitHelper.php
  • application/tests/_support/UnitTester.php
  • application/tests/acceptance.suite.yml
  • application/tests/acceptance/AcceptanceTester.php
  • application/tests/acceptance/_bootstrap.php
  • application/tests/codeception.yml
  • application/tests/codeception/_output/.gitignore
  • application/tests/codeception/backend/.gitignore
  • application/tests/codeception/backend/_bootstrap.php
  • application/tests/codeception/backend/_output/.gitignore
  • application/tests/codeception/backend/acceptance.suite.yml
  • application/tests/codeception/backend/acceptance/LoginCept.php
  • application/tests/codeception/backend/acceptance/_bootstrap.php
  • application/tests/codeception/backend/codeception.yml
  • application/tests/codeception/backend/functional.suite.yml
  • application/tests/codeception/backend/functional/LoginCept.php
  • application/tests/codeception/backend/functional/_bootstrap.php
  • application/tests/codeception/backend/unit.suite.yml
  • application/tests/codeception/backend/unit/DbTestCase.php
  • application/tests/codeception/backend/unit/TestCase.php
  • application/tests/codeception/backend/unit/_bootstrap.php
  • application/tests/codeception/backend/unit/fixtures/data/.gitkeep
  • application/tests/codeception/bin/_bootstrap.php
  • application/tests/codeception/bin/yii
  • application/tests/codeception/bin/yii.bat
  • application/tests/codeception/common/.gitignore
  • application/tests/codeception/common/_bootstrap.php
  • application/tests/codeception/common/_output/.gitignore
  • application/tests/codeception/common/_pages/LoginPage.php
  • application/tests/codeception/common/_support/FixtureHelper.php
  • application/tests/codeception/common/codeception.yml
  • application/tests/codeception/common/fixtures/UserFixture.php
  • application/tests/codeception/common/fixtures/data/init_login.php
  • application/tests/codeception/common/templates/fixtures/user.php
  • application/tests/codeception/common/unit.suite.yml
  • application/tests/codeception/common/unit/DbTestCase.php
  • application/tests/codeception/common/unit/TestCase.php
  • application/tests/codeception/common/unit/_bootstrap.php
  • application/tests/codeception/common/unit/fixtures/data/models/user.php
  • application/tests/codeception/common/unit/models/LoginFormTest.php
  • application/tests/codeception/config/acceptance.php
  • application/tests/codeception/config/backend/acceptance.php
  • application/tests/codeception/config/backend/config.php
  • application/tests/codeception/config/backend/functional.php
  • application/tests/codeception/config/backend/unit.php
  • application/tests/codeception/config/common/unit.php
  • application/tests/codeception/config/config.php

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/svelte

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@FyreByrd
Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 26, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

FyreByrd added 18 commits March 26, 2026 14:29
* db migration

* Move app version check to recurring job

* Display version info in about page
* Add utility function to enforce length

* Enforce length in CRUD

* Enforce length in jobs

* Change log function for trim strings

* Add maxlength attribute to text fields

Fix loop condition
* Configure docker images

* Install packages

* Basic instrumentation

* Trace authentication

* Change dataset name in config

* Add OTEL to BullMQ

* Add job lifetime options

* Add telemetry for CodeCommit

* Add telemetry for IAM

* Add telemetry for CodeBuild

* Add telemetry for S3

* Replace other unneeded console logs
I am not entirely certain what other env vars will be needed for this...
* Initial draft of GHA

* Move DB Url back to schema

* Fix circular import in artifacts

* Fix source maps

* Add empty versions of needed env vars

* Relocate empty env vars

* Fix build output

* DRY deploy

* Add OTEL to deploy script

* CR Feedback

* Refactor Docker build

* Remove unneeded if

These jobs should be skipped due to needs property
@FyreByrd
Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 26, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants