bigbluebutton-Github/build
prlanzarin 0368a677a6 build(bbb-webhooks): v3.0.0-beta.3
- Bump bbb-webhooks to v3.0.0-beta.3. The full v3.0.x changelog can be
   found at: https://github.com/bigbluebutton/bbb-webhooks/blob/v3.0.0-beta.3/CHANGELOG.md#changelog
 - Transition from `npm install` to `npm ci`
 - Adjust configs that changed paths (`hooks.getRaw`, `log.filename`)
 - Omit `.git` directory from the final package

```
  # CHANGELOG

  All notable changes to this project will be documented in this file.

  ### v3.0.0-beta.3

  * build: bullmq@4.17.0, bump transitive deps

  ### v3.0.0-beta.2

  * fix(webhooks): re-implement includeEvents/excludeEvents

  ### v3.0.0-beta.1

  * fix(xapi): ensure the correct lrs_endpoint is used
  * feat(xapi): add suport for meta_xapi-create-end-actor-name

  ### v3.0.0-beta.0

  * feat(test): add support for modular test suites
  * feat(test): add xAPI test suite
  * refactor(test): remove nock as a dependency
  * fix(test): restore remaining out/webhooks tests
  * fix(xapi): set chat message statements timestamp to ISO format
  * fix: add Redis disconnection handling

  ### v3.0.0-alpha.1

  * !refactor: application rewritten to use a modular input/processing/ouput system
  * !refactor: modernize codebase (ES6 imports, Node.js >= 18 etc.)
  * !refactor(webhooks): the webhooks functionality was rewritten into an output module
  * !refactor(webhooks): hook IDs are now UUIDs instead of integers
  * !refactor: new logging system (using Pino)
  * !refactor: migrate node-redis from v3 to v4
  * !refactor: new queue system (using Bullmq)
  * refactor(webhooks): replace request with node-fetch
  * refactor: replace sha1 dependency with native code
  * feat: new xAPI output module with support for multitenancy
      - Implements https://github.com/gaia-x-dases/xapi-virtual-classroom
      - For more information: (README.md)[src/out/xapi/README.md]
  * feat(events): add support for poll events
  * feat(events): add support for raise-hand events
  * feat(events): add support for emoji events
  * feat(events): add user info to screenshare events
  * feat(events): add support for audio muted/unmuted events
  * feat: add Prometheus instrumentation
  * feat: add JSDoc annotations to most of the codebase
  * feat: log to file
  * feat: add support for multiple checksum algorithms (SHA1,...,SHA512)
  * fix(events): user-left events are now emitted for trailing users on meeting-ended events
  * build: add docker-compose and updated Dockerfile examples
```
2024-01-09 14:19:04 +00:00
..
packages-template build(bbb-webhooks): v3.0.0-beta.3 2024-01-09 14:19:04 +00:00
.gitignore
bbb-ci.png
change_detection.sh use placeholder files during change detection 2021-10-19 21:06:09 +00:00
deb-helper.sh build: Recover SERVLET_DIR definition deb-helper.sh 2023-08-17 11:00:22 -04:00
get_external_dependencies.sh
opts-global.sh
package-names.inc.sh build: rename bbb-graphql-actions-adapter-server to bbb-graphql-actions 2023-12-14 10:59:10 -05:00
push_packages.sh
README.md add link to dockerfile repo in documentation 2021-08-13 13:39:52 +02:00
setup-inside-docker.sh build-conf: Remove Kurento dependency; Run on Ubuntu 22.04 2023-04-25 15:08:36 -04:00
setup.sh Merge 2.7 into Develop 2023-08-04 16:47:23 -03:00

build

build scripts for packaging bigbluebutton.

This directory contains scripts for the new open-source Gitlab-CI based build system, which shall replace the legacy non-public Jenkins based process. The build scripts in packages-template have been adapted from the old system, and still have room for improvement / cleanup.

build locally

You can build packages locally. Docker is required to be installed on your machine.

First, get the external dependencies (this can be migrated to git submodules once the legacy CI system has been retired):

./build/get_external_dependencies.sh

For example, to build the bbb-html5 package, run the following command from the repository's root directory.

./build/setup.sh bbb-html5

The package will be put into the artifacts/ subdirectory.

Note that this will pull in the required Docker image from a remote server. If you want to build the container yourself, get the Dockerfile from the repo, build it locally and change the image url in .gitlab-ci.yml to the locally built one.

build using CI

Diagram showing the CI build process

The CI is defined by the file .gitlab-ci.yml in the root directory of this repo.

In CI, the build process is done in four stages:

  1. The first stage determines the last commit that changed each package, and all commits since that made no change to the package. The debian repository server is then queried, to see whether a package is already available for any of those commits. If yes, the package version is written to a file called packages-to-skip.txt.
  2. The second steps pulls in external dependencies. This could be later changed to use git submodules. As of now, that would break the old CI, therefore this step exists.
  3. Debian packages are built in parallel for each component. Packages listed in packages-to-skip.txt are not build (see stage 1). A bigbluebutton meta-package is also created. This package depends on the exact versions of the other core packages, e.g. either packages with the same commit hash (for those that have been built), or the respective version listed in packages-to-skip.txt.
  4. Packages are uploaded to the debian repository server. The endpoint on the repo server also receives the branch name, and generates/updates that branch's repository with all relevant (uploaded and reused) packages.

The repo server software can be found at https://gitlab.senfcall.de/senfcall-public/ci-repo-upload .