TIP: Please make sure to read Getting started with programming tasks first.

You can start with our sample project that can be found on GitHub:

Open sample project.

Download the sample project.

Automatic assessment

It is possible to automatically assess the solution provided by the candidate. Automatic assessment is based on the plan generated by Terraform and code quality measurements based on tflint linter.

Verification tests are performed with Open Policy Agent and rego rules included in the task that and hidden from the candidate during the test. Files containing verification tests will be added to the project after the candidate finishes the test and will be executed during the verification phase. Verification tests result will be used to calculate the final score.

Once the candidate submits their solution, the platform executes verification tests by creating a plan from the files provided by the candidate and then it reads the output of the bats tests included in the task.

DevSkiller project descriptor

Terraform tasks can be configured with the DevSkiller project descriptor file:

  1. Create a devskiller.json file.
  2. Place it in the root directory of your project.

Here is an example project descriptor:

{ "verification": { "testNamePatterns": [ ".*Verification.*" ], "pathPatterns": [ "**verification/verify**" ] }, "terraform": { "configureProvider": [ "aws" ] } }

You can find more details about the devskiller.json descriptor in our documentation.

To define the Terraform specific variables in the descriptor use the following pattern:

  • terraform.configureProvider - a list of providers to configure for the task
  • NOTE: Currently you can use only aws property. More coming soon!

Technical details for Terraform support

A terraform task must include a terraform directory with an empty empty.tf file to ensure that terraform returns no error during the initialization of the task on the platform. This directory is also a place where a candidate provides their solution code to be evaluated.

There is no need to provide a configuration for the terraform provider (e.g. provider "aws" {...} stanza), as all configuration is provided by the platform and uses read-only credentials with a limited scope and privileges.

Did this answer your question?