Skip to content

Implement an approach to working in support modules in epics-containers #8

@gilesknap

Description

@gilesknap

In future we need to support a clean workflow for modifying support modules withing the context of a generic IOC that depends upon them.

We have a proposal for:

ibek dev support SUPPORT-MODULE-FOLDER

this would mv the support module into a folder that is a peer to the ioc-xxxx repo folder and symlink the /epics/support/SUPPORT-MODULE to that - plus make it writable. This means that your support module changes are in the host filesystem and will not be lost on container rebuild.

This issue proposes that we as well as making the symlink, also update the devcontainer.json file to mount this folder into epics/support/SUPPORT-MODULE. This means that:

  • rebuilding the container will not loose the connection to the host
  • committing the ioc-xxx repo while working on a support module will cause CI to fail and you won't get confusing results where CI and local are using different support module versions.

Actions:-

  • change ibek clone to set all source code to read only so that users do not mistakenly change support modules inside the container
  • implement ibek dev support to:-
    • move the support module to a host folder
    • symlink /epics/support/SUPPORT-MODULE to the host folder
    • update devcontainer to mount the host holder over /epics/support/SUPPORT-MODULE so that a container rebuild replaces the symlink with a host mount.
  • consider implementing an ibek function to undo the ibek dev support change
  • this would require you have released the support module changes
  • would update the Dockerfile with the new version of the support module.
  • remove the mount from devcontainer.json
  • clone the new support module version into the container so that you can verify the released version will work

This is from a conversation with @coretl today.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions