Release Engineering and Release Principles Flashcards
What are the 3 steps of the release cycle
- intergration
- Build
- Deployment.
What is a build system?
Describes how a source code is translated into a deliverable. It basically a makefile, whihc is considered a recipe to build the program with different files
The two steps of a makefile
- Expressing dependencies
- writing recipes
What is -c and : in a makefile
-c is compile or assemble the source files, but not linking
: is a dependency
program : random.o input.o main.o
<tab>gcc -o program random.o input.o main.o
random.o : random.c
<tab>gcc -c random.c
input.o : input.c
<tab>gcc -c input.c
main.o : main.c
<tab>gcc -c main.c
</tab></tab></tab></tab>
What are release engineers
Release engineers are concerned with micro (individual) and macro (organizational) aspects of build systems
What is a micro build and macro-build
Micro-build: Concerns about the behaviour of a build system within a single execution
Macro-build: Concerns about how to best provision a fleet of build resources
Static analysis in build systems
Static analysis and builds:
Static analysis can be triggered with the build command (e.g., Google’s ErrorProne)
Scan the source code or byte code for common bugs like resource leaks and dead code
What is a nightly build
Builds are often on a schedule:
Typically, developers work during a day, committing their changes that fix bugs and add new features
At night time, while developers are sleeping, a build is executed to produce deliverables with the day’s changes
Why do build systems need maintenance
As source code changes, occasionally the build system will need to be updated
Neglected build maintenance makes the build produce incorrect results
Build thinks it’s finished when it hasn’t!
Best case: broken builds
Worst case: weird bugs in the field!