# 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/Julia.gitlab-ci.yml # This is an example .gitlab-ci.yml file to test (and optionally report the coverage # results of) your [Julia][1] packages. Please refer to the [documentation][2] # for more information about package development in Julia. # # Here, it is assumed that your Julia package is named `MyPackage`. Change it to # whatever name you have given to your package. # # [1]: http://julialang.org/ # [2]: https://docs.julialang.org/en/v1/manual/documentation/index.html stages: - test - post # Below is the template to run your tests in Julia .test_template: &test_definition # Uncomment below (and adjust as needed) to run the tests for specific references # only, such as the default branch, a `development` branch, and so on: # rules: # - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # - if: $CI_COMMIT_BRANCH == "development" script: | julia --project -e ' using Pkg; Pkg.instantiate(); Pkg.build(); Pkg.test(; coverage=true);' interruptible: true artifacts: when: always paths: - ./*.cov - ./*/*.cov - ./*/*/*.cov - ./*/*/*/*.cov .coverage: stage: post script: | # Coverage(Tools).jl scans all .jl files but easily fails at that, # so make sure we exclude hidden directories (like the depot, .git, ...) julia -e ' using Pkg Pkg.add("Coverage") using Coverage dirs = filter(entry -> isdir(entry) && !startswith(entry, "."), readdir()) coverage = vcat(map(process_folder, dirs)...) Codecov.submit_local(coverage)' interruptible: true # Name a test and select an appropriate image. # images comes from Docker hub test:1.7: image: julia:1.7 <<: *test_definition test:1.8: image: julia:1.8-rc <<: *test_definition # Maybe you would like to test your package against the development branch: # test:1.1-dev (not sure there is such an image in docker, so not tested yet): # image: julia:v1.1-dev # # ... allowing for failures, since we are testing against the development # # branch: # allow_failure: true # <<: *test_definition # REMARK: Do not forget to enable the coverage feature for your project, if you # are using code coverage reporting above. This can be done by # # - Navigating to the `CI/CD Pipelines` settings of your project, # - Copying and pasting the default `Simplecov` regex example provided, i.e., # `\(\d+.\d+\%\) covered` in the `test coverage parsing` textfield. # Example documentation deployment # pages: # image: julia:0.7 # stage: deploy # script: # - apt-get update -qq && apt-get install -y git # needed by Documenter # - julia -e 'using Pkg; Pkg.clone(pwd()); Pkg.build("MyPackage");' # rebuild Julia (can be put somewhere else I'm sure # - julia -e 'using Pkg; import MyPackage; Pkg.add("Documenter")' # install Documenter # - julia --color=yes docs/make.jl # make documentation # - mv docs/build public # move to the directory picked up by Gitlab pages # artifacts: # paths: # - public # rules: # - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # WARNING: This template is using the `julia` images from [Docker # Hub][3]. One can use custom Julia images and/or the official ones found # in the same place. However, care must be taken to correctly locate the binary # file (`/opt/julia/bin/julia` above), which is usually given on the image's # description page. # # [3]: https://hub.docker.com/_/julia/