Skip to content

Commit 831a52a

Browse files
authored
Adds setup and instructions for Github Copilot (#509)
Signed-off-by: Simon Davies <[email protected]>
1 parent 861d4a5 commit 831a52a

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

.github/copilot-instructions.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
This repository contains hyperlight. Hyperlight is a lightweight Virtual Machine Manager (VMM) designed to be embedded within applications.
2+
It enables safe execution of untrusted code within micro virtual machines with very low latency and minimal overhead.
3+
4+
This project uses just as a runner for building, testing etc. Just should already be installed. Most of the code in the repository is written in Rust, with a few files in C.
5+
6+
## Code Standards
7+
8+
Make sure that code is formatted and linted before committing. You can do this by running the following command:
9+
10+
```bash
11+
just fmt-apply
12+
```
13+
This will format the code and apply any necessary changes. You can also run the following command to check for any linting errors:
14+
15+
```bash
16+
just clippy debug
17+
just clippy release
18+
```
19+
20+
If any lints fail you can try to fix them by running the following command for debug failures:
21+
22+
```bash
23+
cargo clippy --fix --all
24+
```
25+
And the following command for release failures:
26+
27+
```bash
28+
cargo clippy --fix --all --release
29+
```
30+
31+
If this does not work, you should try and fix the errors and then run the commands again.
32+
33+
## Development flow
34+
35+
- build:
36+
- `just build` - builds the project in debug mode
37+
- `just build release` - builds the project in release mode
38+
- `just guests` - builds the guest library and test guests for both debug and release modes
39+
- test
40+
- `just test` - runs all tests in debug mode
41+
- `just test release` - runs all tests in release mode
42+
43+
Note that if any guest code has changed, you will need to run `just guests` to build the guest library, before running the tests, if the test fail make sure to run `just guests` again to build the guest library, before running the tests again.
44+
45+
Before pushing your code, make sure to run the following commands to ensure that everything is working correctly make sure all tests pass by running
46+
```bash
47+
just test-like-ci
48+
just test-like-ci release
49+
```
50+
51+
## Key Instructions
52+
53+
Follow best practices and idioms for writing Rust code.
54+
Maintain the structure and organization of the codebase. Do not introduce new crates or dependencies without discussing them first.
55+
Make sure to write tests for any new code you add. Follow the existing testing patterns in the codebase.
56+
Make sure to fully document any new code you add. Use rustdoc comments and follow guidelines for good documentation.
57+
Make sure that any changes which alter anything documented in the README or the documentation in the docs directory are reflected in the documentation.
58+
59+
## Repository Structure
60+
- `dev/` - contains development scripts and tools
61+
- `src/` - contains the source code for the project
62+
.editorconfig - contains the editor config for the project you should use this to configure your editor to use the same settings as the rest of the projec
63+
- Justfile - contains the just commands for building, testing and running the project
64+
- `fuzz` - contains the fuzzing tests for the project
65+
- `src/hyperlight_common/` - contains the common code shared between the host and guest
66+
- `src/hyperlight_guest/` - contains the hyperlight-guest library code
67+
- `src/hyperlight_host/` - contains the hyperlight-host library code
68+
- `src/hyperlight_guest_capi/` - contains the hyperlight-guest C library code
69+
- `src/hyperlight_testing/` - contains the shared code for tests
70+
- `schema/` - contains the flatbuffer schemas for the project
71+
- `tests/` - contains the test guest code for the project in C and Rust
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: "Copilot Setup Steps"
2+
3+
# Allow testing of the setup steps from your repository's "Actions" tab.
4+
on: workflow_dispatch
5+
6+
jobs:
7+
# The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
8+
copilot-setup-steps:
9+
runs-on: ubuntu-latest
10+
11+
# Set the permissions to the lowest permissions possible needed for your steps.
12+
# Copilot will be given its own token for its operations.
13+
permissions:
14+
# If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete.
15+
contents: read
16+
17+
# You can define any steps you want, and they will run before the agent starts.
18+
# If you do not check out your code, Copilot will do this for you.
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
23+
# For rust-fmt
24+
- name: Set up nightly rust
25+
uses: dtolnay/rust-toolchain@nightly
26+
with:
27+
components: rustfmt
28+
29+
- uses: hyperlight-dev/[email protected]
30+
with:
31+
rust-toolchain: "1.81.0"
32+
env:
33+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)