Codio projects/assignments are mounted to software configuration templates, known as Codio stacks.
You can use our pre-configured stacks or create your own. This template approach makes Codio easy to use, configure and adapt.
Codio’s templates deliver fully preconfigured servers in less than 5 seconds, no matter how complex the configuration.
What is a stack?
It is very important to understand how Stacks work in Codio, especially when working with courses. Incorrect usage can result in a project working when being edited but failing when assigned to a course.
A stack refers to the software configuration of a project server (Box). This incorporates everything on the server outside the code workspace (
/home/codio/workspace) that you see in the IDE's file tree.
You can snapshot a box's stack at any point and add it to the Stacks template library as we explain later.
How a Codio project works.
When you create a new Codio project, course assignment or book, you always specify a stack. The specified stack will contain the operating system (always) and other components such as languages, databases and tools.
You will often want to make changes to the software on your server. Any such changes you, or an application makes outside the workspace folder represents a stack change. Whether such changes are made using
sudo apt-get install, manually editing a config file, using Codio's Install Software packages or changes to a database due to application usage etc., these changes all represent stack modifications.
Any modifications you make will work fine on the project you are working on as the owner, but as soon as you assign that project or assignment to a course of students, the modifications will not be transferred.
In order to address this, you need to ensure that any project with a modified stack first has a clean stack created that includes your modifications and that the project points to that clean stack.
The process for creating a stack and switching the project to point to the new stack is straightforward.
For more information and detail, check out our documentation here