Skip to content

[WIP] - Create an Execution Environment Builder#558

Draft
cigamit wants to merge 1 commit into
mainfrom
eebuilder-new
Draft

[WIP] - Create an Execution Environment Builder#558
cigamit wants to merge 1 commit into
mainfrom
eebuilder-new

Conversation

@cigamit

@cigamit cigamit commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

This adds a new Tools section. The first tool we are adding is an Execution Environment builder (with many more tools to come).
The EE Builder allows you to select a definition file from a project, where to push the EE, and the credential. It creates a new type of Job which will then use the control plane to build the EE.

Things to finish

  • Fix permissions for EE Admins
  • Combine migrations
  • Update example config
  • Add tests
  • Possibly allow running job on instances other than control plane

@cigamit cigamit self-assigned this Jul 2, 2026
Copilot AI review requested due to automatic review settings July 2, 2026 06:21

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces an Execution Environment Builder feature to Ascender/AWX, adding a new “Tools” UI section plus the backend API/models/task plumbing to create and run “builder build” unified jobs that build/push execution environments via the control plane.

Changes:

  • Add new backend resources for execution environment builders and their build jobs (models, serializers, views, URLs, RBAC, migrations, events).
  • Add a new ansible-runner task path (and playbook) to build EEs, including a new setting for builder container runtime options.
  • Add UI screens/routes/tests for listing/creating/editing builders and viewing build job details/output.

Reviewed changes

Copilot reviewed 65 out of 65 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
awx/ui/src/util/jobs.js Map new build job model
awx/ui/src/screens/Setting/shared/data.jobSettings.json Add builder container options setting
awx/ui/src/screens/Setting/shared/data.allSettings.json Add builder container options setting
awx/ui/src/screens/Setting/shared/data.allSettingOptions.json Add setting metadata/options
awx/ui/src/screens/Setting/Jobs/JobsEdit/JobsEdit.js Expose new setting in Jobs UI
awx/ui/src/screens/Setting/Jobs/JobsEdit/data.defaultJobSettings.json Default for new setting
awx/ui/src/screens/Job/Job.js Route build jobs to custom detail
awx/ui/src/screens/Job/ExecutionEnvironmentBuilderBuildDetail/index.js Export build detail screen
awx/ui/src/screens/Job/ExecutionEnvironmentBuilderBuildDetail/ExecutionEnvironmentBuilderBuildDetail.test.js Tests for build detail screen
awx/ui/src/screens/Job/ExecutionEnvironmentBuilderBuildDetail/ExecutionEnvironmentBuilderBuildDetail.js Build job detail UI/actions
awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentFileSelect.test.js Tests for EE file select
awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentFileSelect.js EE definition file selector
awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentBuilderForm.test.js Tests for builder form
awx/ui/src/screens/ExecutionEnvironmentBuilder/shared/ExecutionEnvironmentBuilderForm.js Builder create/edit form
awx/ui/src/screens/ExecutionEnvironmentBuilder/index.js Export builders screen
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilders.test.js Route resolution tests
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilders.js Builders route container + breadcrumbs
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/index.js Export builders list
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderListItem.test.js List row tests
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderListItem.js Builders list row actions
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderList.test.js List view tests
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderList/ExecutionEnvironmentBuilderList.js Builders list view
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderEdit/index.js Export builder edit
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderEdit/ExecutionEnvironmentBuilderEdit.test.js Edit container tests
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderEdit/ExecutionEnvironmentBuilderEdit.js Edit container + submit logic
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderDetail/index.js Export builder detail
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderDetail/ExecutionEnvironmentBuilderDetails.test.js Detail view tests
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderDetail/ExecutionEnvironmentBuilderDetails.js Builder detail UI/actions
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderAdd/index.js Export builder add
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderAdd/ExecutionEnvironmentBuilderAdd.test.js Add container tests
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilderAdd/ExecutionEnvironmentBuilderAdd.js Add container + submit logic
awx/ui/src/screens/ExecutionEnvironmentBuilder/ExecutionEnvironmentBuilder.js Builder detail routing/fetch
awx/ui/src/routeConfig.js Add “Tools” nav group + route
awx/ui/src/constants.js Add build job URL segment
awx/ui/src/components/LaunchButton/LaunchButton.js Support relaunch for build jobs
awx/ui/src/components/JobList/JobListItem.js Display label for build jobs
awx/ui/src/api/models/Projects.js Add project EE-file listing call
awx/ui/src/api/models/ExecutionEnvironmentBuilders.js New builders API model
awx/ui/src/api/models/ExecutionEnvironmentBuilderBuilds.js New builds API model
awx/ui/src/api/index.js Export new API clients
awx/playbooks/build_ee.yml EE build playbook for runner
awx/main/utils/common.py Capacity type for build jobs
awx/main/tests/functional/api/test_execution_environment_builder.py Functional API coverage
awx/main/tasks/jobs.py Runner task for builder builds
awx/main/tasks/callback.py Runner callback class stub
awx/main/scheduler/task_manager.py Scheduler dependency handling
awx/main/scheduler/dependency_graph.py Blocking graph integration
awx/main/models/unified_jobs.py Event parent key mapping
awx/main/models/projects.py List EE definition files in project
awx/main/models/execution_environment_builders.py New builder model
awx/main/models/execution_environment_builder_builds.py New unified job subclass
awx/main/models/events.py New build event model
awx/main/models/activity_stream.py Track builder in activity stream
awx/main/models/init.py Register new models/events
awx/main/migrations/0201_executionenvironmentbuilder_and_more.py DB schema for new feature
awx/main/dispatch/worker/callback.py Emit event detail support
awx/main/conf.py Register new settings key
awx/main/access.py RBAC access classes
awx/api/views/root.py Add endpoints to API root
awx/api/views/init.py Implement builder/build endpoints
awx/api/urls/urls.py Wire new API URL includes
awx/api/urls/project.py Add project EE-files endpoint
awx/api/urls/execution_environment_builder.py Builder URLs
awx/api/urls/execution_environment_builder_build.py Build URLs (stdout/events/etc)
awx/api/serializers.py Serializers for new resources

Comment thread awx/api/views/__init__.py
Comment on lines +970 to +971
new_build.signal_start()
return Response({'id': new_build.id})
Comment on lines +58 to +66
useEffect(() => {
if (error) {
if (error.response?.status === 403) {
setIsDisabled(true);
} else {
onError(error);
}
}
}, [error, onError]);
Comment thread awx/main/access.py
Comment on lines +1419 to +1422
I can see an execution environment builder when:
- I'm a superuser
- I'm a member of the same organization
- it has no organization (global)
- eed.version == 3
fail_msg: "The execution environment definition must define 'version: 3' at the top level."

- name: Ensure container config directories exists
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants