e107_tests/lib/ci/salt/README.md
# e107 Local Test Container Setup
1. Launch a development container:
```
lxc launch -s local images:ubuntu/focal e107-dev
```
2. Push your public SSH key:
```
lxc file push --uid 0 --gid 0 -pv ~/.ssh/id_rsa.pub e107-dev/root/.ssh/authorized_keys
```
3. Install OpenSSH Server:
```
lxc exec e107-dev -- apt install -y openssh-server
```
4. Note the IP of the container:
```
E107_DEV_HOST=$(lxc exec e107-dev -- hostname -I | cut -d' ' -f1)
```
5. Generate the [Salt SSH](https://docs.saltstack.com/en/latest/topics/ssh/) [roster](https://docs.saltstack.com/en/latest/topics/ssh/roster.html):
```
echo "e107-dev: $E107_DEV_HOST" | tee roster
```
6. Configure `e107_tests/config.yml` based on `e107_tests/config.sample.yml` (from the root of this repository).
For all tests:
> Set `db.dbname`, `db.user`, and `db.password` to what you want the container configuration to have.
>
> Set `db.host` to the value of `$E107_DEV_HOST`.
For acceptance tests:
> Set `deployer` to `sftp`.
>
> Set `fs.host` to the value of `$E107_DEV_HOST`.
>
> Set `fs.user` to `www-data`.
>
> Set `fs.password` to any password you want the user to have.
>
> Set `fs.path` to `/var/www/html/e107/`.
>
> Set `url` to the output of `echo "http://$E107_DEV_HOST/e107/"`
7. Apply the container configuration:
```
salt-ssh 'e107-dev' --state-output=changes state.apply e107-dev
```