Merge pull request #1846 from ogayot/snapcraft-doc

Update instructions to test local changes in kvm
This commit is contained in:
Olivier Gayot 2023-10-24 10:06:00 +02:00 committed by GitHub
commit 288691f71a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 6 deletions

View File

@ -521,7 +521,7 @@ Tests (and lint checks) are run by github actions using lxd. See
`.github/workflows/build.yaml` and `./scripts/test-in-lxd.sh` and so `.github/workflows/build.yaml` and `./scripts/test-in-lxd.sh` and so
on. on.
For "real" testing, you need to make a snap (`snapcraft snap`), mash For "real" testing, you need to make a snap (`snapcraft pack`), mash
it into an existing ISO using `./scripts/inject-subiquity-snap.sh`, it into an existing ISO using `./scripts/inject-subiquity-snap.sh`,
and boot the result in a VM. There is an even hackier pair of scripts and boot the result in a VM. There is an even hackier pair of scripts
(`./scripts/slimy-update-snap.sh` and (`./scripts/slimy-update-snap.sh` and

View File

@ -59,10 +59,41 @@ an ISO. Rather than building one from scratch, it's much easier to
install your version of subiquity into the daily image. Here's how to install your version of subiquity into the daily image. Here's how to
do this: do this:
1. Build your change into a snap: ## Commit your changes locally
If you are only making a change in Subiquity itself, running `git add <modified-file...>`
and then `git commit` should be enough.
Otherwise, if you made any modification to curtin or probert, you need to ensure that:
* The modification is committed inside the relevant repository (i.e., `git add` + `git commit`).
* The relevant `source` property in snapcraft.yaml points to the local
repository instead of the upstream repository.
* The relevant `source-commit` property in snapcraft.yaml is updated to reflect
your new revision (one must use the full SHA-1 here).
* The above modifications to snapcraft.yaml are committed.
Example:
```
parts:
curtin:
plugin: nil
# Comment out the original source property, pointing to the upstream repository
#source: https://git.launchpad.net/curtin
# Instead, specify the name of the directory where curtin is checked out
source: curtin
source-type: git
# Update the below so it points to the commit ID within the curtin repository
source-commit: 7c18bf6a24297ed465a341a1f53875b61c878d6b
```
## Build and inject your changes into an ISO
1. Build your changes into a snap:
``` ```
$ snapcraft snap --output subiquity_test.snap $ snapcraft pack --output subiquity_test.snap
``` ```
2. Grab the current version of the installer: 2. Grab the current version of the installer:

View File

@ -306,14 +306,14 @@ def build(ctx):
with snap_manager('subiquity_test.snap') as snap: with snap_manager('subiquity_test.snap') as snap:
if not ctx.args.reuse: if not ctx.args.reuse:
run('snapcraft clean --use-lxd') run('snapcraft clean --use-lxd')
run(f'snapcraft snap --use-lxd --output {snap} {snapargs}') run(f'snapcraft pack --use-lxd --output {snap} {snapargs}')
assert_exists(snap) assert_exists(snap)
livefs_edit(ctx, '--add-snap-from-store', 'core20', 'stable', livefs_edit(ctx, '--add-snap-from-store', 'core20', 'stable',
'--inject-snap', snap) '--inject-snap', snap)
elif project == 'ubuntu-desktop-installer': elif project == 'ubuntu-desktop-installer':
with snap_manager('udi_test.snap') as snap: with snap_manager('udi_test.snap') as snap:
run('snapcraft clean --use-lxd') run('snapcraft clean --use-lxd')
run(f'snapcraft snap --use-lxd --output {snap} {snapargs}') run(f'snapcraft pack --use-lxd --output {snap} {snapargs}')
assert_exists(snap) assert_exists(snap)
run(f'sudo ./scripts/inject-snap {ctx.baseiso} {ctx.iso} {snap}') run(f'sudo ./scripts/inject-snap {ctx.baseiso} {ctx.iso} {snap}')
else: else:

View File

@ -6,7 +6,7 @@ cd $(dirname $(dirname $(readlink -f $0)))
sudo apt install -y zsync xorriso isolinux sudo apt install -y zsync xorriso isolinux
snapcraft snap --output subiquity_test.snap snapcraft pack --output subiquity_test.snap
urlbase=http://cdimage.ubuntu.com/ubuntu-server/daily-live/current urlbase=http://cdimage.ubuntu.com/ubuntu-server/daily-live/current
distroname=$(distro-info -d) distroname=$(distro-info -d)
isoname="${distroname}"-live-server-$(dpkg --print-architecture).iso isoname="${distroname}"-live-server-$(dpkg --print-architecture).iso