mirror of
https://github.com/julia-actions/setup-julia.git
synced 2026-02-13 11:36:54 +08:00
Compare commits
1 Commits
releases/v
...
windows-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
20e957a751 |
7
.github/dependabot.yml
vendored
7
.github/dependabot.yml
vendored
@@ -1,7 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: gitsubmodule
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
2
.github/workflows/checkin.yml
vendored
2
.github/workflows/checkin.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: "npm ci"
|
||||
run: npm ci --legacy-peer-deps
|
||||
run: npm ci
|
||||
|
||||
- name: "npm run build"
|
||||
run: npm run build
|
||||
|
||||
33
.github/workflows/example-builds-defaultarch.yml
vendored
33
.github/workflows/example-builds-defaultarch.yml
vendored
@@ -1,33 +0,0 @@
|
||||
name: Example builds (default arch)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: ['main', 'master', 'releases/*']
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
julia-version: ['1']
|
||||
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1.0.0
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: |
|
||||
npm install --legacy-peer-deps
|
||||
npm run build
|
||||
npm run pack
|
||||
|
||||
- name: "Set up Julia"
|
||||
id: setup-julia
|
||||
uses: ./
|
||||
with:
|
||||
version: ${{ matrix.julia-version }}
|
||||
- run: julia --version
|
||||
- run: julia --compile=min -O0 -e 'import InteractiveUtils; InteractiveUtils.versioninfo()'
|
||||
4
.github/workflows/example-builds-nightly.yml
vendored
4
.github/workflows/example-builds-nightly.yml
vendored
@@ -13,7 +13,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
julia-version: [nightly, 1.8-nightly]
|
||||
julia-version: [nightly, 1.6-nightly]
|
||||
julia-arch: [x64, x86]
|
||||
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||
# 32-bit Julia binaries are not available on macOS
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: |
|
||||
npm install --legacy-peer-deps
|
||||
npm install
|
||||
npm run build
|
||||
npm run pack
|
||||
|
||||
|
||||
3
.github/workflows/example-builds.yml
vendored
3
.github/workflows/example-builds.yml
vendored
@@ -4,7 +4,6 @@ on:
|
||||
push:
|
||||
branches: ['main', 'master', 'releases/*']
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
@@ -25,7 +24,7 @@ jobs:
|
||||
|
||||
- name: "Install dependencies"
|
||||
run: |
|
||||
npm install --legacy-peer-deps
|
||||
npm install
|
||||
npm run build
|
||||
npm run pack
|
||||
|
||||
|
||||
44
.github/workflows/windows-tests.yml
vendored
Normal file
44
.github/workflows/windows-tests.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
name: Windows Benchmark
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
installer:
|
||||
name: Installer
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Download
|
||||
run: curl -O https://julialang-s3.julialang.org/bin/winnt/x64/1.5/julia-1.5.3-win64.exe
|
||||
shell: bash
|
||||
|
||||
- name: Install
|
||||
run: |
|
||||
Start-Process -FilePath julia-1.5.3-win64.exe -ArgumentList "/SILENT /dir=C:\Julia" -NoNewWindow -Wait
|
||||
|
||||
- name: Add to path
|
||||
run: |
|
||||
echo "C:\Julia\bin" >> $GITHUB_PATH
|
||||
shell: bash
|
||||
|
||||
- run: julia --version
|
||||
|
||||
archive:
|
||||
name: Archive
|
||||
runs-on: windows-latest
|
||||
|
||||
steps:
|
||||
- name: Download
|
||||
run: curl -O https://julialang-s3.julialang.org/bin/winnt/x64/1.5/julia-1.5.3-win64.zip
|
||||
shell: bash
|
||||
|
||||
- name: Install
|
||||
run: |
|
||||
[System.IO.Compression.ZipFile]::ExtractToDirectory('julia-1.5.3-win64.zip', 'C:\Julia')
|
||||
|
||||
- name: Add to path
|
||||
run: |
|
||||
echo "C:\Julia\julia-1.5.3\bin" >> $GITHUB_PATH
|
||||
shell: bash
|
||||
|
||||
- run: julia --version
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,3 @@
|
||||
node_modules/
|
||||
__tests__/runner/*
|
||||
!dist/
|
||||
dist/
|
||||
|
||||
18
README.md
18
README.md
@@ -38,15 +38,9 @@ This action sets up a Julia environment for use in actions by downloading a spec
|
||||
|
||||
# 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
|
||||
#
|
||||
# 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.
|
||||
# Default: x64
|
||||
arch: ''
|
||||
|
||||
# Set the display setting for printing InteractiveUtils.versioninfo() after installing.
|
||||
@@ -109,7 +103,7 @@ You can either specify specific Julia versions or version ranges. If you specify
|
||||
- `^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.
|
||||
- `1.6-nightly` will install the latest nightly build for the upcoming 1.6 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](https://github.com/npm/node-semver#advanced-range-syntax) contains more details on the version range syntax. You can test what version will be selected for a given input in this JavaScript [REPL](https://repl.it/@SaschaMann/setup-julia-version-logic).
|
||||
|
||||
@@ -129,7 +123,7 @@ jobs:
|
||||
matrix:
|
||||
julia-version: ['1.0', '1.2.0', '^1.3.0-rc1']
|
||||
os: [ubuntu-latest, windows-latest, macOS-latest]
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1.0.0
|
||||
- name: "Set up Julia"
|
||||
@@ -155,7 +149,7 @@ jobs:
|
||||
exclude:
|
||||
- os: macOS-latest
|
||||
julia-arch: x86
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1.0.0
|
||||
- name: "Set up Julia"
|
||||
@@ -182,7 +176,7 @@ jobs:
|
||||
- os: windows-latest
|
||||
julia-version: ['1.0.4']
|
||||
julia-arch: x86
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1.0.0
|
||||
- name: "Set up Julia"
|
||||
|
||||
@@ -6,9 +6,9 @@ inputs:
|
||||
description: 'The Julia version to download (if necessary) and use. Example: 1.0.4'
|
||||
default: '1'
|
||||
arch:
|
||||
description: 'Architecture of the Julia binaries. Defaults to the architecture of the runner executing the job.'
|
||||
description: 'Architecture of the Julia binaries. Defaults to x64.'
|
||||
required: false
|
||||
default: '${{ runner.arch }}'
|
||||
default: 'x64'
|
||||
show-versioninfo:
|
||||
description: 'Display InteractiveUtils.versioninfo() after installing'
|
||||
required: false
|
||||
@@ -19,7 +19,7 @@ outputs:
|
||||
julia-bindir:
|
||||
description: 'Path to the directory containing the Julia executable. Equivalent to JULIA_BINDIR: https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_BINDIR'
|
||||
runs:
|
||||
using: 'node16'
|
||||
using: 'node12'
|
||||
main: 'dist/index.js'
|
||||
branding:
|
||||
icon: 'download'
|
||||
|
||||
5207
dist/index.js
vendored
5207
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
BIN
dist/unzip
vendored
BIN
dist/unzip
vendored
Binary file not shown.
16
lib/installer.js
generated
16
lib/installer.js
generated
@@ -32,11 +32,7 @@ const osMap = {
|
||||
};
|
||||
const archMap = {
|
||||
'x86': 'i686',
|
||||
'X86': 'i686',
|
||||
'x64': 'x86_64',
|
||||
'X64': 'x86_64',
|
||||
'aarch64': 'aarch64',
|
||||
'ARM64': 'aarch64'
|
||||
'x64': 'x86_64'
|
||||
};
|
||||
// Store information about the environment
|
||||
const osPlat = os.platform(); // possible values: win32 (Windows), linux (Linux), darwin (macOS)
|
||||
@@ -128,19 +124,15 @@ function getNightlyFileName(arch) {
|
||||
return `julia-latest${versionExt}.${ext}`;
|
||||
}
|
||||
function getFileInfo(versionInfo, version, arch) {
|
||||
const err = `Could not find ${archMap[arch]}/${version} binaries`;
|
||||
if (version.endsWith('nightly')) {
|
||||
return null;
|
||||
}
|
||||
if (!versionInfo[version]) {
|
||||
throw err;
|
||||
}
|
||||
for (let file of versionInfo[version].files) {
|
||||
if (file.os == osMap[osPlat] && file.arch == archMap[arch]) {
|
||||
return file;
|
||||
}
|
||||
}
|
||||
throw err;
|
||||
throw `Could not find ${archMap[arch]}/${version} binaries`;
|
||||
}
|
||||
exports.getFileInfo = getFileInfo;
|
||||
function getDownloadURL(fileInfo, version, arch) {
|
||||
@@ -154,10 +146,6 @@ function getDownloadURL(fileInfo, version, arch) {
|
||||
if (version == 'nightly') {
|
||||
return `${baseURL}/${getNightlyFileName(arch)}`;
|
||||
}
|
||||
// Verify that fileInfo.url points at the official Julia download servers
|
||||
if (!fileInfo.url.startsWith('https://julialang-s3.julialang.org/')) {
|
||||
throw new Error(`versions.json points at a download location outside of Julia's download server: ${fileInfo.url}. Aborting for security reasons.`);
|
||||
}
|
||||
return fileInfo.url;
|
||||
}
|
||||
exports.getDownloadURL = getDownloadURL;
|
||||
|
||||
8554
package-lock.json
generated
8554
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "setup-julia",
|
||||
"version": "1.8.0",
|
||||
"version": "1.6.0",
|
||||
"private": true,
|
||||
"description": "setup Julia action",
|
||||
"main": "lib/setup-julia.js",
|
||||
|
||||
@@ -18,11 +18,7 @@ const osMap = {
|
||||
}
|
||||
const archMap = {
|
||||
'x86': 'i686',
|
||||
'X86': 'i686',
|
||||
'x64': 'x86_64',
|
||||
'X64': 'x86_64',
|
||||
'aarch64': 'aarch64',
|
||||
'ARM64': 'aarch64'
|
||||
'x64': 'x86_64'
|
||||
}
|
||||
|
||||
// Store information about the environment
|
||||
@@ -119,23 +115,17 @@ function getNightlyFileName(arch: string): string {
|
||||
}
|
||||
|
||||
export function getFileInfo(versionInfo, version: string, arch: string) {
|
||||
const err = `Could not find ${archMap[arch]}/${version} binaries`
|
||||
|
||||
if (version.endsWith('nightly')) {
|
||||
return null
|
||||
}
|
||||
|
||||
if (!versionInfo[version]) {
|
||||
throw err
|
||||
}
|
||||
|
||||
for (let file of versionInfo[version].files) {
|
||||
if (file.os == osMap[osPlat] && file.arch == archMap[arch]) {
|
||||
return file
|
||||
}
|
||||
}
|
||||
|
||||
throw err
|
||||
throw `Could not find ${archMap[arch]}/${version} binaries`
|
||||
}
|
||||
|
||||
export function getDownloadURL(fileInfo, version: string, arch: string): string {
|
||||
@@ -152,10 +142,6 @@ export function getDownloadURL(fileInfo, version: string, arch: string): string
|
||||
return `${baseURL}/${getNightlyFileName(arch)}`
|
||||
}
|
||||
|
||||
// Verify that fileInfo.url points at the official Julia download servers
|
||||
if (!fileInfo.url.startsWith('https://julialang-s3.julialang.org/')) {
|
||||
throw new Error(`versions.json points at a download location outside of Julia's download server: ${fileInfo.url}. Aborting for security reasons.`)
|
||||
}
|
||||
return fileInfo.url
|
||||
}
|
||||
|
||||
@@ -214,12 +200,12 @@ export async function installJulia(versionInfo, version: string, arch: string):
|
||||
|
||||
/**
|
||||
* Test if Julia has been installed and print the version.
|
||||
*
|
||||
*
|
||||
* true => always show versioninfo
|
||||
* false => only show on nightlies
|
||||
* never => never show it anywhere
|
||||
*
|
||||
* @param showVersionInfoInput
|
||||
*
|
||||
* @param showVersionInfoInput
|
||||
*/
|
||||
export async function showVersionInfo(showVersionInfoInput: string, version: string): Promise<void> {
|
||||
// --compile=min -O0 reduces the time from ~1.8-1.9s to ~0.8-0.9s
|
||||
@@ -229,7 +215,7 @@ export async function showVersionInfo(showVersionInfoInput: string, version: str
|
||||
case 'true':
|
||||
exitCode = await exec.exec('julia', ['--compile=min', '-O0', '-e', 'using InteractiveUtils; versioninfo()'])
|
||||
break
|
||||
|
||||
|
||||
case 'false':
|
||||
if (version.endsWith('nightly')) {
|
||||
exitCode = await exec.exec('julia', ['--compile=min', '-O0', '-e', 'using InteractiveUtils; versioninfo()'])
|
||||
@@ -237,7 +223,7 @@ export async function showVersionInfo(showVersionInfoInput: string, version: str
|
||||
exitCode = await exec.exec('julia', ['--version'])
|
||||
}
|
||||
break
|
||||
|
||||
|
||||
case 'never':
|
||||
exitCode = await exec.exec('julia', ['--version'])
|
||||
break
|
||||
|
||||
Reference in New Issue
Block a user