Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
The presence of the
techio.yml file is mandatory at the root of the git repository of a playground.
This file contains the plan of the playground, the references to the playground files, and the technical details to correctly build a playground associated to the repository.
The main section of
techio.yml contains the title and a plan of your playground.
The content and the hierarchical structure of a playground is defined by the plan.
The information required to correctly build and run the technical part of a playground is defined by the projects element.
# The playground title. # type: String title: playground title # Specify a cover for your playground. # This is a small image (jpg/png) that will be displayed # in the playground card. By default, you can also create # a cover.jpg (or cover.png) at the root of your repository cover: /path/to/an/image.jpg # The root of the playground plan. The plan can either be composed of chapters # or lessons. # type: Ordered List of Chapter or Lesson plan: See Chapter or Lesson # The root element of the projects list. # type: Ordered Map of Project projects: See Projects section
A Lesson is displayed as a single page on Tech.io.
# The root element of a Lesson. # type: Ordered List plan: # The lesson title. # type: String - title: The lesson title # The statement content file. The path is relative to the git root # directory. # type: String statement: /path/to/lesson1.md
In our terminology, a chapter is an ordered list of Lessons. Thus, it is the hierarchical level above the concept of lessons. This hierarchical level is optional since playgrounds can only consist of lessons.
A chapter has a title, a description, and contains a list of lesson (plan). The description consists of a few lines of text which describe the purpose of the chapter and are displayed in the table of content.
# The root element of a Chapter. # type: Ordered List plan: # The chapter title. # type: String - default value: Unnamed - title: The chapter title # Few lines of text which describe the purpose of the chapter. # type: String description: This fields contains the description of the chapter. # The root of the lessons plan of this chapter. # type: Ordered Map of Lesson plan: See Lesson
The projects element contains a list of projects. A project contains the technical elements necessary to build and run interactive code section of a lesson.
# The root element of the projects list. # type: Unordered Map projects: # The project id. The project id will be referenced by tests. # type: Unordered Map my-playground: # The root directory of the project. This root path is relative to the # git root directory. The content of this directory will be copied # into the builder source path (see Builder section for more details). # type: String # default value: / root: /path/to/root/sources # The build command can reference a script from your git project, or # a set of commands (e.g: cd /project/target && npm install) that will # be executed in the runner image, at build time. # It allows you to use standard docker images and perform “install” # or “setup” actions in the new images, for instance # fetching dependencies. # It *replaces* the build script that may already exists in your # personalized docker image. Note: you can still call the standard # /project/build script of the image from your own script. # (see Runer reference documentation for more details on build scripts). # type: String buildCommand: cd /project/target && ./my-install-script.sh # The runner image reference. See runner element details for more # information. # type: Ordered Map representing a Runner runner: See Runner
The runner enters in action when a user click on the RUN button inside an interactive programming section in a lesson.
All the technical specification about the creation and the use of a Runner can be found in the Runner Reference Documentation.
# The runner root element. # type: String runner: junit-runner:1.0.0
This additional syntax is also valid:
# The runner root element. # type: Unordered Map runner: # The runner docker image name. It will be downloaded from the docker hub. # type: String name: junit-runner # The docker tag to use for the image # type: String version: 1.0.0
title: My playground title cover: /playgrounds/cover.png plan: - title: My first chapter title description: This is a quick description of my first chapter. plan: - title: Lesson 1 of Chapter 1 statement: /playgrounds/chapter1/lesson1.md - title: Lesson 2 of Chapter 1 statement: /playgrounds/chapter1/lesson2.md - title: My Second chapter title description: This is a quick description of my second chapter. plan: - title: Lesson 1 of Chapter 2 statement: /playgrounds/chapter2/lesson1.md projects: my-java-playground-project: root: /project buildCommand: ./install.sh runner: junit-runner: 1.0.0