Commit Graph
10 Commits
Author SHA1 Message Date
Jeffery To e9bb948402 CI: Add local feed for CI-built packages
To test each package, the CI-built target package (ipk) file is
installed, but currently the target package's dependencies are installed
from the standard opkg feeds.

There are cases when the CI-built target packages should be
installed/tested together:

* If a pull request contains several new packages that depend on each
  other, the test step will fail as the new dependencies cannot be found
  in the current packages feed.

* If a pull request upgrades a source package that builds several target
  packages that depend on each other, the test step may fail due to the
  version/ABI mismatch between a newer target package and the older
  dependencies installed from the packages feed.

This sets up a local feed for the CI-built packages so that dependencies
are also installed from the same set of packages.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2023-04-19 13:43:24 +08:00
Jeffery To f0d5e470e1 CI: Add --autoremove, ignore removal errors
836b4e1c73 added
--force-removal-of-dependent-packages but it does not do what the commit
message says it does.

When package A depends on package B (package B is a dependency of
package A; package A is a dependent of package B), trying to remove
package B while package A is installed will result in an error. Adding
--force-removal-of-dependent-packages in this case will cause the
removal of package B and package A (package B's dependent).

But in the case of the CI testing step, it is package A that is being
installed and removed. Removing package A with
--force-removal-of-dependent-packages will not cause package B (package
A's dependency) to be removed.

This adds --autoremove to actually remove the package's dependencies.

This also ignores any errors returned by opkg remove as --autoremove can
sometimes falsely return an error[1].

[1]: https://github.com/openwrt/openwrt/issues/12241

Fixes: 836b4e1c73 ("github-ci: add --force-removal-of-dependent-packages")
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
2023-03-22 11:48:22 +08:00
Alois Klink 18d3c529fa github-ci: error on any shell errors
Enable `errexit` and `nounset` [POSIX shell options][1]
in `.github/workflows/entrypoint.sh` so that the script fails
if any command within the script fails.

[1]: https://pubs.opengroup.org/onlinepubs/9699919799//utilities/V3_chap02.html#set

Reported-by: Marius Dinu <m95d+git@psihoexpert.ro>
Fixes: https://github.com/openwrt/packages/issues/19953
Signed-off-by: Alois Klink <alois@aloisklink.com>
2022-12-08 10:55:52 +01:00
Michael Heimpold 05a3011b00 github-ci: fix small typo
Signed-off-by: Michael Heimpold <mhei@heimpold.de>
2021-09-28 07:42:38 +02:00
Josef Schlehofer afca2f2a71 CI: fix grammar typo when test is succesful
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
2020-10-16 08:15:53 -10:00
Michal Hrusecky 7951e29297 CI: Export few helpful variables for CI tests
Export PKG_NAME and PKG_VERSION to make test scripts better readable
and also export a path to the helper script providing colorful output.

Signed-off-by: Michal Hrusecky <michal.hrusecky@turris.com>
2020-10-10 11:16:13 -10:00
Paul Spooren 014e02ab07 CI: use PKG_SOURCE instead of PKG_NAME
The PKG_NAME is the installable name of a package while PKG_SOURCE is
the folder containig both `Makefile` and possibliy `test.sh`

This approach previously worked for packages where both NAME and SOURCE
are the same, e.g. `vim`, however fore more complex packages like
`mariadb` (SOURCE) the NAMES are partly
*mariadb-server-plugin-handlersocket*, which is no existing folder.

With this commit the `PKG_SOURCE` is used to find the `test.sh` script.

Signed-off-by: Paul Spooren <mail@aparcar.org>
2020-10-01 23:39:04 -10:00
Rosen Penev 836b4e1c73 github-ci: add --force-removal-of-dependent-packages
Without this option, a package gets installed with its dependencies
but those do not get removed, causing issues later on with other
packages.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-09-19 00:16:45 -07:00
Paul Spooren 4f4207be0c CI: pass only VERSION to test.sh
Currently the passed VERSION includes the release, which is usually not
part of the compiled binary. Removing it simplifies the `grep` command
to check for correct package output during runtime tests.

Signed-off-by: Paul Spooren <mail@aparcar.org>
2020-09-17 22:19:49 -10:00
Paul Spooren da111fd095 CI: add runtime tests for packages
Additional to manual runtime tests this CI addition runs a custom test
script per package. Ideally this lowers the errors of package bumps,
something which is time consuming when done manually for multiple
architectures.

This CI uses the official OpenWrt containers and tries to install and
run compiled packages. The run depends on the content of `test.sh`,
which is an `ash` script. It's called with the *packge name* and
*package version* as arguments. This allows different behaviour if
a single package generates multiple IPK files. The version is usable for
the most trivial runtime check, e.g. `tmux -V | grep "$2"`.

The current approach uses the qus project[1] which contains multiple
QEMU binaries to run various architectures.

[1]: https://github.com/dbhi/qus

Signed-off-by: Paul Spooren <mail@aparcar.org>
2020-09-16 10:40:16 -10:00