Contents

🔖 DevOPs for Julia

Build automation software, Infrastructure management, Packaging, Release engineering/ management tools, Software configuration management (SCM) software, Software Quality: Quality-Analysis (QA), continuous integration (CI), continuous delivery (CD), Test-Driven-Development (TDD), Behaviour-Driven-Development (BDD), Documentation Driven Development (DDD), Unit testing, et al. 1

See also

  • 🏚️ means the package may not support current versions of Julia.
  • 🏗️ means the package may be a WIP.

Installing Julia

  • jill.py :: Python port of the jill installer.
  • jill :: Command line installer of the Julia Language for Linux and MacOS.
  • JuliaVM :: Simple bash script to manage multiple Julia environments. Inspired by nvm and npm.
  • Official Julia binaries
  • Repology tracks versions of julia across more than 120 package repositories.

Developing Julia packages

Package/Infrastructure management tools and Documentation

Websites:

Packages:

  • Compat.jl :: A package for cross-version compatibility between old Julia and the new - takes care of syntax breakage and provides compatibility constructs that will work in both versions without warnings.
  • Kip.jl :: An Python-like, alternative module system for Julia.
  • Pkg.jl :: Version 3 of package manager for Julia. Documentation.
  • PkgSkeleton.jl :: Generate Julia package skeletons using a simple template system.
  • PkgTemplates.jl :: Create new Julia packages, the easy way. Include templaye files for GitHub / GitLab CI.
  • PkgUtils.jl by @arnavs :: Some small utilities to help with Julia packages
  • Registrator.jl :: Julia package registration bot.
  • Requires.jl :: Lazy code loading for Julia.
  • VersionParsing.jl :: flexible VersionNumber parsing in Julia.
WIP or may not work
  • 🏗️ PkgDev.jl :: Julia Package Development Kit.
  • 🏚️ attobot :: Julia package release bot. Use Registrator.jl now.
  • 🏚️ DeclarativePackages.jl :: (jdp for short), allows the project to declaratively specify which Julia packages are being used, with exact version or commit details.
  • 🏚️ EasyPkg.jl :: A Julia package to simplify package development.
  • 🏚️ Help.jl :: Reverse documentation for Julia.
  • 🏚️ julia-require :: Macros to make loading (and reloading) files in Julia easier.
  • 🏚️ JuliaPackageMirrors :: An organization that archives of all registered Julia packages.
  • 🏚️ Julz.jl :: Opinionated Framework for Developing Packages.
  • 🏚️ METADATA.jl :: The official set of Julia packages. Replaced by General registry.
  • 🏚️ MetadataTools.jl :: Functionality to analyze the structure of Julia’s METADATA repository.
  • 🏚️ mirror-updater :: Update script for JuliaPackageMirrors.
  • 🏚️ NettleBuilder :: BinaryBuilder repo for libnettle.
  • 🏚️ PackageEvaluator.jl :: The Julia package evaluator.
  • 🏚️ PkgUtils.jl @johnmyleswhite :: Tools for analyzing Julia packages.
  • 🏚️ PrivateModules.jl :: Julia package mirror.

Prebuilt Binaries

See Julia Packaging team. The binary repository is called Yggdrasil.

  • BinaryBuilder.jl :: Binary Dependency Builder for Julia.
  • BinaryProvider.jl :: A reliable binary provider for Julia.
  • BinDeps.jl :: Tool for building binary dependencies for Julia modules.
  • Conda.jl :: Conda managing Julia binary dependencies. e.g. for IJulia.jl and PyPlot.jl.

Build Julia Executables

Julia developement helpers

Bridging pre-1.0 Julia code to 1.0+.

WIP or may not work
  • 🏚️ FemtoCleaner.jl :: The FemtoCleaner app cleans your julia projects by upgrading deprecated syntax, removing version compatibility workarounds and anything else that has a unique upgrade path. This app exist to smooth the transition from Julia version 0.6 to 0.7(1.0+).
  • 🏚️ HackThatBase.jl :: A helper tool to reload and test modifications to base without recompiling the full system image.
  • 🏚️ PkgSearch.jl :: A Julia REPL utility for package discovery.
  • 🏚️ PkgVerifierPrototype :: Julia package verifier prototype.

Test-driven develpment

See also

Packages

  • Coverage.jl :: Tracking code testing coverage and memory usage and optionally upload them to online services like Coveralls or Codecov. Its base library is CoverageBase.jl.
  • Jive.jl :: run your test in parallel. Also supports watch folder function.
  • Mocking.jl : Allows temporary overwriting of Julia methods for testing purposes.
  • Watcher.jl:: Auto-run unit tests every time a file gets saved
WIP or may not work
  • 🏚️ BaseTestDeprecated.jl :: Provides the Base.Test functionality removed in Julia v0.5.
  • 🏚️ Debug.jl :: Prototype interactive debugger for Julia.
  • 🏚️ FactCheck.jl :: Midje-like testing framework written for Julia.
  • 🏚️ Fixtures.jl :: provides fixtures, mocks, matchers and patching to improve your tests with Julia.
  • 🏚️ Jig.jl :: Testing framework for Julia.
  • 🏚️ JLTest :: A unittest framework for Julia (inspired by Python’s unittest).
  • 🏚️ JulieTest.jl :: A Julia testing framework inspired by javascript’s Mocha. See the Wiki
  • 🏚️ microcoverage :: This module computes code coverage for a Julia program at a more fine-grained level than the built-in coverage feature. Specifically, it provides coverage counts for each branch of the ||, && and ?: operators where they occur. It also counts the number of invocations to statement-functions.
  • 🏚️ PackageTesting.jl :: A standard for testing Julia packages.
  • 🏚️ RunTests.jl :: A test running framework for Julia that extends Base.Test
  • 🏚️ Saute.jl :: is another testing framework for Julia.
  • 🏚️ testfast.jl :: Automatically finds test files and runs them.
  • 🏚️ Fuzz.jl :: A naive fuzzer that can generate bugs.

Logging

Use Julia’s logging facilities instead.

WIP or may not work
  • 🏚️ Log4jl.jl :: A comprehensive and flexible logging framework for Julia programs.
  • 🏚️ Logging.jl :: The Logging module.
  • 🏚️ LogMover.jl
  • 🏚️ Lumberjack.jl :: A logging library by Westley Hennigh.
  • 🏚️ Stage.jl :: has stage macros, checkpoints and loggers for Julia.

Regression Testing

Continuous integration (CI) providers

Travis

WIP or may not work

Sadly, Travis does not love opensource anymore.

  • 🏚️ Travis-CI build server for Julia.
  • 🏚️ TestDocs.jl :: A test package to try to automatically build docs on travis.
  • 🏚️ TravisTest.jl :: Repository for testing Julia support at the Travis Continuous Integration (CI) service.
  • 🏚️ julia-helper :: Git hook scripts to help Julia developers with optional Travis CI support.

Gitlab-CI

  • GitlabJuliaDemo.jl :: A minimal example for setting up CI with Julia on Gitlab. The blog post describing how a Julia package repo in Gitlab can be setup with continuous integration and coverage summary. A sample CI file .gitlab-ci.yml is here.

GitHub

GitHub actions for Julia. A sample CI file can be accessed here.

Containers-Virtualization

Virtualization

WIP or may not work
  • 🏚️ julia-vagrant :: Packer/Vagrant script recipes for making virtual machines (VM’s) - create Vagrant boxes and Openstack images for performing builds and tests of Julia.
  • 🏚️ RudeOil.jl :: A package to easily interact with docker and docker-machine.

Sandbox

  • Playground.jl :: A Julia-lang environment builder (like python’s virtualenv) package to create Julia sandboxes, similar to python virtual environments.
  • 🏚️ JDock :: An IJulia sandboxed by Docker containers.

Julia for shell scripting

Shell scripting

Administrative scripting with Julia :: A guide for writing shell scripts in Julia.

  • Homebrew.jl :: OSX Binary dependency provider for Julia.
  • LibALPM.jl :: Wrapper for libalpm, the ArchLinux package manager.
  • WinRPM.jl :: RPM-md processing library to crosscompile code for Windows.
WIP or may not work
  • 🏚️ APT.jl :: A module to manipulate Debian Advanced Package Tool (APT). It comes with pnlt, an executable that allows to manage package name lists.
  • 🏚️ DebbyPacker.jl :: Set of scripts to easily create debian packages.
  • 🏚️ Nix.jl :: Nix package manager for Julia.

Build automation

WIP or may not work
  • 🏚️ Jake.jl :: Rake for Julia.
  • 🏚️ jlbuild :: A bot that controls the julia buildbots to build releases and perform some additional continous integration on secondary platforms. Ping (@jlbuild) in a comment, PR, issue, etc… and this GitHub comment-based interface to testing buildbots will build the relevant Julia version on all platforms, post download links and even execute small chunks of code across those platforms.
  • 🏚️ Juke.jl :: make in Julia.
  • 🏚️ julia-ansible-scripts :: Various julia ansible scripts for provisioning servers, buildbots etc…

  1. Julia.jl is under COPYRIGHT © 2012-Now SVAKSHA, dual-licensed for the data (ODbL-v1.0+) and the software (AGPLv3+), respectively. ↩︎