Building DMD releases is a complicated process that at the moment only a single member of the D community understands fully. This has led to the problem that currently no 64-bit DMD executable is available as official release (despite it being built and tested on dmd's CIs) or that the sources in the release archives don't allow building DMD. DMD nightly builds currently run hidden once a day and their log is private which lead to frequent breakages of the nightly builds without anyone noticing. A better solution is to follow the LDC model on build the binaries as part of the CI systems on every PR. Hence, this project is about moving the release creation into dmd.
What are rough milestones of this project?
build and publish the Linux builds (tar archive)
build and publish the Linux DEB + RPM build
build and publish the Windows archive
build and publish the Windows installer
build and publish the OSX archive
build and publish the OSX dmg
build and publish FreeBSD archive
publish raw source as archive
code-sign Windows binaries
PGP-sign all releases
Optional extensions:
build official Docker image + setup auto-publish
integrate other third-party extensions (e.g. APT registry)
To be discussed:
whether to upload to GitHub releases or the current S3 bucket
How does this project help the D community?
It will allow to ship a 64-bit DMD executable on Windows. Moreover, it will eliminate the frequent nightly failures and ensure there are always built DMD binaries. Lastly, it will allow anyone in the DMD community to understand and improve the current release setup. Thus, allowing to integrate upcoming changes quickly.
Recommended skills
experience with Bash
experience with CI systems
Optional: experience with Docker
What can students expect to get out of doing this project?
The student will collect a lot of experience with building binary releases on all major platforms.
Moreover, he will learn more DevOps skills and gather experience on best-practices for reliable Continuous Deployment.
Description
Building DMD releases is a complicated process that at the moment only a single member of the D community understands fully. This has led to the problem that currently no 64-bit DMD executable is available as official release (despite it being built and tested on dmd's CIs) or that the sources in the release archives don't allow building DMD. DMD nightly builds currently run hidden once a day and their log is private which lead to frequent breakages of the nightly builds without anyone noticing. A better solution is to follow the LDC model on build the binaries as part of the CI systems on every PR. Hence, this project is about moving the release creation into dmd.
What are rough milestones of this project?
Optional extensions:
To be discussed:
How does this project help the D community?
It will allow to ship a 64-bit DMD executable on Windows. Moreover, it will eliminate the frequent nightly failures and ensure there are always built DMD binaries. Lastly, it will allow anyone in the DMD community to understand and improve the current release setup. Thus, allowing to integrate upcoming changes quickly.
Recommended skills
Optional: experience with Docker
What can students expect to get out of doing this project?
The student will collect a lot of experience with building binary releases on all major platforms. Moreover, he will learn more DevOps skills and gather experience on best-practices for reliable Continuous Deployment.
Point of Contact
@wilzbach @MartinNowak
References
Related projects: