Add docs and mod version bumping
Added and modified documentation for the contribution process. Added the code of conduct file. Modified bump version's conf to auto create tags and commits.
This commit is contained in:
parent
035a650159
commit
f4d71457da
@ -1,5 +1,8 @@
|
||||
[bumpversion]
|
||||
current_version = 0.1.7
|
||||
tag = True
|
||||
commit = True
|
||||
message = 'Version update: {current_version} → {new_version}'
|
||||
|
||||
[bumpversion:file:veilid-server/Cargo.toml]
|
||||
search = name = "veilid-server"
|
||||
|
@ -1,9 +1,9 @@
|
||||
# Contributing to Veilid
|
||||
Before you get started, please review our [Code of Conduct](./CODE_OF_CONDUCT.md). We're here to make things better and we cannot do that by treating each other without respect.
|
||||
Before you get started, please review our [Code of Conduct](./code_of_conduct.md). We're here to make things better and we cannot do that by treating each other without respect.
|
||||
|
||||
|
||||
## Code Contributions
|
||||
To begin crafting code to contribution to the Veilid project, first set up a [development environment]. After cloning the project, check out a new local branch and name it in a way that describes the work being done. This is refered to as a topic branch.
|
||||
To begin crafting code to contribute to the Veilid project, first set up a [development environment]. After cloning the project, check out a new local branch and name it in a way that describes the work being done. This is referred to as a [feature branch].
|
||||
|
||||
Some contributions might introduce changes that are incompatible with other existing nodes. In this case it is recommended to also set a [development network]. *NEED TO WRITE*
|
||||
|
||||
@ -19,16 +19,16 @@ Keeping the following in mind gives your contribution the best chance of landing
|
||||
|
||||
#### <u>Merge Requests</u>
|
||||
|
||||
* **Do** create a [topic branch] to work on instead of working directly on `main`. This helps to:
|
||||
* **Do** create a [feature branch] to work on instead of working directly on `main`. This helps to:
|
||||
* Protect the process.
|
||||
* Ensures users are aware of commits on the branch being considered for merge.
|
||||
* Allows for a location for more commits to be offered without mingling with other contributor changes.
|
||||
* Allows contributors to make progress while a PR is still being reviewed.
|
||||
* Allows contributors to make progress while a MR is still being reviewed.
|
||||
* **Do** follow the [50/72 rule] for Git commit messages.
|
||||
* **Do** target your merge request to the **main branch**.
|
||||
* **Do** specify a descriptive title to make searching for your merge request easier.
|
||||
* **Do** list [verification steps] so your code is testable.
|
||||
* **Do** [reference associated issues] in your merge request description.
|
||||
* **Do** reference associated issues in your merge request description.
|
||||
* **Don't** leave your merge request description blank.
|
||||
* **Don't** abandon your merge request. Being responsive helps us land your code faster.
|
||||
* **Don't** submit unfinished code.
|
||||
@ -38,29 +38,29 @@ Keeping the following in mind gives your contribution the best chance of landing
|
||||
## Contributions Without Writing Code
|
||||
There are numerous ways you can contribute to the growth and success of the Veilid project without writing code:
|
||||
|
||||
- [submit]() bugs as well as feature/enhancement requests. Letting us know you found a bug, have an idea for a new feature, or see a way we can enhance existing features is just as important and useful as writing the code related to those things. Send us detailed information about your issue or idea:
|
||||
- Submit bugs as well as feature/enhancement requests. Letting us know you found a bug, have an idea for a new feature, or see a way we can enhance existing features is just as important and useful as writing the code related to those things. Send us detailed information about your issue or idea:
|
||||
- Features/Enhancements: Describe your idea. If you're able to, sketch out a diagram or mock-up.
|
||||
- Bugs: Please be sure to include the expected behavior, the observed behavior, and steps to reproduce the problem. Please be descriptive about the environment you've installed your node or application into. More information can be found [below](#bug-reports).
|
||||
- [Help other users with open issues]. Sometimes all an issue needs is a little conversation to clear up a process or misunderstanding. Please keep the [Code of Conduct](./CODE_OF_CONDUCT.md) in mind.
|
||||
- Bugs: Please be sure to include the expected behavior, the observed behavior, and steps to reproduce the problem. Please be descriptive about the environment you've installed your node or application into.
|
||||
- [Help other users with open issues]. Sometimes all an issue needs is a little conversation to clear up a process or misunderstanding. Please keep the [Code of Conduct](./code_of_conduct.md) in mind.
|
||||
- Help other contributors test recently submitted merge requests. By pulling down a merge request and testing it, you can help validate new code contributions for stability and quality.
|
||||
- Report a security or privacy vulnerability. Please let us know if you find ways in which Veilid could handle security and/or privacy in a different or better way. Surely let us know if you find broken or otherwise flawed security and/or privacy functions. You can report these directly to security@veilid.org or by using the form found [on our site]() *NEED TO BUILD*
|
||||
- Report a security or privacy vulnerability. Please let us know if you find ways in which Veilid could handle security and/or privacy in a different or better way. Surely let us know if you find broken or otherwise flawed security and/or privacy functions. You can report these directly to security@veilid.org.
|
||||
- Add or edit documentation. Documentation is a living and evolving library of knowledge. As such, care, feeding, and even pruning is needed from time to time. If you're a non-native english speaker, you can help by replacing any ambiguous idioms, metaphors, or unclear language that might make our documentation hard to understand.
|
||||
|
||||
|
||||
#### <u>Bug Fixes</u>
|
||||
* **Do** include reproduction steps in the form of verification steps.
|
||||
* **Do** link to any corresponding [Issues] in the format of `See #1234` in your commit description.
|
||||
* **Do** include reproduction steps in the form of [verification steps].
|
||||
* **Do** link to any corresponding issues in your commit description.
|
||||
|
||||
## Bug Reports
|
||||
|
||||
Please report vulnerabilities in Veilid directly to security@veilid.org or by using the form found [on our site]() *NEED TO BUILD*. More information about our disclosure policy and Veilid Foundation's approach to coordinated disclosure can be found [on our site](). *NEED TO WRITE*
|
||||
|
||||
When reporting Veilid issues:
|
||||
* **Do** write a detailed description of your bug and use a descriptive title.
|
||||
* **Do** include reproduction steps, stack traces, and anything that might help us fix your bug.
|
||||
* **Don't** file duplicate reports. Search open issues for similar bugs before filing a new report.
|
||||
* **Don't** attempt to report issues on a closed PR. New issues should be openned against the `main` branch.
|
||||
|
||||
Please report vulnerabilities in Veilid directly to security@veilid.org.
|
||||
|
||||
If you're looking for more guidance, talk to other Veilid contributors on the [Veilid Discord].
|
||||
|
||||
**Thank you** for taking the few moments to read this far! Together we will build something truely remarkable.
|
||||
@ -69,29 +69,10 @@ If you're looking for more guidance, talk to other Veilid contributors on the [V
|
||||
|
||||
This contributor guide is inspired by the contribution guidelines of the [Metasploit Framework](https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md) project found on GitHub.
|
||||
|
||||
[Code of Conduct]:https://docs.metasploit.com/docs/code-of-conduct.html
|
||||
[Submit bugs and feature requests]:http://r-7.co/MSF-BUGv1
|
||||
[Help fellow users with open issues]:https://github.com/rapid7/metasploit-framework/issues
|
||||
[help fellow committers test recently submitted merge requests]:https://github.com/rapid7/metasploit-framework/pulls
|
||||
[Help other users with open issues]:https://gitlab.com/veilid/veilid/-/issues
|
||||
[Report a security vulnerability in Metasploit itself]:https://www.rapid7.com/disclosure.jsp
|
||||
[development environment]:http://r-7.co/MSF-DEV
|
||||
[proof-of-concept exploits]:https://www.exploit-db.com/search?verified=true&hasapp=true&nomsf=true
|
||||
[Ruby style guide]:https://github.com/bbatsov/ruby-style-guide
|
||||
[Rubocop]:https://rubygems.org/search?query=rubocop
|
||||
[50/72 rule]:http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
||||
[topic branch]:http://git-scm.com/book/en/Git-Branching-Branching-Workflows#Topic-Branches
|
||||
[draft PR]:https://help.github.com/en/articles/about-pull-requests#draft-pull-requests
|
||||
[console output]:https://docs.github.com/en/free-pro-team@latest/github/writing-on-github/creating-and-highlighting-code-blocks#fenced-code-blocks
|
||||
[verification steps]:https://docs.github.com/en/free-pro-team@latest/github/writing-on-github/basic-writing-and-formatting-syntax#task-lists
|
||||
[reference associated issues]:https://github.com/blog/1506-closing-issues-via-pull-requests
|
||||
[PR#9966]:https://github.com/rapid7/metasploit-framework/pull/9966
|
||||
[pre-commit hook]:https://github.com/rapid7/metasploit-framework/blob/master/tools/dev/pre-commit-hook.rb
|
||||
[API]:https://rapid7.github.io/metasploit-framework/api
|
||||
[module documentation]:https://docs.metasploit.com/docs/using-metasploit/basics/module-documentation.html
|
||||
[scripts]:https://github.com/rapid7/metasploit-framework/tree/master/scripts
|
||||
[RSpec]:http://rspec.info
|
||||
[Better Specs]:http://www.betterspecs.org/
|
||||
[YARD]:http://yardoc.org
|
||||
[Issues]:https://github.com/rapid7/metasploit-framework/issues
|
||||
[Metasploit Slack]:https://www.metasploit.com/slack
|
||||
[#metasploit on Freenode IRC]:http://webchat.freenode.net/?channels=%23metasploit&uio=d4
|
||||
[feature branch]:https://docs.gitlab.com/ee/gitlab-basics/feature_branch_workflow.html
|
||||
[verification steps]:https://docs.gitlab.com/ee/user/markdown.html#task-lists
|
||||
[Veilid Discord]:https://discord.gg/DmEGxyA87N
|
||||
|
217
DEVELOPMENT.md
Normal file
217
DEVELOPMENT.md
Normal file
@ -0,0 +1,217 @@
|
||||
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)
|
||||
|
||||
# Veilid Development
|
||||
|
||||
## Introduction
|
||||
This guide covers setting up environments for core, Flutter/Dart, and Python development. See the relevent sections.
|
||||
|
||||
## Obtaining the source code
|
||||
|
||||
```shell
|
||||
git clone --recurse-submodules git@gitlab.com:veilid/veilid.git
|
||||
```
|
||||
|
||||
## Dependencies
|
||||
|
||||
### GNU/Linux
|
||||
|
||||
Development of Veilid on GNU/Linux requires a Debian variant such as Debian
|
||||
itself, Ubuntu or Mint. Pull requests to support other distributions would be
|
||||
welcome!
|
||||
|
||||
Running the setup script requires:
|
||||
* Android SDK and NDK
|
||||
* Rust
|
||||
|
||||
You may decide to use Android Studio [here](https://developer.android.com/studio)
|
||||
to maintain your Android dependencies. If so, use the dependency manager
|
||||
within your IDE. If you plan on using Flutter for Veilid development, the Android Studio
|
||||
method is highly recommended as you may run into path problems with the 'flutter'
|
||||
command line without it. If you do so, you may skip to
|
||||
[Run Veilid setup script](#Run Veilid setup script).
|
||||
|
||||
* build-tools;33.0.1
|
||||
* ndk;25.1.8937393
|
||||
* cmake;3.22.1
|
||||
* platform-tools
|
||||
* platforms;android-33
|
||||
|
||||
#### Setup Dependencies using the CLI
|
||||
|
||||
|
||||
You can automatically install the prerequisites using this script:
|
||||
|
||||
```shell
|
||||
./install_linux_prerequisites.sh
|
||||
```
|
||||
|
||||
Otherwise, you may choose to use Android `sdkmanager`. Follow the installation
|
||||
instructions for `sdkmanager`
|
||||
[here](https://developer.android.com/studio/command-line/sdkmanager), then use
|
||||
the command line to install the requisite package versions:
|
||||
|
||||
```shell
|
||||
sdkmanager --install "platform-tools"
|
||||
sdkmanager --install "platforms;android-33"
|
||||
sdkmanager --install "build-tools;33.0.1"
|
||||
sdkmanager --install "ndk;25.1.8937393"
|
||||
sdkmanager --install "cmake;3.22.1"
|
||||
```
|
||||
|
||||
Export environment variables and add the Android SDK platform-tools directory to
|
||||
your path.
|
||||
|
||||
```shell
|
||||
cat << EOF >> ~/.profile
|
||||
export ANDROID_SDK_ROOT=<path to sdk>
|
||||
export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/25.1.8937393
|
||||
export PATH=\$PATH:$ANDROID_SDK_ROOT/platform-tools
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Run Veilid setup script
|
||||
|
||||
Now you may run the Linux setup script to check your development environment and
|
||||
pull the remaining Rust dependencies:
|
||||
|
||||
```shell
|
||||
./setup_linux.sh
|
||||
```
|
||||
|
||||
#### Run the veilid-flutter setup script (optional)
|
||||
|
||||
If you are developing Flutter applications or the flutter-veilid portion, you should
|
||||
install Android Studio, and run the flutter setup script:
|
||||
|
||||
```shell
|
||||
cd veilid-flutter
|
||||
./setup_flutter.sh
|
||||
```
|
||||
|
||||
|
||||
### macOS
|
||||
|
||||
Development of Veilid on MacOS is possible on both Intel and ARM hardware.
|
||||
|
||||
Development requires:
|
||||
* Android Studio
|
||||
* Xcode, preferably latest version
|
||||
* Homebrew [here](https://brew.sh)
|
||||
* Android SDK and NDK
|
||||
* Rust
|
||||
|
||||
You will need to use Android Studio [here](https://developer.android.com/studio)
|
||||
to maintain your Android dependencies. Use the SDK Manager in the IDE to install the following packages (use package details view to select version):
|
||||
* Android SDK Build Tools (33.0.1)
|
||||
* NDK (Side-by-side) (25.1.8937393)
|
||||
* Cmake (3.22.1)
|
||||
* Android SDK 33
|
||||
* Android SDK Command Line Tools (latest) (7.0/latest)
|
||||
|
||||
#### Setup command line environment
|
||||
|
||||
Export environment variables and add the Android SDK platform-tools directory to
|
||||
your path.
|
||||
|
||||
```shell
|
||||
cat << EOF >> ~/.zshenv
|
||||
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
|
||||
export ANDROID_NDK_HOME=$HOME/Library/Android/sdk/ndk/25.1.8937393
|
||||
export PATH=\$PATH:$HOME/Library/Android/sdk/platform-tools
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Run Veilid setup script
|
||||
|
||||
Now you may run the MacOS setup script to check your development environment and
|
||||
pull the remaining Rust dependencies:
|
||||
|
||||
```shell
|
||||
./setup_macos.sh
|
||||
```
|
||||
|
||||
#### Run the veilid-flutter setup script (optional)
|
||||
|
||||
If you are developing Flutter applications or the flutter-veilid portion, you should
|
||||
install Android Studio, and run the flutter setup script:
|
||||
|
||||
```shell
|
||||
cd veilid-flutter
|
||||
./setup_flutter.sh
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
**TODO**
|
||||
|
||||
## Running the Application(s)
|
||||
|
||||
### Veilid Server
|
||||
|
||||
In order to run the `veilid-server` locally:
|
||||
|
||||
```shell
|
||||
cd ./veilid-server
|
||||
cargo run
|
||||
```
|
||||
|
||||
In order to see what options are available:
|
||||
|
||||
```shell
|
||||
cargo run -- --help
|
||||
```
|
||||
|
||||
#### Configuration
|
||||
|
||||
`veilid-server` has a wealth of configuration options. Further documentation on
|
||||
the format of the `veilid-server.conf` file may be found [in the project /doc
|
||||
directory](./doc/config/veilid-server-config.md).
|
||||
|
||||
When running `veilid-server` in a Unix-like environment, the application will
|
||||
look for its config file under `/etc/veilid-server/`. If the config file is not
|
||||
found in this location, `veilid-server` will follow the XDG user directory spec
|
||||
and look in `~/.config/veilid-server`.
|
||||
|
||||
When running under Windows, the `veilid-server.conf` file may be created at
|
||||
`C:\Users\<user>\AppData\Roaming\Veilid\Veilid\`, and when running under macOS,
|
||||
at `/Users/<user>/Library/Application Support/org.Veilid.Veilid`.
|
||||
|
||||
### Veilid CLI
|
||||
|
||||
In order to connect to your local `veilid-server`:
|
||||
|
||||
```shell
|
||||
cd ./veilid-cli
|
||||
cargo run
|
||||
```
|
||||
|
||||
Similar to `veilid-server`, you may see CLI options by typing:
|
||||
|
||||
```shell
|
||||
cargo run -- --help
|
||||
```
|
||||
|
||||
## Building the Application
|
||||
|
||||
### Linux Packages
|
||||
|
||||
Veilid server and cli can be built locally using the
|
||||
[Earthly](https://earthly.dev/) framework. After [installing earthly on your
|
||||
local machine](https://earthly.dev/get-earthly), you may use the `earthly` cli
|
||||
to initiate a build:
|
||||
|
||||
```shell
|
||||
earthly +package-linux
|
||||
```
|
||||
|
||||
This will assemble all dependencies and build `.deb` packages for both amd64 and
|
||||
arm64 platforms. Earthly, built on Docker, caches build layers, so after a
|
||||
longer first build, subsequent builds should be much quicker.
|
||||
|
||||
During development, you may want to kick off specific build steps. To see a list
|
||||
of the build steps configured, consult the `Earthfile`, or you may use the
|
||||
`earthly` cli:
|
||||
|
||||
```shell
|
||||
earthly ls
|
||||
```
|
32
INSTALL.md
Normal file
32
INSTALL.md
Normal file
@ -0,0 +1,32 @@
|
||||
# Install a Veilid Node
|
||||
|
||||
## Server Grade Headless Nodes
|
||||
|
||||
These network support nodes are heavier than the node a user would establish on their phone in the form of a chat or social media application. A cloud based virtual private server (VPS), such as Digital Ocean Droplets or AWS EC2, with high bandwidth, processing resources, and up time availability is cruicial for building the fast, secure, and private routing that Veilid is built to provide.
|
||||
|
||||
### Add the repo to a Debian based system and install a Veilid node
|
||||
```shell
|
||||
wget -O- https://packages.veilid.net/gpg/veilid-packages-key.public | sudo gpg --dearmor -o /usr/share/keyrings/veilid-packages-keyring.gpg
|
||||
```
|
||||
For AMD64 based systems run the following:
|
||||
```shell
|
||||
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/veilid-packages-keyring.gpg] https://packages.veilid.net/apt stable main" | sudo tee /etc/apt/sources.list.d/veilid.list 1>/dev/null
|
||||
```
|
||||
For ARM64 based systems, run the following:
|
||||
```shell
|
||||
echo "deb [arch=arm64 signed-by=/usr/share/keyrings/veilid-packages-keyring.gpg] https://packages.veilid.net/apt stable main" | sudo tee /etc/apt/sources.list.d/veilid.list 1>/dev/null
|
||||
```
|
||||
For all, run:
|
||||
```shell
|
||||
apt update
|
||||
```
|
||||
```shell
|
||||
apt install veilid-server veilid-cli
|
||||
```
|
||||
### Add the repo to a Fedora based system and install a Veilid node
|
||||
```shell
|
||||
yum-config-manager --add-repo https://packages.veilid.net/rpm/veilid-rpm-test-repo.repo
|
||||
```
|
||||
```shell
|
||||
dnf install veilid-server veilid-cli
|
||||
```
|
227
README.md
227
README.md
@ -1,216 +1,29 @@
|
||||
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)
|
||||
# Welcome to Veilid
|
||||
|
||||
# Veilid
|
||||
- [From Orbit](#from-orbit)
|
||||
- [Run a Node](#run-a-node)
|
||||
- [Development](#development)
|
||||
|
||||
## Introduction
|
||||
## From Orbit
|
||||
|
||||
## Obtaining the source code
|
||||
The first matter to address is the question "What is Veilid?" The highest-level description is that Veilid is a peer-to-peer network for easily sharing various kinds of data.
|
||||
|
||||
```shell
|
||||
git clone --recurse-submodules git@gitlab.com:veilid/veilid.git
|
||||
```
|
||||
Veilid is designed with a social dimension in mind, so that each user can have their personal content stored on the network, but also can share that content with other people of their choosing, or with the entire world if they want.
|
||||
|
||||
## Dependencies
|
||||
The primary purpose of the Veilid network is to provide the infrastructure for a specific kind of shared data: social media in various forms. That includes light-weight content such as Twitter's tweets or Mastodon's toots, medium-weight content like images and songs, and heavy-weight content like videos. Meta-content such as personal feeds, replies, private messages, and so forth are also intended to run atop Veilid.
|
||||
|
||||
### GNU/Linux
|
||||
## Run a Node
|
||||
The easiest way to help grow the Veilid network is to run your own node. Every user of Veilid is a node, but some nodes help the netowrk more than others. These network support nodes are heavier than the node a user would establish on their phone in the form of a chat or social media application. A cloud based virtual private server (VPS), such as Digital Ocean Droplets or AWS EC2, with high bandwidth, processing resources, and up time availability is cruicial for building the fast, secure, and private routing that Veilid is built to provide.
|
||||
|
||||
Development of Veilid on GNU/Linux requires a Debian variant such as Debian
|
||||
itself, Ubuntu or Mint. Pull requests to support other distributions would be
|
||||
welcome!
|
||||
To run such a node, establish a Debian or Fedora based VPS and install the veilid-server service. To make this process simple we are hosting package manager repositories for .deb and .rpm packages. See the [installing](./INSTALL.md) guide for more information.
|
||||
|
||||
## Development
|
||||
If you're inclined to get involved in code and non-code development, please check out the [contributing](./CONTRIBUTING.md) guide. We're striving for this project to be developed in the open and by people for people. Specific areas in which we are looking for help include:
|
||||
|
||||
Running the setup script requires:
|
||||
* Android SDK and NDK
|
||||
* Rust
|
||||
|
||||
You may decide to use Android Studio [here](https://developer.android.com/studio)
|
||||
to maintain your Android dependencies. If so, use the dependency manager
|
||||
within your IDE. If you plan on using Flutter for Veilid development, the Android Studio
|
||||
method is highly recommended as you may run into path problems with the 'flutter'
|
||||
command line without it. If you do so, you may skip to
|
||||
[Run Veilid setup script](#Run Veilid setup script).
|
||||
|
||||
* build-tools;33.0.1
|
||||
* ndk;25.1.8937393
|
||||
* cmake;3.22.1
|
||||
* platform-tools
|
||||
* platforms;android-33
|
||||
|
||||
#### Setup Dependencies using the CLI
|
||||
|
||||
|
||||
You can automatically install the prerequisites using this script:
|
||||
|
||||
```shell
|
||||
./install_linux_prerequisites.sh
|
||||
```
|
||||
|
||||
Otherwise, you may choose to use Android `sdkmanager`. Follow the installation
|
||||
instructions for `sdkmanager`
|
||||
[here](https://developer.android.com/studio/command-line/sdkmanager), then use
|
||||
the command line to install the requisite package versions:
|
||||
|
||||
```shell
|
||||
sdkmanager --install "platform-tools"
|
||||
sdkmanager --install "platforms;android-33"
|
||||
sdkmanager --install "build-tools;33.0.1"
|
||||
sdkmanager --install "ndk;25.1.8937393"
|
||||
sdkmanager --install "cmake;3.22.1"
|
||||
```
|
||||
|
||||
Export environment variables and add the Android SDK platform-tools directory to
|
||||
your path.
|
||||
|
||||
```shell
|
||||
cat << EOF >> ~/.profile
|
||||
export ANDROID_SDK_ROOT=<path to sdk>
|
||||
export ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/25.1.8937393
|
||||
export PATH=\$PATH:$ANDROID_SDK_ROOT/platform-tools
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Run Veilid setup script
|
||||
|
||||
Now you may run the Linux setup script to check your development environment and
|
||||
pull the remaining Rust dependencies:
|
||||
|
||||
```shell
|
||||
./setup_linux.sh
|
||||
```
|
||||
|
||||
#### Run the veilid-flutter setup script (optional)
|
||||
|
||||
If you are developing Flutter applications or the flutter-veilid portion, you should
|
||||
install Android Studio, and run the flutter setup script:
|
||||
|
||||
```shell
|
||||
cd veilid-flutter
|
||||
./setup_flutter.sh
|
||||
```
|
||||
|
||||
|
||||
### macOS
|
||||
|
||||
Development of Veilid on MacOS is possible on both Intel and ARM hardware.
|
||||
|
||||
Development requires:
|
||||
* Android Studio
|
||||
* Xcode, preferably latest version
|
||||
* Homebrew [here](https://brew.sh)
|
||||
* Android SDK and NDK
|
||||
* Rust
|
||||
|
||||
You will need to use Android Studio [here](https://developer.android.com/studio)
|
||||
to maintain your Android dependencies. Use the SDK Manager in the IDE to install the following packages (use package details view to select version):
|
||||
* Android SDK Build Tools (33.0.1)
|
||||
* NDK (Side-by-side) (25.1.8937393)
|
||||
* Cmake (3.22.1)
|
||||
* Android SDK 33
|
||||
* Android SDK Command Line Tools (latest) (7.0/latest)
|
||||
|
||||
#### Setup command line environment
|
||||
|
||||
Export environment variables and add the Android SDK platform-tools directory to
|
||||
your path.
|
||||
|
||||
```shell
|
||||
cat << EOF >> ~/.zshenv
|
||||
export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
|
||||
export ANDROID_NDK_HOME=$HOME/Library/Android/sdk/ndk/25.1.8937393
|
||||
export PATH=\$PATH:$HOME/Library/Android/sdk/platform-tools
|
||||
EOF
|
||||
```
|
||||
|
||||
#### Run Veilid setup script
|
||||
|
||||
Now you may run the MacOS setup script to check your development environment and
|
||||
pull the remaining Rust dependencies:
|
||||
|
||||
```shell
|
||||
./setup_macos.sh
|
||||
```
|
||||
|
||||
#### Run the veilid-flutter setup script (optional)
|
||||
|
||||
If you are developing Flutter applications or the flutter-veilid portion, you should
|
||||
install Android Studio, and run the flutter setup script:
|
||||
|
||||
```shell
|
||||
cd veilid-flutter
|
||||
./setup_flutter.sh
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
**TODO**
|
||||
|
||||
## Running the Application(s)
|
||||
|
||||
### Veilid Server
|
||||
|
||||
In order to run the `veilid-server` locally:
|
||||
|
||||
```shell
|
||||
cd ./veilid-server
|
||||
cargo run
|
||||
```
|
||||
|
||||
In order to see what options are available:
|
||||
|
||||
```shell
|
||||
cargo run -- --help
|
||||
```
|
||||
|
||||
#### Configuration
|
||||
|
||||
`veilid-server` has a wealth of configuration options. Further documentation on
|
||||
the format of the `veilid-server.conf` file may be found [in the project /doc
|
||||
directory](./doc/config/veilid-server-config.md).
|
||||
|
||||
When running `veilid-server` in a Unix-like environment, the application will
|
||||
look for its config file under `/etc/veilid-server/`. If the config file is not
|
||||
found in this location, `veilid-server` will follow the XDG user directory spec
|
||||
and look in `~/.config/veilid-server`.
|
||||
|
||||
When running under Windows, the `veilid-server.conf` file may be created at
|
||||
`C:\Users\<user>\AppData\Roaming\Veilid\Veilid\`, and when running under macOS,
|
||||
at `/Users/<user>/Library/Application Support/org.Veilid.Veilid`.
|
||||
|
||||
### Veilid CLI
|
||||
|
||||
In order to connect to your local `veilid-server`:
|
||||
|
||||
```shell
|
||||
cd ./veilid-cli
|
||||
cargo run
|
||||
```
|
||||
|
||||
Similar to `veilid-server`, you may see CLI options by typing:
|
||||
|
||||
```shell
|
||||
cargo run -- --help
|
||||
```
|
||||
|
||||
## Building the Application
|
||||
|
||||
### Linux Packages
|
||||
|
||||
Veilid server and cli can be built locally using the
|
||||
[Earthly](https://earthly.dev/) framework. After [installing earthly on your
|
||||
local machine](https://earthly.dev/get-earthly), you may use the `earthly` cli
|
||||
to initiate a build:
|
||||
|
||||
```shell
|
||||
earthly +package-linux
|
||||
```
|
||||
|
||||
This will assemble all dependencies and build `.deb` packages for both amd64 and
|
||||
arm64 platforms. Earthly, built on Docker, caches build layers, so after a
|
||||
longer first build, subsequent builds should be much quicker.
|
||||
|
||||
During development, you may want to kick off specific build steps. To see a list
|
||||
of the build steps configured, consult the `Earthfile`, or you may use the
|
||||
`earthly` cli:
|
||||
|
||||
```shell
|
||||
earthly ls
|
||||
```
|
||||
* Flutter/Dart
|
||||
* Python
|
||||
* Gitlab DevOps and CI/CD
|
||||
* Documentation
|
||||
* Security reviews
|
||||
* Linux packaging
|
22
RELEASING.md
22
RELEASING.md
@ -7,9 +7,17 @@ Veilid is a monorepo consisting of several projects:
|
||||
|
||||
## Release Mechanism
|
||||
|
||||
Releases happen via a CI/CD pipeline. Builds and tests are automatic and must succeed before a release is triggered. Releases happen if a successful build pipeline off of the `main` branch runs, followed by test pipeline, followed by package pipeline.
|
||||
|
||||
A new tag is calculated for each released artifact in the format 'name-v0.1.0', where the name is the pipeline name (veilid-server-deb-v0.0.0) for example. If the version number on the resulting output package artifact has changed from the most recent tag for that artifact, it is published. If publication is successful, the repository is tagged with the new tag. Multiple releases and tags can happen per pipeline run, if multiple version numbers are bumped in the same commit.
|
||||
Releases happen via a CI/CD pipeline. The release process flows as follows:
|
||||
1. Maintainer responds to a merge request (MR):
|
||||
a. Evaluate the MR's adherence to the published requirements and if automatic tests passed.
|
||||
b. (Optional) Perform the merge in a local dev environment if testing is required beyond the standard Earthly tests.
|
||||
c. If everything checks out, MR meets the published requirements, and tests passed, execute the merge functions in the Gitlab UI.
|
||||
2. Maintainer performs version bump:
|
||||
a. Update your local copy of `main` to mirror the newly merged version
|
||||
b. Execute the bumpversion.py process.
|
||||
c. Push your local 'main' to the upstream origin 'main' `git push`
|
||||
d. Push the new tag to the upstream origin `git push "tag name made in step 2d"`
|
||||
e. Ensure the package/release/distribute pipeline autostarted in the Gitlab UI
|
||||
|
||||
Tags serve as a historical record of what repo versions were successfully released at which version numbers.
|
||||
|
||||
@ -54,19 +62,19 @@ Occasionally a release will happen that needs to be reverted. This is done manua
|
||||
- [x] __veilid-server__ DEB package [**Tag**: `veilid-server-deb-v0.0.0`]
|
||||
> The Veilid headless node binary in the following formats:
|
||||
> * Standalone Debian/Ubuntu DEB file as a 'release file' on the `veilid` GitLab repository
|
||||
> * Pushed to APT repository at https://packages.veilid.com
|
||||
> * Pushed to APT repository at https://packages.veilid.net
|
||||
- [x] __veilid-server__ RPM package [**Tag**: `veilid-server-rpm-v0.0.0`]
|
||||
> The Veilid headless node binary in the following formats:
|
||||
> * Standalone RedHat/CentOS RPM file as a 'release file' on the `veilid` GitLab repository
|
||||
> * Pushed to Yum repository at https://packages.veilid.com
|
||||
> * Pushed to Yum repository at https://packages.veilid.net
|
||||
- [x] __veilid-cli__ DEB package [**Tag**: `veilid-cli-deb-v0.0.0`]
|
||||
> The Veilid headless node administrator control binary in the following formats:
|
||||
> * Standalone Debian/Ubuntu DEB file as a 'release file' on the `veilid` GitLab repository
|
||||
> * Pushed to APT repository at https://packages.veilid.com
|
||||
> * Pushed to APT repository at https://packages.veilid.net
|
||||
- [x] __veilid-cli__ RPM package [**Tag**: `veilid-cli-rpm-v0.0.0`]
|
||||
> The Veilid headless node administrator control binary in the following formats:
|
||||
> * Standalone RedHat/CentOS RPM file as a 'release file' on the `veilid` GitLab repository
|
||||
> * Pushed to Yum repository at https://packages.veilid.com
|
||||
> * Pushed to Yum repository at https://packages.veilid.net
|
||||
|
||||
### Version Numbering:
|
||||
|
||||
|
@ -61,7 +61,7 @@ representative at an online or offline event.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
[INSERT CONTACT METHOD].
|
||||
[security@veilid.org](security@veilid.org).
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
@ -132,3 +132,6 @@ For answers to common questions about this code of conduct, see the FAQ at
|
||||
[FAQ]: https://www.contributor-covenant.org/faq
|
||||
[translations]: https://www.contributor-covenant.org/translations
|
||||
|
||||
## Revisions
|
||||
Veilid Foundation, Inc reserves the right to make revisions to this document
|
||||
to ensure its continued alignment with our ideals.
|
Loading…
Reference in New Issue
Block a user