Commit Graph

75 Commits

Author SHA1 Message Date
Chocobozzz 678ae8abbd
Breaking: only support node 18
Node 16 is not supported anymore

See https://nodejs.org/fr/blog/announcements/nodejs16-eol
2023-10-11 13:59:24 +02:00
Yehuda Deutsch f7882ca3eb Switch from debian bullseye to bookworm 2023-08-17 15:18:21 +02:00
Chocobozzz a5bde7ad60
Fix benchmark script 2023-08-17 15:03:27 +02:00
Chocobozzz 3a4992633e
Migrate server to ESM
Sorry for the very big commit that may lead to git log issues and merge
conflicts, but it's a major step forward:

 * Server can be faster at startup because imports() are async and we can
   easily lazy import big modules
 * Angular doesn't seem to support ES import (with .js extension), so we
   had to correctly organize peertube into a monorepo:
    * Use yarn workspace feature
    * Use typescript reference projects for dependencies
    * Shared projects have been moved into "packages", each one is now a
      node module (with a dedicated package.json/tsconfig.json)
    * server/tools have been moved into apps/ and is now a dedicated app
      bundled and published on NPM so users don't have to build peertube
      cli tools manually
    * server/tests have been moved into packages/ so we don't compile
      them every time we want to run the server
 * Use isolatedModule option:
   * Had to move from const enum to const
     (https://www.typescriptlang.org/docs/handbook/enums.html#objects-vs-enums)
   * Had to explictely specify "type" imports when used in decorators
 * Prefer tsx (that uses esbuild under the hood) instead of ts-node to
   load typescript files (tests with mocha or scripts):
     * To reduce test complexity as esbuild doesn't support decorator
       metadata, we only test server files that do not import server
       models
     * We still build tests files into js files for a faster CI
 * Remove unmaintained peertube CLI import script
 * Removed some barrels to speed up execution (less imports)
2023-08-11 15:02:33 +02:00
Chocobozzz c37e305342
Fix CI tests 2023-06-29 10:19:05 +02:00
Chocobozzz 902b16af03
Breaking: remove node 14 support 2023-05-09 10:02:54 +02:00
Chocobozzz 21609258de Increase timeouts 2023-05-09 08:57:34 +02:00
Chocobozzz 3a0c2a77b1 Enable external plugins to test the PR 2023-05-09 08:57:34 +02:00
Chocobozzz ebd61437c1
Revert matrix for docker build 2023-03-27 09:00:16 +02:00
Chocobozzz 43fe59ae86
Fix docker ci matrix 2023-03-23 08:55:27 +01:00
Chocobozzz d6fcbe8d6d
Try to fix docker build timeout 2023-03-22 09:14:20 +01:00
Chocobozzz ca829e9a83
Deprecate node 14 2023-03-15 09:38:24 +01:00
Chocobozzz 0daaab0c0e
Try to fix github api rate limit 2022-12-29 10:24:06 +01:00
Chocobozzz a47bbfcc7f
Fix docker ci 2022-11-02 14:09:54 +01:00
Chocobozzz 3a58ab452d
Upgrade docker action dep 2022-10-31 09:24:31 +01:00
Chocobozzz 823cc35bb5
Revert "Use node 16 for tests"
This reverts commit 1f45f8b00d.
2022-10-28 17:26:26 +02:00
Chocobozzz 1f45f8b00d
Use node 16 for tests 2022-10-28 17:12:33 +02:00
Chocobozzz 9ab330b90d Use private ACL for private videos in s3 2022-10-24 14:48:24 +02:00
Chocobozzz 8c13fd744f
Update upluad artifacts 2022-10-11 14:36:19 +02:00
Chocobozzz 36305301cb
Set AKISMET_KEY as env 2022-09-28 08:25:46 +02:00
Chocobozzz 14b3e8f445
Fix test after hooks 2022-07-13 11:34:48 +02:00
Chocobozzz 388a31d241
Upgrade CI actions 2022-06-27 15:28:32 +02:00
Chocobozzz 95faf1eaff
Create another test suite for transcoding jobs 2022-02-28 16:02:08 +01:00
Chocobozzz 1087427616
Improve benchmark script CLI options 2022-02-28 15:19:44 +01:00
Chocobozzz 7853a425e4
Job name for docker builds 2022-01-03 14:42:53 +01:00
Chocobozzz 6627dbc957
Move types package in packages/ 2021-12-28 10:18:15 +01:00
Chocobozzz fafc7c3cbd
Update resolve tspaths and enabled CI for types 2021-12-28 08:37:05 +01:00
Chocobozzz 4ff75a3b2c
Deprecate node 12 2021-12-24 13:52:32 +01:00
Chocobozzz fe392059a8
Global server dep update 2021-12-24 13:38:00 +01:00
Chocobozzz b969539c83
Fix types dist paths 2021-12-24 13:28:33 +01:00
Chocobozzz e81193b04b
Use bullseye for production docker image 2021-12-13 15:46:12 +01:00
Chocobozzz 390366472d
Fix benchmark ci 2021-12-03 13:35:23 +01:00
Chocobozzz bdb4cc80c3
Move CI on develop 2021-12-03 10:24:33 +01:00
Chocobozzz 51e9e152f7
Build nightly using github action 2021-12-03 10:14:17 +01:00
Chocobozzz f3fbbf0140
Add docker github action 2021-12-03 10:14:17 +01:00
Chocobozzz b202d007cc
Bumped to version v4.0.0-rc.1 2021-12-03 10:14:17 +01:00
Chocobozzz 1255f22de4
Use node 14 for lighthouse 2021-11-25 15:43:10 +01:00
Chocobozzz 0c5639f4f3
More precise startup benchmark 2021-11-24 15:52:45 +01:00
Chocobozzz 1622e09523
Typo 2021-11-22 15:54:08 +01:00
Chocobozzz 82c2120614
Add startup time benchmark 2021-11-22 15:51:28 +01:00
Chocobozzz 0d22b7ad5f
Use postgres 10 for tests 2021-08-26 10:01:42 +02:00
Chocobozzz 1f6125be8b
Optimize torrent URL update 2021-08-18 09:14:51 +02:00
Jelle Besseling 0305db28c9
Add support for saving video files to object storage (#4290)
* Add support for saving video files to object storage

* Add support for custom url generation on s3 stored files

Uses two config keys to support url generation that doesn't directly go
to (compatible s3). Can be used to generate urls to any cache server or
CDN.

* Upload files to s3 concurrently and delete originals afterwards

* Only publish after move to object storage is complete

* Use base url instead of url template

* Fix mistyped config field

* Add rudenmentary way to download before transcode

* Implement Chocobozzz suggestions

https://github.com/Chocobozzz/PeerTube/pull/4290#issuecomment-891670478

The remarks in question:
    Try to use objectStorage prefix instead of s3 prefix for your function/variables/config names
    Prefer to use a tree for the config: s3.streaming_playlists_bucket -> object_storage.streaming_playlists.bucket
    Use uppercase for config: S3.STREAMING_PLAYLISTS_BUCKETINFO.bucket -> OBJECT_STORAGE.STREAMING_PLAYLISTS.BUCKET (maybe BUCKET_NAME instead of BUCKET)
    I suggest to rename moveJobsRunning to pendingMovingJobs (or better, create a dedicated videoJobInfo table with a pendingMove & videoId columns so we could also use this table to track pending transcoding jobs)
    https://github.com/Chocobozzz/PeerTube/pull/4290/files#diff-3e26d41ca4bda1de8e1747af70ca2af642abcc1e9e0bfb94239ff2165acfbde5R19 uses a string instead of an integer
    I think we should store the origin object storage URL in fileUrl, without base_url injection. Instead, inject the base_url at "runtime" so admins can easily change this configuration without running a script to update DB URLs

* Import correct function

* Support multipart upload

* Remove import of node 15.0 module stream/promises

* Extend maximum upload job length

Using the same value as for redundancy downloading seems logical

* Use dynamic part size for really large uploads

Also adds very small part size for local testing

* Fix decreasePendingMove query

* Resolve various PR comments

* Move to object storage after optimize

* Make upload size configurable and increase default

* Prune webtorrent files that are stored in object storage

* Move files after transcoding jobs

* Fix federation

* Add video path manager

* Support move to external storage job in client

* Fix live object storage tests

Co-authored-by: Chocobozzz <me@florianbigard.com>
2021-08-17 08:26:20 +02:00
Chocobozzz 44364d06d7
Trigger test build for any branch 2021-07-20 15:27:18 +02:00
Chocobozzz dcc30997d1
Trigger a build for any branch 2021-07-20 15:27:17 +02:00
Chocobozzz 29b7426c67
Speedup CI 2021-06-17 10:43:34 +02:00
Chocobozzz bfe6e0d9f7
Add lighthouse to github action 2021-05-27 09:15:29 +02:00
Chocobozzz 4b91bc1525 Reduce pending job waiting 2021-05-07 15:42:23 +02:00
Chocobozzz 3fbc697433
Add next to stats github ci 2021-03-24 18:18:41 +01:00
Chocobozzz 2d5a469427
Add next branch to CI 2021-03-24 18:18:40 +01:00