Commit graph

14 commits

Author SHA1 Message Date
Andrew Clayton
d7ec30c43a ci: Limit when to run checks on pull-requests
Commit 4fc50258b ("ci: Be more specific when to run the main Unit
checks") limited when the checks for the main ci run, on pushes to
master.

It should have done the same for pull-requests.

Fixes: 4fc50258b ("ci: Be more specific when to run the main Unit checks")
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2024-06-12 21:42:59 +01:00
Andrew Clayton
4fc50258b5 ci: Be more specific when to run the main Unit checks
ci-dev-distro-compiler.yaml already limits itself to running only when
relevant things are updated.

Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2024-05-29 22:42:05 +01:00
Andrew Clayton
30b39bd077 Add GitHub workflows for extra coverage
This adds a workflow for building Unit under Fedora Rawhide and Alpine
Edge with both GCC and Clang.

These are the development branches from which releases are cut.

This usually consists of the latest versions of software and will
hopefully catch new compiler issues and API breakages in the various
languages we support.

With Alpine and Clang that also gives us musl libc + clang coverage.

On Alpine we don't build the wasm and wasm-wasi-component modules,
mainly as this would require messing around with all the rust stuff and
building wasmtime from source (as there's no musl libc based packages)
and the wasm module is pretty small, any new compiler issues would
hopefully show up in the rest.

We _do_ build the wasm module with gcc and clang on Fedora. But not
wasm-wasi-component in the interests of time. Can be added at a later
date if deemed necessary.

We don't build the Perl language module on Fedora with clang due to the
Fedora (and probably Red Hat) Perl CFLAGS having incompatible with clang
flags.

We probably could work around it if we really wanted to, but not sure
it's worth it and on Red Hat/Fedora, GCC _is_ the system compiler.

On Alpine we also don't build the nodejs and go language modules as
there's nothing that actually gets compiled there and the _main_ reason
for building on Alpine is to get musl libc + clang coverage.

We're also not bothering with njs for now... can be revisited at a
later date.

Also no pytests, these should be well covered via other workflows for
example by running on latest Alpine releases.

Closes: https://github.com/nginx/unit/issues/949
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2024-05-15 00:02:38 +01:00
Ava Hahn
a98acdedd7 ci: Add unit testing to unitctl CI workflow
* fix a few misspellings in unitctl CI workflow
* add unit testing job
* exclude unitd integration test from unit tests
* add workflow dispatch trigger
* add calls to get workflow dispatch version

Signed-off-by: Ava Hahn <a.hahn@f5.com>
2024-05-14 14:38:54 -07:00
Ava Hahn
149555dbb6 trigger unitctl CI on version tags of existing format
Signed-off-by: Ava Hahn <a.hahn@f5.com>
2024-05-09 13:09:57 -07:00
Dylan Arbour
6d0880c995 Add unitctl build and release CI
Adds a GitHub Actions workflow that builds and releases unitctl binaries
when a tag prefixed with `unitctl/` is pushed.

Binaries are built on pull-requests that change any files within
`tools/unitctl`, on `master` branch pushes and when `unitctl/` prefixed
tags are pushed.
2024-05-09 13:09:57 -07:00
Andrew Clayton
ff2e0f4223 Add a GitHub workflow to check for whitespace issues
If it fails you can check the 'git log --check' output of the workflow
to see what the issue is. E.g

  --- 93ec0133 Oops...
  README.md:1: trailing whitespace.
  +# NGINX Unit

Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2024-05-02 14:19:32 +01:00
Dylan Arbour
2e61525093 Add dependabot.yml
We already use dependabot for security related patches, by default.

This change adds a dependabot.yml configuration file that explicitly
enables the service to manage versions of Actions in GitHub Actions.
This ensures that Actions like `setup-go` are updated timely.

This change does not affect how Dependabot manages versions for Go,
Rust, etc. The file can be used to configure that for additional
package managers and languages in the future, if desired.
2024-03-11 09:16:27 -04:00
Andrew Clayton
0cee7d1a48 Add GitHub workflow for wasm-wasi-component
This adds a GitHub CI workflow for the new wasm-wasi-component language
module.

Some things of note.

1) We need to special case 'wasm-wasi-component' in the 'Output build
   metadata' section as we are splitting the module names on '-' to
   split them into name and version.

2) Apart from needing to tell bindgen about the njs include paths, we
   also need to explicitly specify which version of clang to use to
   work around an issue with multiple versions of clang installed.

Link: <https://gitlab.freedesktop.org/mesa/mesa/-/issues/7268>
Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
2024-03-07 19:47:46 +00:00
Dylan Arbour
8032ce31e3 Test with root access in GitHub workflows
To enable tests that require privileged root access, this commit tests
with `sudo`. The Java and Python jobs have additional permissions
issues, so they are also configured and made with `sudo`.

A small permissions fix is required before running tests to allow
non-root users to execute within the `/home/runner` directory.

This change also removes the custom directories that were required
without root access.

Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Signed-off-by: Dylan Arbour <d.arbour@f5.com>
2024-03-07 14:17:01 -05:00
Dylan Arbour
d5665f49a4 Update setup-go to v5
Removes deprecation notices on actions builds. v5 updates the version of
node and `cache: false` disables the errors related to not finding a
go.sum
2024-02-24 11:12:31 -05:00
Dylan Arbour
9d02b906a5 Add PHP 8.2 and 8.1 to test matrix
`setup-php` action was fixed to add embed SAPI for older versions of PHP
2024-02-23 18:06:33 -05:00
Dylan Arbour
e2cab03234 Remove debug from builds and tests
The info and above errors should be more than enough for debugging
failures in GitHuB Actions CI.
2024-02-22 15:43:46 -05:00
Dylan Arbour
56d3a1a72b Add GitHub Actions
This commit adds GitHub Actions configuration, running tests on
pull-requests and master push changes.

This change is meant to be a first-pass at our evolving CI processes.

- Tests run in parallel per language for speed and isolation
- Test matrix is composed by a string list of languages and versions
- `setup-${language}` actions are preferred over base (and changing)
  versions from `ubuntu-latest` operating system

A few caveats with the current setup:

- Only tests on Ubuntu (no FreeBSD or Alpine)
- Unpriviledged tests only
- No core dumps available on failure
2024-02-21 09:54:05 -05:00