# Continuous Integration with Circle-CI

**URL:** <https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642>\
**Category:** Tooling\
**Tags:** packages\
**Created:** [June 13, 2018, 12:51pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642 "2018-06-13T12:51:40Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![ScottPJones](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scottpjones/32/146_2.png) [@ScottPJones](https://discourse.julialang.org/u/ScottPJones)\
**Post date:** [June 13, 2018, 12:51pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/1 "2018-06-13T12:51:40Z")

</div>

I’ve seen there is a `.circleci/config.yml` for Julia itself, but is there any support yet for using circle-ci instead of or in addition to Travis for testing Julia packages?  
(esp. with scripts to get coverage data pushed to CodeCov, which the default `.travis.yml` scripts do).

---

<div class="post-metadata">

**Author:** ![lobingera](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lobingera/32/211_2.png) [@lobingera](https://discourse.julialang.org/u/lobingera)\
**Post date:** [June 13, 2018, 1:53pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/2 "2018-06-13T13:53:12Z")

</div>

I have not tried this, but you could do a github search and see if you find something matching. Or go over the circle CI [Examples and Guides Overview - CircleCI](https://circleci.com/docs/2.0/examples/#open-source-projects-by-language).

My guess would be, as Circle CI is more on the commercial side (“The First Container Is Free + Each Additional Container Is $50/month”) that only open source with some financial backing is there.

But you can start reading the julia config and see what you can reuse.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [June 13, 2018, 1:58pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/3 "2018-06-13T13:58:57Z")

</div>

This will not help you if you want CircleCI specifically, but if you just want an alternative to Travis, I have an example setup on Gitlab:

> **[Tamas K. Papp / GitlabJuliaDemo.jl · GitLab](https://gitlab.com/tkpapp/GitlabJuliaDemo.jl)**
>
> Example for setting up CI with Julia on Gitlab.

The main advantage is that you can also do CI for private repos.

---

<div class="post-metadata">

**Author:** ![ScottPJones](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scottpjones/32/146_2.png) [@ScottPJones](https://discourse.julialang.org/u/ScottPJones)\
**Post date:** [June 13, 2018, 2:01pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/4 "2018-06-13T14:01:46Z")

</div>

All I was looking for (today) was a way of doing CI and CodeCov on a private Julia repo (for work)

As long as I can do a single private repo for free, I’m golden.

Thanks!

---

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [June 13, 2018, 3:23pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/5 "2018-06-13T15:23:45Z")

</div>

> [@Tamas\_Papp](#):
>
> The main advantage is that you can also do CI for private repos.

I thought Travis has published a second new website where you can also have private repos

> **[Travis CI Documentation](https://docs.travis-ci.com/user/travis-ci-for-private/)**
>
> Travis CI for Private Projects

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [June 13, 2018, 3:33pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/6 "2018-06-13T15:33:31Z")

</div>

I may be missing something, but that looks like a trial (100 free builds).

---

<div class="post-metadata">

**Author:** ![chakravala](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chakravala/32/6832_2.png) [@chakravala](https://discourse.julialang.org/u/chakravala)\
**Post date:** [June 13, 2018, 4:24pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/7 "2018-06-13T16:24:37Z")

</div>

I think there are some CI services that give some number of free builds per month, is that a single use of 100 builds, or is it per month?

---

<div class="post-metadata">

**Author:** ![NHDaly](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhdaly/32/1413_2.png) [@NHDaly](https://discourse.julialang.org/u/NHDaly)\
**Post date:** [August 18, 2018, 6:49pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/8 "2018-08-18T18:49:58Z")

</div>

Also, fwiw, this actually seemed to work just fine for me!:

```julia
# .circleci/config.yml
version: 2
jobs:
  build:
    working_directory: /root/project/Example # Clone into a directory whose name matches your Package.
    docker:
      - image: julia:0.7 # image comes from Docker hub
    steps:
      - checkout
      - run:
          name: Install and Test this package
          command: julia -e 'using Pkg; Pkg.update(); Pkg.clone(pwd()); Pkg.build("Example"); Pkg.test("Example");'

```

---

<div class="post-metadata">

**Author:** ![mauro3](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mauro3/32/292_2.png) [@mauro3](https://discourse.julialang.org/u/mauro3)\
**Post date:** [February 24, 2019, 12:48pm UTC](https://discourse.julialang.org/t/continuous-integration-with-circle-ci/11642/9 "2019-02-24T12:48:41Z")

</div>

I put this together to work with [codecov.io](http://codecov.io) for a private github repo:

```julia
# .circleci/config.yml
version: 2.1
orbs:
  codecov: codecov/codecov@1.0.2 # need to allow 3rd party orbs in project settings on circleci
jobs:
  build:
    working_directory: /root/project/RoecketScience # Clone into a directory whose name matches your Package.
    docker:
      - image: julia:1.1 # image comes from Docker hub
    steps:
      - checkout
      - run:
          name: Install and Test this package
          command: julia -e 'using Pkg; Pkg.update(); Pkg.clone(pwd()); Pkg.build("MyPkg"); Pkg.test("MyPkg", coverage=true);'
      - run:
          name: Process code-coverage
          command: julia -e 'using Pkg; cd(Pkg.dir("MyPkg")); Pkg.add("Coverage"); using Coverage; coverage = process_folder(); LCOV.writefile("coverage-lcov.info", coverage)'
      - codecov/upload:
          file: "coverage-lcov.info"
          token: "..." # get from https://codecov.io/gh/github-name/MyPkg.jl/settings

```

Maybe also needed is a `.codecov.yml` with one line `comment: false`.
