Skip to content
This repository was archived by the owner on Oct 1, 2025. It is now read-only.

mathworks/matlab-gitlab-ci-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 

Repository files navigation

Archived Repository Notice

⚠️ Announcement:
This repository has been archived and is no longer maintained. For the latest information on how to run MATLAB® in your GitLab® CI/CD pipeline, see the build component on GitLab CI/CD Catalog.

Use MATLAB with GitLab CI/CD

You can use GitLab CI/CD to build and test your MATLAB project as part of your pipeline. For example, you can identify code issues in your project, run your tests and generate test and coverage artifacts, and package your files into a toolbox.

The MATLAB.gitlab-ci.yml template provides you with jobs that show how to run MATLAB statements, tests, and builds. To run MATLAB code and Simulink® models based on this template, you must use the Docker® executor to run MATLAB within a container. You can use the MATLAB Container on Docker Hub to run your build using MATLAB R2020b or a later release. Alternatively, you can create your own container for MATLAB and other MathWorks® products. For more information on how to create and use a custom MATLAB container, see Create a MATLAB Container Image for Non-Interactive Workflows.

Note: In addition to the Docker executor, GitLab Runner implements other types of executors that can be used to run your builds. See Executors for more information.

MATLAB.gitlab-ci.yml Template

You can access the MATLAB.gitlab-ci.yml template when you create a .gitlab-ci.yml file in the UI.

template

The template includes four jobs:

  • command — Run MATLAB scripts, functions, and statements.
  • test — Run tests authored using the MATLAB unit testing framework or Simulink Test™.
  • test_artifacts — Run MATLAB and Simulink tests, and generate test and coverage artifacts.
  • build — Run a build using the MATLAB build tool.

The jobs in the template use the matlab -batch syntax to start MATLAB. Additionally, they incorporate the contents of a hidden .matlab_defaults job. You need to configure this job before running the command, test, test_artifacts, and build jobs. To configure the job:

  • Specify the name of the MATLAB container image you want to use.
  • Set the MLM_LICENSE_FILE environment variable using the port number and DNS address for your network license manager.
.matlab_defaults:
  image:
    name: mathworks/matlab:latest  # Replace the value with the name of the MATLAB container image you want to use
    entrypoint: [""]
  variables:
    MLM_LICENSE_FILE: 27000@MyLicenseServer  # Replace the value with the port number and DNS address for your network license manager

Examples

Each of these examples shows how to specify the contents of a job in your .gitlab-ci.yml file.

Run a Script

Run the commands in a file named myscript.m in the root of your repository.

command:
   extends: .matlab_defaults
   script: matlab -batch "myscript"

Run Tests

Run the tests in your MATLAB project and fail the build if any of the tests fail.

test:
  extends: .matlab_defaults
  script: matlab -batch "results = runtests('IncludeSubfolders',true), assertSuccess(results);"

Run Tests and Generate Artifacts

Run the tests in your MATLAB project, and produce test results in JUnit-style XML format and code coverage results in Cobertura XML format. Fail the build if any of the tests fail.

test_artifacts:
  extends: .matlab_defaults
  script: |
    cat <<- 'BLOCK' > runAllTests.m
          import matlab.unittest.TestRunner
          import matlab.unittest.Verbosity
          import matlab.unittest.plugins.CodeCoveragePlugin
          import matlab.unittest.plugins.XMLPlugin
          import matlab.unittest.plugins.codecoverage.CoberturaFormat
          suite = testsuite(pwd,'IncludeSubfolders',true);
          [~,~] = mkdir('artifacts')
          runner = TestRunner.withTextOutput('OutputDetail',Verbosity.Detailed);
          runner.addPlugin(XMLPlugin.producingJUnitFormat('artifacts/results.xml'))
          % Replace `pwd` with the location of the folder containing source code
          runner.addPlugin(CodeCoveragePlugin.forFolder(pwd,'IncludingSubfolders',true, ...
          'Producing',CoberturaFormat('artifacts/cobertura.xml')))
          results = runner.run(suite)
          assertSuccess(results);
    BLOCK
    matlab -batch runAllTests
artifacts:
    reports:
      junit: "./artifacts/results.xml"
      coverage_report:
        coverage_format: cobertura
        path: "./artifacts/cobertura.xml"
    paths:
      - "./artifacts"

Run MATLAB Build

Use the MATLAB build tool to run the default tasks in a file named buildfile.m located in the root of your repository, as well as all the tasks on which they depend.

build:
   extends: .matlab_defaults
   script: matlab -batch "buildtool"

See Also

Contact Us

If you have any questions or suggestions, please contact MathWorks® at [email protected].

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published