Development infrastructure

Updated 4 años ago

Source code

MuseScore source code is hosted on GitHub.

Continuous integration

Each pull request code is built on GitHub Actions for all platforms (Windows, Linux, and macOS), this way we make sure that the build is not broken.
It also checks the style of the code and runs various tests.
You can see these builds on the pull request page.
If you are logged in to GitHub, you can download the built builds (artifacts) for testing.
The artifact archive also contains various service data that was generated during the build.
Build workflows are located in the .github/workflows directory
The builds scripts are in build/ci directory.

Automated development builds

We used to call them "nightly builds" but they aren't so much "nightly" anymore.
GitHub Actions is used to create development builds for all platforms (Windows, Linux, and MacOS) for the active branches. The packages are uploaded via FTP on https://ftp.osuosl.org/pub/musescore-nightlies/. Only the last 40 "nightlies" are kept there.

File hosting

The MuseScore binaries for stable are hosted by GitHub releases
https://github.com/musescore/MuseScore/releases
And nightly builds are hosted by Oregon State University Open Source Lab (OSUOSL). We have two shares there, https://ftp.osuosl.org/pub/musescore-nightlies/ and https://ftp.osuosl.org/pub/musescore/.
For some other resources, MuseScore also has an Amazon Web Services (AWS) account and uses their Simple Storage Service (S3). The MuseScore Connect HTML page is hosted on S3, also MuseScore translations, as available in the resource manager, are hosted on S3. We also use S3 to host libraries (Qt and other dependencies) or tools (wkhtml2pdf) used to build MuseScore, generate PDF handbook etc...

Mark issue as fixed automatically

GitHub can send a POST HTTP request to any URL. MuseScore.org uses this feature to receive notification of every new commit on the branches of the Git repository. If the commit message (not the PR title) starts with "fix #xxxxx", with xxxxx the issue number in the issue tracker, the issue will be marked as fixed automatically (and as closed 14 days after the last update to it).

Continuous translation and resource manager

We're now using GitHub Actions to run a tx2s3 job periodically (every 15 minutes). The process takes TS files from Transifex converts them to QM files, bundles thjose into ZIP archives, one per language, and uploads those to S3. The Resource Manager in MuseScore connects to S3 to get the latest language updates.
Here is the process to switch translations from one release to another release: https://docs.google.com/document/d/1KdhLVp8mFlFfxBsIiXHRd_lQMlFH7j3ol1X…

Handbook as PDF

The MuseScore handbook is written and translated on musescore.org. We also offer it as a PDF. The PDFs are hosted by OSUOSL and created daily by Travis-CI's cron capabilities (starting at 16:30 GMT, finishing some 20 minutes later) , using https://github.com/musescore/handbook2PDF