You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+21-16Lines changed: 21 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,20 @@ and [examples](https://github.com/pyth-network/pyth-examples/tree/main/price_fee
35
35
36
36
Fortuna is an off-chain service which can be used by [Entropy](https://pyth.network/entropy) providers.
37
37
38
-
## Development
38
+
## Local Development
39
+
40
+
### Setup
41
+
42
+
Please install the following tools in order to work in this repository:
43
+
44
+
-[NVM](https://github.com/nvm-sh/nvm?tab=readme-ov-file#installing-and-updating) to manage your node version, then run `nvm use 20` to ensure you are using node version 20.
45
+
-[Foundry](https://book.getfoundry.sh/getting-started/installation) in order to use `forge` for Ethereum contract development
46
+
-[Solana CLI](https://solana.com/docs/intro/installation) for working with Solana programs.
47
+
- After installing, please run `solana keygen new` to generate a local private key.
48
+
-[Anchor](https://www.anchor-lang.com/docs/installation) for developing Solana programs.
49
+
-[Pre-commit](https://pre-commit.com/) is used to automatically format and lint the repository.
50
+
- After installing, please run `pre-commit install` in the root of the repo to configure the checks to run on each git commit.
51
+
-[Rust](https://www.rust-lang.org/tools/install)
39
52
40
53
### Pull requests
41
54
@@ -45,14 +58,16 @@ to update the package versions following the [Semantic Versioning](https://semve
45
58
46
59
### Releases
47
60
48
-
The repository has a CI workflow that will release javascript packages whose version number has changed.
49
-
To perform a release, follow these steps:
61
+
The repository has several CI workflows that automatically release new versions of the various components when a new Github release is published.
62
+
Each component's workflow uses a specific tag format including the component name and version number (e.g., Fortuna uses the tag `fortuna-vX.Y.Z`).
63
+
The general process for creating a new release is:
50
64
51
-
1. Update the version number in the `package.json`file for the package(s) you wish to release. Please follow [Semantic Versioning](https://semver.org/) for package versions.
65
+
1. Update the version number of the component in the repo, e.g., in `package.json`or `Cargo.toml` or wherever. Please follow [Semantic Versioning](https://semver.org/) for package versions.
52
66
2. Submit a PR with the changes and merge them in to main.
53
-
3. Create a new tag `pyth-js-v<number>` and push to github. You can simply increment the version number each time -- it doesn't affect any of the published information.
54
-
4.Pushing the tag automatically triggers a CI workflow to publish the updated packages to NPM.
67
+
3. Create a new release on github. Configure the release to create a new tag when published. Set the tag name and version for the component you wish to release -- see the [Releases](https://github.com/pyth-network/pyth-crosschain/releases) page to identify the relevant tag.
68
+
4.Publish the release. This step will automatically trigger a Github Action to build the package and release it. This step will e.g., publish packages to NPM, or build and push docker images.
55
69
70
+
Note that all javascript packages are released together using a tag of the form `pyth-js-v<number>`. (The `number` is arbitrary.)
56
71
If you have a javascript package that shouldn't be published, simply add `"private": "true"` to the `package.json` file
57
72
and it will be excluded from the publishing workflow. If you are creating a new public javascript package, you should add
58
73
the following config option to `package.json`:
@@ -63,16 +78,6 @@ the following config option to `package.json`:
63
78
},
64
79
```
65
80
66
-
### pre-commit hooks
67
-
68
-
pre-commit is a tool that checks and fixes simple issues (formatting, ...) before each commit. You can install it by following [their website](https://pre-commit.com/). In order to enable checks for this repo run `pre-commit install` from command-line in the root of this repo.
69
-
70
-
The checks are also performed in the CI to ensure the code follows consistent formatting.
71
-
72
-
### Tilt CI
73
-
74
-
Integration tests run in Tilt (via the `tilt ci` command). The Tilt CI workflow requires approval from a member of the Pyth team. If you are a member, click on "Details" next to the "Workflow / ci-pyth-crosschain" check in a pull request, and then on the "Resume" button on the workflow page.
75
-
76
81
### Typescript Monorepo
77
82
78
83
All of the typescript / javascript packages in this repository are part of a
0 commit comments