Commit Graph

20 Commits

Author SHA1 Message Date
Gerwin Klein 722cd25c32 github: use correct secret
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-06-21 16:05:28 +10:00
Gerwin Klein dc093cab26 github: use explicit token to enable push triggers
The implicit GITHUB_TOKEN does not trigger further push actions in
the same repo, but in this case we do want the push action to happen
on the `-rebased` branches, so we use an explicit auth token instead.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-06-21 11:47:19 +10:00
Gerwin Klein 6f2ea86752 github: push to -rebased branch first
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-06-07 15:58:57 +10:00
Gerwin Klein 9fe16760b7 github: auto-rebase platform branches
The action will abort when no clean rebase is possible, and force-push
the rebased branch when the rebase over origin/master was clean.

The push will trigger proof runs on the rebased branches.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-06-07 15:58:57 +10:00
Gerwin Klein 2545aa0e51 github: add manual triggers for testing
The worklow_dispatch trigger adds a button in the GitHub UI that lets
one trigger the workflow manually. Useful for testing the workflows.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-05-03 14:23:06 +10:00
Matthew Brecknell f694aeb6fe ci bv: Use bv-trigger action
Use the bv-trigger action to trigger a binary verification run, rather
than a called workflow.

Signed-off-by: Matthew Brecknell <matt@kry10.com>
2023-03-05 16:09:39 +11:00
Matthew Brecknell 7225fb3989 ci: Move decompilation workflow to graph-refine repository
The decompilation process (part of binary verification) is more tightly
coupled to the graph-refine repository than l4v, so it makes more sense
to perform decompilation in graph-refine. (It was temporarily performed
here in l4v because the graph-refine branches needed some stabilisation
work.)

This also modifies proof workflows:
- All proof workflows now upload kernel build artifacts. These can be
  used as inputs to binary verification.
- Proof workflows other than the one for pull requests (proof.yml)
  automatically trigger a decompilation workflow. We can still manually
  initiate a decompilation workflow using the uploaded artifacts, but
  doint so automatically would consume too many parallel runners.

Signed-off-by: Matthew Brecknell <matt@kry10.com>
2023-03-04 08:38:33 +11:00
Gerwin Klein aa53e9a84c
github: provide nl-unescape script to BV trigger job
Need to check out the ci-actions repo first (where the nl-unescape.sh
script is located).

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-03-01 14:51:52 +11:00
Peter Chubb 5fcec5f56a
Unescape verification-manifest.xml before saving it (#583)
The current xmllint tools don't like %0A to mean newline
so are crashing.

Signed-off-by: Peter Chubb <peter.chubb@unsw.edu.au>
2023-02-22 15:32:28 +11:00
Gerwin Klein 477a7c1016 github: bump github action dependencies
Upgrade to node16 actions to reduce warnings on CI.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2022-11-11 14:22:37 +11:00
Matthew Brecknell 81423c2200 ci: temporarily remove mcs-export from proof-deploy
This removes the mcs-export matrix job from the proof-deploy workflow,
as the first step towards solving seL4/l4v#497. This should unblock
verification manifest deployments.

The mcs-export job was added to the proof-deploy workflow to perform
SimplExportAndRefine for binary verification targets. It took a short
cut, using the master branch of l4v to perform SimplExportAndRefine for
MCS configurations, since there were no differences between rt and
master that were relevant to SimplExportAndRefine. This is no longer the
case, because MCS seL4 C code now contains C parser annotations that use
symbols only available in the rt branch of l4v.

We intend to add an equivalent job that uses the rt branch of l4v for
MCS SimplExportAndRefine, but are still working out the best way to do
that.

Signed-off-by: Matthew Brecknell <matt@kry10.com>
2022-07-06 18:58:04 +10:00
Gerwin Klein c3900ced40 github: add AARCH64 to build matrix
This commit will only come into full effect when it is merged into
master, which is also the time AARCH64 tests should run regularly
in the main repository.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2022-04-20 09:16:19 +10:00
Gerwin Klein bf432bb631 github: changed AutoCorresSEL4 default
ci-actions/aws-proofs no longer excludes the AutoCorresSEL4 session by
default, so we no longer need to provide a fake argument to the session
parameter to not exclude it.

This is significant, because we now want the default to be non-verbose
since we're running multiple sessions in parallel.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2022-03-30 10:27:25 +11:00
Matthew Brecknell 590031439a ci: add binary verification workflow
- Add a new workflow to prepare graph-refine inputs and submit them to a
  back end over SSH. Intended to be triggered by the proof-deploy
  workflow. Fetches C graph-lang artifacts from the triggering workflow,
  and runs the decompiler to generate ASM graph-lang.
- Add a job to the l4v-proof workflow to trigger the decompilation
  workflow.

Signed-off-by: Matthew Brecknell <matt@kry10.com>
2022-03-23 11:53:28 +11:00
Matthew Brecknell bda2c35862 ci proof-deploy: reorganise c-graph-lang artifacts
Combine all C graph-lang outputs into a single artifact, to simplify
downstream workflows.

Signed-off-by: Matthew Brecknell <matt@kry10.com>
2022-03-23 11:53:28 +11:00
Matthew Brecknell 6673bf03d4 ci proof-deploy: add MCS C graph export
Add a second matrix job that runs SimplExportAndRefine for MCS C kernel
configurations that support it (currently ARM and RISCV64).

Note that this uses the master branch of l4v to generate the CSpec, and
to run SimplExportAndRefine, not the rt branch. This works because the
rt branch does not yet connect to the CSpec, and there are no meaningful
differences between rt and master in CSpec or SimplExportAndRefine. For
now, this simplifies workflows for binary verification. But when MCS
proofs connect to the CSpec, this will need to be refactored to use the
rt branch.

Signed-off-by: Matthew Brecknell <matt@kry10.com>
2022-03-14 11:13:47 +11:00
Matthew Brecknell da3c480cd4 ci proof-deploy: save C graph-lang
Upload an artifact for any C graph-lang generated by
SimplExportAndRefine during a proof-deploy workflow.

Signed-off-by: Matthew Brecknell <matt@kry10.com>
2022-03-14 11:13:47 +11:00
Gerwin Klein d831ddea67 github: run AWS proofs only on most recent push
By default GitHub spawns a new test for each push event. To avoid
hitting the maximum number of AWS instances too quickly, we run the PR
and master proof tests only on the most recent push since the last test
finished.

The concurrency exclusion is per git ref, i.e. separate PRs and
separate branches still run tests concurrently.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2022-01-11 18:20:45 +11:00
Gerwin Klein 349309ebf5 github: trigger proof run on manifest update
The repository_dispatch event will be generated in the
verification-manifest repo when devel.xml is updated by anyone other
than the seL4-ci user.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-08-18 10:44:48 +10:00
Gerwin Klein 3c1f9a8f58
github: deploy manifest after test on master (#323)
This refactors the proof runs into a separate run for the master branch
(which has deployment) and development branches (currently RT and PRs).

For the test on the master branch, we need to make sure that all tests
and the deployment action see the same revisions of all participating
repos.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-08-12 09:09:32 +10:00