Newer
Older
# Taken an adapted from gitlab's example repos:
# https://gitlab.com/gitlab-examples/julia
# 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
JULIALIB_REGISTRY_IMAGE: $CI_REGISTRY/caosdb/src/caosdb-julialib/testenv:$CI_COMMIT_REF_NAME
image: $JULIALIB_REGISTRY_IMAGE
# Only check style for Julia 1.6 since support for 1.0 may be dropped anyway
code-style:
image: julia:1.6
tags: [ docker ]
script:
# install JuliaFormatter
- julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter"))'
# try and format the files
- julia -e 'using JuliaFormatter; format(".", verbose=true)'
# check the git diff for possible changes due to the formatting
- julia -e '
@error "Some files have not been formatted !!!";
write(stdout, out);
exit(1);
# Install libcaosdb in docker image
setup:
tags: [ cached-dind ]
image: docker:20.10
stage: setup
script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
- docker pull $JULIALIB_REGISTRY_IMAGE || true
- docker build
--file .docker/Dockerfile
--pull
--tag $JULIALIB_REGISTRY_IMAGE .
- docker push $JULIALIB_REGISTRY_IMAGE
# Use `docker` runners
tags: [ docker ]
# Uncomment below if you would like to run the tests on specific
# references only, such as the branches `master`, `development`,
# etc.
# only:
# - master
# - development
script:
- .docker/install_cpplib.sh
- export LD_LIBRARY_PATH=/root/.local/lib:$LD_LIBRARY_PATH
# Let's run the tests. Substitute `coverage = false` below, if you
# do not want coverage results.
- julia -e 'using Pkg; Pkg.add(path=pwd());
Pkg.build("CaosDB");
Pkg.test("CaosDB"; coverage = true)'
# Comment out below if you do not want coverage results.
- julia -e 'using Pkg; Pkg.add("Coverage");
import CaosDB;
cd(joinpath(dirname(pathof(CaosDB)), ".."));
using Coverage; cl, tl = get_summary(process_folder());
println("(", cl/tl*100, "%) covered")'
# 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:
tags: [ docker ]
- julia -e 'using Pkg; Pkg.add(path=pwd()); Pkg.build("CaosDB");' # rebuild Julia (can be put somewhere else I'm sure)
- julia -e 'using Pkg; import CaosDB; 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
only:
- main
# 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/