Welcome to mirror list, hosted at ThFree Co, Russian Federation.

MATLAB.gitlab-ci.yml « templates « ci « gitlab « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1468cf9c7c6d935fbcf4d5d6c276c93bf0bfc53b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/ee/development/cicd/templates.html
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/MATLAB.gitlab-ci.yml

# Use this template to build and test your MATLAB project as part of your CI/CD pipeline. 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. The `-batch` option is supported
# in MATLAB R2019a and later.
#
# You can copy and paste one or more jobs in this template into your `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.

# Your runner must use the Docker executor to run MATLAB within a container. The [MATLAB Container on Docker Hub][1]
# lets you run your build using MATLAB R2020b or a later release. If your build requires additional toolboxes, use a
# custom MATLAB container instead. For more information on how to create and use a custom MATLAB container,
# see [Create a Custom MATLAB Container][2].
#
# [1] https://www.mathworks.com/help/cloudcenter/ug/matlab-container-on-docker-hub.html
# [2] https://www.mathworks.com/help/cloudcenter/ug/create-a-custom-matlab-container.html

# The jobs in this template 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

# The `command` job runs MATLAB scripts, functions, and statements. To use the job in your pipeline,
# substitute `mycommand` with the code you want to run.
#
command:
  extends: .matlab_defaults
  script: matlab -batch "mycommand"

# If you specify more than one script, function, or statement, use a comma or semicolon to separate them.
# For example, to run `myscript.m` in a folder named `myfolder` located in the root of the repository,
# you can specify `"mycommand"` like this:
#
# "addpath('myfolder'), myscript"
#
# MATLAB exits with exit code 0 if the specified script, function, or statement executes successfully without
# error. Otherwise, MATLAB terminates with a nonzero exit code, which causes the job to fail. To have the
# job fail in certain conditions, use the [`assert`][3] or [`error`][4] function.
#
# [3] https://www.mathworks.com/help/matlab/ref/assert.html
# [4] https://www.mathworks.com/help/matlab/ref/error.html

# The `test` job runs the MATLAB and Simulink tests in your project. It calls the [`runtests`][5] function
# to run the tests and then the [`assertSuccess`][6] method to fail the job if any of the tests fail.
#
test:
  extends: .matlab_defaults
  script: matlab -batch "results = runtests('IncludeSubfolders',true), assertSuccess(results);"

# By default, the job includes any files in your [MATLAB project][7] that have a `Test` label. If your repository
# does not have a MATLAB project, then the job includes all tests in the root of your repository or in any of
# its subfolders.
#
# [5] https://www.mathworks.com/help/matlab/ref/runtests.html
# [6] https://www.mathworks.com/help/matlab/ref/matlab.unittest.testresult.assertsuccess.html
# [7] https://www.mathworks.com/help/matlab/projects.html

# The `test_artifacts` job runs your tests and additionally generates test and coverage artifacts.
# It uses the plugin classes in the [`matlab.unittest.plugins`][8] package to produce test results
# in JUnit-style XML format and code coverage results in Cobertura XML format. Like the `test` job,
# this job runs all the tests in your project and fails 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"

# You can modify the contents of the `test_artifacts` job depending on your goals. For more
# information on how to customize the test runner and generate various test and coverage artifacts,
# see [Generate Artifacts Using MATLAB Unit Test Plugins][9].
#
# [8] https://www.mathworks.com/help/matlab/ref/matlab.unittest.plugins-package.html
# [9] https://www.mathworks.com/help/matlab/matlab_prog/generate-artifacts-using-matlab-unit-test-plugins.html

# Starting in R2022b, the `build` job runs a build using the MATLAB build tool. You can use this job to run the
# tasks specified in a file named `buildfile.m` in the root of your repository.
#
build:
  extends: .matlab_defaults
  script: matlab -batch "buildtool"

# The job executes the [`buildtool`][10] command to run a build using the default tasks in `buildfile.m`
# as well as all the tasks on which they depend. To run specific tasks instead, specify them as a space-separated
# list in the job. For example, to run the tasks named `task1` and `task2` and their dependencies, substitute
# `"buildtool"` with `"buildtool task1 task2"`.
#
# MATLAB exits with exit code 0 if the build runs successfully. Otherwise, MATLAB terminates with a nonzero
# exit code, which causes the job to fail. For more information about the MATLAB build tool,
# see [Create and Run Tasks Using Build Tool][11].
#
# [10] https://www.mathworks.com/help/matlab/ref/buildtool.html
# [11] https://www.mathworks.com/help/matlab/matlab_prog/create-and-run-tasks-using-build-tool.html