# Best way to Continuous Integration and Automated Tests

**URL:** https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838
**Category:** Package Management
**Tags:** git, travis, codecov, github, github-actions
**Created:** [September 7, 2021, 11:12pm UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838 "2021-09-07T23:12:57Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![tiago](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tiago/32/22567_2.png) [@tiago](https://discourse.julialang.org/u/tiago)
#### Post date: [September 7, 2021, 11:12pm UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838/1 "2021-09-07T23:12:58Z")

</div>

Hi,  
I have a package called [NeuralFieldEq.jl](https://github.com/tiagoseq/NeuralFieldEq.jl) and I’m having some troubles regarding the continuous integration and test automation.

When I deployed the package I used Coveralls and Travis. However, when the v0.1.1 of the package was released, Travis stopped the builds (my account is free). Since this package was developed within the scope of my thesis, a continuous integration paid solution do not suit my purpose.

I’m searching for other solutions and I found GitHub Actions (free) or Circle-CI (with free minutes renewed monthly). But I have many difficulties on how I setup the `.yml` files, etc, even the integration with Coveralls I don’t know how to do it.

Can someone give me a help? Point out some tutorials, give some hints or explain the easiest way to proper define a CI and automation tests workflow?

Sorry for the noob question, but this is the first time that I’m working with this kind of things.  
Thank you very much,  
Tiago

---

<div class="post-metadata">

### Author: ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)
#### Post date: [September 8, 2021, 12:21am UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838/2 "2021-09-08T00:21:46Z")

</div>

Most Julia packages use Github Actions these days. I would look at [GitHub - invenia/PkgTemplates.jl: Create new Julia packages, the easy way](https://github.com/invenia/PkgTemplates.jl) to help you set it up.

---

<div class="post-metadata">

### Author: ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)
#### Post date: [September 8, 2021, 12:32am UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838/3 "2021-09-08T00:32:23Z")

</div>

> [@tiago](#):
>
> Can someone give me a help? Point out some tutorials, give some hints or explain the easiest way to proper define a CI and automation tests workflow?

If you want just a quick step by step: [Create new package · JuliaNotes.jl](https://m3g.github.io/JuliaNotes.jl/stable/new_package/)

That will automatically setup CI. I never used Coveralls, though.

---

<div class="post-metadata">

### Author: ![dilumaluthge](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dilumaluthge/32/29283_2.png) [@dilumaluthge](https://discourse.julialang.org/u/dilumaluthge)
#### Post date: [September 8, 2021, 1:29am UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838/4 "2021-09-08T01:29:21Z")

</div>

For GitHub Actions CI, you can use this example as a starting point:

> [@Easy workflow file for setting up GitHub Actions CI for your Julia package](https://discourse.julialang.org/t/easy-workflow-file-for-setting-up-github-actions-ci-for-your-julia-package/49765):
>
> Travis CI no longer offers unlimited free minutes for public open-source repositories. However, GitHub Actions continues to offer unlimited free minutes for public open-source repositories. To set up GitHub Actions CI on your repository, simply create a new file named .github/workflows/ci.yml with the following contents. When you do so, you should: Edit the line that looks like '1.3' to reflect the minimum Julia version supported by your package. For example, if your package requires Julia…

---

<div class="post-metadata">

### Author: ![tiago](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tiago/32/22567_2.png) [@tiago](https://discourse.julialang.org/u/tiago)
#### Post date: [September 18, 2021, 3:54pm UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838/5 "2021-09-18T15:54:42Z")

</div>

Hello,  
Sorry for my absence, but I’ve took an ugly crash in the day after writing this post. Broke my foot and had to be operated in order to replace my ankle. Now I’m much better and decided to go back to this topic.

I’ve copy pasted the script that @dilumaluthge posted in that post he mentioned. But I’ve got this error:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/d/9/d9e89561553465b4716dd6bc4cb87d04bfdc5bd4.png)

I’ve installed the `Documenter.jl` in the package environment:  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/d/b/dbab2faf726c35648228d4a76052ccac033c27be.png)  
But the error persists, any help? I’ll create a dummy package from scratch and use the PkgTemplate to generate all the files needed and try to understand the difference between my package.

Probably this is a dummy error, but this is a new world for me and I’m a bit noob yet  
Thanks!!

---

<div class="post-metadata">

### Author: ![sostock](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sostock/32/5546_2.png) [@sostock](https://discourse.julialang.org/u/sostock)
#### Post date: [September 18, 2021, 7:08pm UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838/6 "2021-09-18T19:08:15Z")

</div>

Your package doesn’t have any documentation to build and deploy, so you can just remove the corresponding CI job: just delete the line `docs:` and everything that comes after it in your `ci.yml`.

You also shouldn’t add `Documenter` as a dependency of your package (unless you need it of course). If you want to use Documenter to build the documentation for your package, you should use a separate environment (usually `docs/Project.toml`, which is what the failing CI job tries to access).

---

<div class="post-metadata">

### Author: ![tiago](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tiago/32/22567_2.png) [@tiago](https://discourse.julialang.org/u/tiago)
#### Post date: [September 20, 2021, 9:04am UTC](https://discourse.julialang.org/t/best-way-to-continuous-integration-and-automated-tests/67838/7 "2021-09-20T09:04:58Z")

</div>

Thanks a lot! I’ve already deleted the `Documenter` dependency. I need to study this package management issues more in depth!
