All Projects → julia-actions → setup-julia

julia-actions / setup-julia

Licence: MIT license
This action sets up a Julia environment for use in actions by downloading a specified version of Julia and adding it to PATH.

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to setup-julia

qodana-action
⚙️ Scan your Java, Kotlin, PHP, Python, JavaScript, TypeScript projects at GitHub with Qodana
Stars: ✭ 112 (+100%)
Mutual labels:  continuous-integration, github-action
bump-everywhere
🚀 Automate versioning, changelog creation, README updates and GitHub releases using GitHub Actions,npm, docker or bash.
Stars: ✭ 24 (-57.14%)
Mutual labels:  continuous-integration, github-action
changed-files
Github action to retrieve all (added, copied, modified, deleted, renamed, type changed, unmerged, unknown) files and directories.
Stars: ✭ 733 (+1208.93%)
Mutual labels:  continuous-integration, github-action
overview
Automate your workflows with GitHub actions for MATLAB.
Stars: ✭ 40 (-28.57%)
Mutual labels:  continuous-integration, github-action
get-cmake
Install and Cache latest CMake and ninja executables for your workflows on your GitHub
Stars: ✭ 52 (-7.14%)
Mutual labels:  continuous-integration, github-action
fabric-beta-publisher-plugin
DEPRECATED: A Jenkins plugin that lets you publish Android apps to Fabric Beta
Stars: ✭ 24 (-57.14%)
Mutual labels:  continuous-integration
BeautifulMakie
https://lazarusa.github.io/BeautifulMakie/
Stars: ✭ 281 (+401.79%)
Mutual labels:  julialang
OmniSci.jl
Julia client for OmniSci GPU-accelerated SQL engine and analytics platform
Stars: ✭ 22 (-60.71%)
Mutual labels:  julialang
landkid
Your friendly neighborhood async merging robot goat.
Stars: ✭ 80 (+42.86%)
Mutual labels:  continuous-integration
xray-action
... a GitHub action to import test results into "Xray" - A complete Test Management tool for Jira.
Stars: ✭ 16 (-71.43%)
Mutual labels:  continuous-integration
FaceDetection.jl
A face detection algorithm using Viola-Jones' rapid object detection framework written in Julia
Stars: ✭ 13 (-76.79%)
Mutual labels:  julialang
nightfall dlp action
GitHub Data Loss Prevention (DLP) Action: Scan Pull Requests for sensitive data, like credentials & secrets, PII, credit card numbers, and more.
Stars: ✭ 46 (-17.86%)
Mutual labels:  github-action
flow-platform-x
Continuous Integration Platform
Stars: ✭ 21 (-62.5%)
Mutual labels:  continuous-integration
FstFileFormat.jl
Julia bindings for the fst format
Stars: ✭ 17 (-69.64%)
Mutual labels:  julialang
hasura-action
GitHub Action wrapping the Hasura CLI
Stars: ✭ 39 (-30.36%)
Mutual labels:  continuous-integration
deoplete-julia
deoplete.nvim source for julia. Providing julia Syntax Completions for julia, in Neovim (deprecated for julia 0.6+)
Stars: ✭ 12 (-78.57%)
Mutual labels:  julialang
github-action-benchmark
GitHub Action for continuous benchmarking to keep performance
Stars: ✭ 592 (+957.14%)
Mutual labels:  github-action
prettier
🔨 Native, blazingly-fast Prettier CLI on Github Actions
Stars: ✭ 19 (-66.07%)
Mutual labels:  continuous-integration
link-snitch
GitHub Action to scan your site for broken links so you can fix them 🔗
Stars: ✭ 50 (-10.71%)
Mutual labels:  continuous-integration
python-test-reporter
DEPRECATED Uploads Python test coverage data to Code Climate
Stars: ✭ 18 (-67.86%)
Mutual labels:  continuous-integration

setup-julia Action

CodeQL Dependabot Status

This action sets up a Julia environment for use in actions by downloading a specified version of Julia and adding it to PATH.

Table of Contents

Usage

Inputs

- uses: julia-actions/setup-julia@v1
  with:
    # The Julia version that will be installed and added as `julia` to the PATH.
    # See "Julia Versions" below for a list of valid values.
    #
    # Warning: It is strongly recommended to wrap this value in quotes.
    #          Otherwise, the YAML parser used by GitHub Actions parses certain
    #          versions as numbers which causes the wrong version to be selected.
    #          For example, `1.0` may be parsed as `1`.
    #
    # Default: '1'
    version: ''

    # The architecture of the Julia binaries.
    #
    # Please note that installing aarch64 binaries only makes sense on self-hosted aarch64 runners.
    # We currently don't run test builds on that architecture, so we cannot guarantee that the input won't break randomly,
    # although there is no reason why it would.
    #
    # Supported values: x64 | x86 | aarch64 (untested)
    #
    # Note: you can use X64, X86, and ARM64 as synonyms for x64, x86, and aarch64, respectively.
    #
    # Defaults to the architecture of the runner executing the job.
    arch: ''

    # Set the display setting for printing InteractiveUtils.versioninfo() after installing.
    #
    # Starting Julia and running InteractiveUtils.versioninfo() takes a significant amount of time (1s or ~10% of the total build time in testing),
    # so you may not want to run it in every build, in particular on paid runners, as this cost will add up quickly.
    #
    # See "versioninfo" below for example usage and further explanations.
    #
    # Supported values: true | false | never
    #
    # true: Always print versioninfo
    # false: Only print versioninfo for nightly Julia
    # never: Never print versioninfo
    #
    # Default: false
    show-versioninfo: ''

Outputs

outputs:
  # The installed Julia version.
  # May vary from the version input if a version range was given as input.
  #
  # Example output: '1.5.3'

  julia-version: ''
  # Path to the directory containing the Julia executable.
  # Equivalent to JULIA_BINDIR: https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_BINDIR
  #
  # Example output: '/opt/hostedtoolcache/julia/1.5.3/x64/bin'
  julia-bindir: ''

Basic

steps:
- uses: actions/[email protected]
- uses: julia-actions/setup-julia@v1
  with:
    version: 1.0.4
- run: julia -e 'println("Hello, World!")'

Julia Versions

You can either specify specific Julia versions or version ranges. If you specify a version range, the highest available Julia version that matches the range will be selected.

Warning: It is strongly recommended to wrap versions in quotes. Otherwise, the YAML parser used by GitHub Actions parses certain versions as numbers which causes the wrong version to be selected. For example, 1.0 may be parsed as 1.

Examples

  • 1.2.0 is a valid semver version. The action will try to download exactly this version. If it's not available, the build step will fail.
  • 1.0 is a version range that will match the highest available Julia version that starts with 1.0, e.g. 1.0.5, excluding pre-releases.
  • ^1.3.0-rc1 is a caret version range that includes pre-releases starting at rc1. It matches all versions ≥ 1.3.0-rc1 and < 2.0.0.
  • ~1.3.0-rc1 is a tilde version range that includes pre-releases starting at rc1. It matches all versions ≥ 1.3.0-rc1 and < 1.4.0.
  • ^1.3.0-0 is a caret version range that includes all pre-releases. It matches all versions ≥ 1.3.0- and < 2.0.0.
  • ~1.3.0-0 is a tilde version range that includes all pre-releases. It matches all versions ≥ 1.3.0- and < 1.4.0.
  • nightly will install the latest nightly build.
  • 1.7-nightly will install the latest nightly build for the upcoming 1.7 release. This version will only be available during certain phases of the Julia release cycle.

Internally the action uses node's semver package to resolve version ranges. Its documentation contains more details on the version range syntax. You can test what version will be selected for a given input in this JavaScript REPL.

The available Julia versions are pulled from versions.json. This file is automatically updated once a day. Therefore it may take up to 24 hours until a newly released Julia version is available in the action.

Matrix Testing

bash is chosen as shell to enforce consistent behaviour across operating systems. Other shells are available but you may have to escape quotation marks or otherwise adjust the syntax.

64-bit Julia only

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        julia-version: ['1.0', '1.2.0', '^1.3.0-rc1']
        os: [ubuntu-latest, windows-latest, macOS-latest]

    steps:
      - uses: actions/[email protected]
      - name: "Set up Julia"
        uses: julia-actions/setup-julia@v1
        with:
          version: ${{ matrix.julia-version }}
      - run: julia -e 'println("Hello, World!")'
        shell: bash

32-bit Julia

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        julia-version: ['1.0', '1.2.0', '^1.3.0-rc1']
        julia-arch: [x64, x86]
        os: [ubuntu-latest, windows-latest, macOS-latest]
        # 32-bit Julia binaries are not available on macOS
        exclude:
          - os: macOS-latest
            julia-arch: x86

    steps:
      - uses: actions/[email protected]
      - name: "Set up Julia"
        uses: julia-actions/setup-julia@v1
        with:
          version: ${{ matrix.julia-version }}
          arch: ${{ matrix.julia-arch }}
      - run: julia -e 'println("Hello, World!")'
        shell: bash

Alternatively, you can include specific version and OS combinations that will use 32-bit Julia:

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        julia-version: ['1.0', '1.2.0', '^1.3.0-rc1']
        os: [ubuntu-latest, windows-latest, macOS-latest]
        # Additionally create a job using 32-bit Julia 1.0.4 on windows-latest
        include:
          - os: windows-latest
            julia-version: ['1.0.4']
            julia-arch: x86

    steps:
      - uses: actions/[email protected]
      - name: "Set up Julia"
        uses: julia-actions/setup-julia@v1
        with:
          version: ${{ matrix.julia-version }}
      - run: julia -e 'println("Hello, World!")'
        shell: bash

versioninfo

By default, only the output of julia --version is printed as verification that Julia has been installed for stable versions of Julia. InteractiveUtils.versioninfo() is run by default for nightly builds.

Starting Julia and printing the full versioninfo takes a significant amount of time (1s or ~10% of the total build time in testing), so you may not want to run it in every build, in particular on paid runners as this cost will add up quickly. However, julia --version does not provide sufficient information to know which commit a nightly binary was built from, therefore it is useful to show the full versioninfo on nightly builds regardless.

You can override this behaviour by changing the input to never if you never want to run InteractiveUtils.versioninfo() or to true if you always want to run InteractiveUtils.versioninfo(), even on stable Julia builds.

Versioning

This action follows GitHub's advice on versioning actions, with an additional latest tag.

If you don't want to deal with updating the version of the action, similiarly to how Travis CI handles it, use latest or major version branches. Dependabot can also be used to automatically create Pull Requests to update actions used in your workflows.

It's unlikely, but not impossible, that there will be breaking changes post-v1.0.0 unless a new major version of Julia is introduced.

You can specify commits, branches or tags in your workflows as follows:

steps:
  - uses: julia-actions/setup-julia@d3ce119a16594ea9e5d7974813970c73b6ab9e94 # commit SHA of the tagged 1.4.1 commit
  - uses: julia-actions/setup-julia@latest  # latest version tag (may break existing workflows)
  - uses: julia-actions/setup-julia@v1      # major version tag
  - uses: julia-actions/[email protected]    # minor version tag
  - uses: julia-actions/[email protected]  # specific version tag

If your workflow requires access to secrets, you should always pin it to a commit SHA instead of a tag. This will protect you in case a bad actor gains access to the setup-julia repo. You can find more information in GitHub's security hardening guide.

Debug logs

You can enable Step Debug Logs for more detailed logs. Note that when debug logs are enabled, a request will be sent to https://httpbin.julialang.org/ip and the runner's IP will be printed to the debug logs.

Third party information

Parts of this software have been derived from other open source software. See THIRD_PARTY_NOTICE.md for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].