X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=.github%2FCONTRIBUTING.md;h=80b7cba3c5a740fa1f305468df4a6c4747fee9c0;hb=ce722c0f0fe081ce3308b857158810def93f161e;hp=fcb803e2596a1a2cbc37af34748c4ec5902a2789;hpb=29ff7889637cd82c3c531bd5b085a23e7d463356;p=github%2FChocobozzz%2FPeerTube.git diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index fcb803e25..80b7cba3c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -21,10 +21,16 @@ Interested in contributing? Awesome! - [RTL layout](#rtl-layout) - [Testing](#testing) - [Unit/integration tests](#unitintegration-tests) - - [Testing the federation of PeerTube servers](#testing-the-federation-of-peertube-servers) + - [Play with a federation of PeerTube servers](#play-with-a-federation-of-peertube-servers) - [Emails](#emails) - [OpenAPI documentation](#openapi-documentation) - [Environment variables](#environment-variables) + - [Generate/pull translations](#generatepull-translations) + - [Release PeerTube](#release-peertube) + - [PeerTube packages](#peertube-packages) + - [CI](#ci) + - [Monitoring](#monitoring) + - [Test live stream](#test-live-stream) - [Plugins & Themes](#plugins--themes) @@ -82,23 +88,23 @@ First, you should use a server or PC with at least 4GB of RAM. Less RAM may lead [the steps](/support/doc/dependencies.md) to install the dependencies. 1) Install [parallel](https://www.gnu.org/software/parallel/) to be able to run tests. -1) Fork the Github repository. +1) Fork the GitHub repository. 1) Run the following commands. ``` -$ git clone https://github.com/Chocobozzz/PeerTube -$ cd PeerTube -$ git remote add me git@github.com:YOUR_GITHUB_USERNAME/PeerTube.git -$ yarn install --pure-lockfile +git clone https://github.com/Chocobozzz/PeerTube +cd PeerTube +git remote add me git@github.com:YOUR_GITHUB_USERNAME/PeerTube.git +yarn install --pure-lockfile ``` Note that development is done on the `develop` branch. If you want to hack on -Peertube, you should switch to that branch. Also note that you have to repeat +PeerTube, you should switch to that branch. Also note that you have to repeat the `yarn install --pure-lockfile` command. When you create a new branch you should also tell to use your repo for upload not default one. To do just do: ``` -$ git push --set-upstream me +git push --set-upstream me ``` Then, create a postgres database and user with the values set in the @@ -115,11 +121,11 @@ Enter password for new role: peertube Then enable extensions PeerTube needs: ``` -$ sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_dev -$ sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_dev +sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_dev +sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_dev ``` -Peertube also requires a running redis server, no special setup is needed for +PeerTube also requires a running redis server, no special setup is needed for this. In dev mode, administrator username is **root** and password is **test**. @@ -132,34 +138,36 @@ You can get a complete PeerTube development setup with Gitpod, a free one-click ### Server side -You can find a documentation of the server code/architecture [here](https://docs.joinpeertube.org/contribute-architecture?id=server-code). - To develop on the server-side: ``` -$ npm run dev:server +npm run dev:server ``` Then, the server will listen on `localhost:9000`. When server source files change, these are automatically recompiled and the server will automatically restart. -### Client side - -You can find a documentation of the client code/architecture -[here](https://docs.joinpeertube.org/contribute-architecture?id=client-code). +More detailed documentation is available: + * [Server code/architecture](https://docs.joinpeertube.org/contribute/architecture#server) + * [Server development (adding a new feature...)](/support/doc/development/server.md) +### Client side To develop on the client side: ``` -$ npm run dev:client +npm run dev:client ``` The API will listen on `localhost:9000` and the frontend on `localhost:3000`. Client files are automatically compiled on change, and the web browser will reload them automatically thanks to hot module replacement. +More detailed documentation is available: + * [Client code/architecture](https://docs.joinpeertube.org/contribute/architecture#client) + + ### Client and server side The API will listen on `localhost:9000` and the frontend on `localhost:3000`. @@ -167,7 +175,7 @@ File changes are automatically recompiled, injected in the web browser (no need and the web server is automatically restarted. ``` -$ npm run dev +npm run dev ``` ### Embed @@ -177,15 +185,15 @@ The generated files (HTML entrypoint and multiple JS and CSS files) are served b The following command will compile embed files and run the PeerTube server: ``` -$ npm run dev:embed +npm run dev:embed ``` ### RTL layout -To test RTL layout using `ar` locale: +To test RTL (right-to-left) layout using `ar` locale: ``` -$ npm run dev -- --ar-locale +npm run dev -- --ar-locale ``` ### Testing @@ -197,32 +205,32 @@ as expected and respect the syntax conventions. They will run upon PR submission See the [dedicated documentation](/support/doc/development/tests.md) to run tests locally. -#### Testing the federation of PeerTube servers +#### Play with a federation of PeerTube servers Create a PostgreSQL user **with the same name as your username** in order to avoid using the *postgres* user. Then, we can create the databases (if they don't already exist): ``` -$ sudo -u postgres createuser you_username --createdb --superuser -$ createdb -O peertube peertube_test{1,2,3} +sudo -u postgres createuser you_username --createdb --superuser +createdb -O peertube peertube_test{1,2,3} ``` Build the application and flush the old tests data: ``` -$ npm run build -$ npm run clean:server:test +npm run build +npm run clean:server:test ``` To run 3 nodes: ``` -$ NODE_APP_INSTANCE=1 NODE_ENV=test npm start -$ NODE_APP_INSTANCE=2 NODE_ENV=test npm start -$ NODE_APP_INSTANCE=3 NODE_ENV=test npm start +NODE_APP_INSTANCE=1 NODE_ENV=test npm start +NODE_APP_INSTANCE=2 NODE_ENV=test npm start +NODE_APP_INSTANCE=3 NODE_ENV=test npm start ``` -Then you will get access to the three nodes at `http://localhost:900{1,2,3}` +Then you will get access to the three nodes at `http://127.0.0.1:900{1,2,3}` with the `root` as username and `test{1,2,3}` for the password. Instance configurations are in `config/test-{1,2,3}.yaml`. @@ -240,13 +248,13 @@ The [REST API documentation](https://docs.joinpeertube.org/api-rest-reference.ht To quickly get a preview of your changes, you can generate the documentation *on the fly* using the following command: ``` -npx redoc-cli serve --watch ./support/doc/api/openapi.yaml +npx @redocly/cli preview-docs ./support/doc/api/openapi.yaml ``` ### Environment variables PeerTube can be configured using environment variables. -See the list on https://docs.joinpeertube.org/maintain-configuration?id=environment-variables +See the list on https://docs.joinpeertube.org/maintain/configuration#environment-variables Additionally to these ones, we provide some environment for dev/test purpose: @@ -255,6 +263,41 @@ Additionally to these ones, we provide some environment for dev/test purpose: * `PEERTUBE_LOCAL_CONFIG`: directory to find the local configuration file (used by web admin) * `NODE_DB_LOG=false`: disable SQL request logging +### Generate/pull translations + +See the [dedicated documentation](/support/doc/development/localization.md) to update PeerTube translations from Weblate or to support a new locale. + +### Release PeerTube + +See the [dedicated documentation](/support/doc/development/release.md) to release a new version of PeerTube. + +### PeerTube packages + +This repository also contains other packages/libraries than PeerTube (embed API, PeerTube types...). +You can see the list on the [dedicated documentation](/support/doc/development/lib.md). + +### CI + +PeerTube uses GitHub actions to run tests every time a commit is pushed or a PR is opened. +You can find more information about these tasks on the [dedicated documentation](/support/doc/development/ci.md). + +### Monitoring + +You can check the content of the client bundle or benchmark the REST API. +To do so, see the [dedicated documentation](/support/doc/development/monitoring.md). + +### Test live stream + +To easily test a live stream on PeerTube: + * Enable live support in web admin configuration + * Create a permanent live on the PeerTube instance + * Get the **RTMP URL** and the **Live stream key** + * Send the live stream to PeerTube using `ffmpeg` using a local video: + +``` +ffmpeg -stream_loop -1 -re -i any-video.mp4 -c copy -f flv rtmp://{RTMP URL}/live/{STREAM KEY} +``` + ## Plugins & Themes -See the dedicated documentation: https://docs.joinpeertube.org/contribute-plugins +See the dedicated documentation: https://docs.joinpeertube.org/contribute/plugins