Run `ioc ...` from cicd runner, remove ansible and cli commands Reviewed-on: #71
2.4 KiB
IOC
The following instructions explain the basics of starting and managing IOCs on the IOC host. They describe the manual steps. In practice the CI/CD runner does this for you, see Automation below.
- TODO: some iocs not associated to a service, where to put?
- TODO: need to dev/prod template them too
Host
sls-vserv-bd-01(-dev)
Shell
Start up an IOC shell:
iocsh AGEBD-CPCL-MASTER_main.subs
or:
ioc shell AGEBD-CPCL-MASTER-DEV
then you can run commands to interact with EPICS.
List available PVs:
> dbl
Exit:
Ctrl + d
Install
For existing IOCs, a login to the IOC and a restart via ctrl+x is sufficient.
On sls-lc*
ioc install -V --ioc AGEBD-CPCL-PLAYGROUND --clean
ioc shell AGEBD-CPCL-PLAYGROUND
ctrl+x
For the initial install, additionally, the shellbox on the ioc host must be restarted.
sudo shellbox reload # new ioc installed
Result: on ioc host, e.g. sls-vserv-bd-01-dev
vim /etc/shellbox/<port-number>
Local Tests
iocsh AGEBD-CPCL-PLAYGROUND_main.subs
using template file:
iocsh PLAYGROUND.template DEVICE=TEST
"Delete"
There is no way to really delete an IOC through the ioc cli.
What you can do: ssh sls-lc* and delete the entry from /ioc/hosts/sls-vserv-bd-01(-dev)/shellbox.conf
Restart an IOC via shellbox
On BD host sls-vserv-bd-01(-dev)
sudo shellbox reload # new ioc installed
sudo shellbox status # status of all iocs on server
sudo shellbox stop 50045 # stop ioc
sudo shellbox start 50045 # start ioc
sudo shellbox log 50045 -f # log file (tail)
exit # exit ssh
Automation
Installing, starting and restarting IOCs is done by the gitea runner, not by hand:
.gitea/scripts/ioc-install.sh <service-name> <dev|prod>.gitea/scripts/ioc-start.sh <service-name> <dev|prod>(shellbox, overssh).gitea/scripts/ioc-restart.sh <service-name> <dev|prod>
The scripts operate on the deployed IOC files in
/sls/bd/hla/<env>/services/<service-name>/current/ioc, so a service has to be deployed
before its IOC can be installed.
They run automatically when a new service is added (.gitea/workflows/add-new-service.yml),
and can be triggered manually for any service (or all services) through the Ioc workflow
(.gitea/workflows/ioc.yml) in the gitea Actions tab.