Compare commits

..

1 Commits

Author SHA1 Message Date
Sascha Mann
20e957a751 Add benchmark 2021-01-13 11:24:02 +01:00
12 changed files with 92 additions and 13773 deletions

View File

@@ -1,7 +0,0 @@
version: 2
updates:
- package-ecosystem: gitsubmodule
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10

View File

@@ -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

View File

@@ -4,7 +4,6 @@ on:
push:
branches: ['main', 'master', 'releases/*']
pull_request:
workflow_dispatch:
jobs:
test:

44
.github/workflows/windows-tests.yml vendored Normal file
View 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
View File

@@ -1,3 +1,3 @@
node_modules/
__tests__/runner/*
!dist/
dist/

View File

@@ -38,11 +38,7 @@ 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 | aarch64 (untested)
# Supported values: x64 | x86
#
# Default: x64
arch: ''
@@ -107,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).

5204
dist/index.js vendored

File diff suppressed because it is too large Load Diff

BIN
dist/unzip vendored

Binary file not shown.

13
lib/installer.js generated
View File

@@ -32,8 +32,7 @@ const osMap = {
};
const archMap = {
'x86': 'i686',
'x64': 'x86_64',
'aarch64': 'aarch64'
'x64': 'x86_64'
};
// Store information about the environment
const osPlat = os.platform(); // possible values: win32 (Windows), linux (Linux), darwin (macOS)
@@ -125,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) {
@@ -151,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;

8557
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "setup-julia",
"version": "1.7.0",
"version": "1.6.0",
"private": true,
"description": "setup Julia action",
"main": "lib/setup-julia.js",

View File

@@ -18,8 +18,7 @@ const osMap = {
}
const archMap = {
'x86': 'i686',
'x64': 'x86_64',
'aarch64': 'aarch64'
'x64': 'x86_64'
}
// Store information about the environment
@@ -116,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 {
@@ -149,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
}
@@ -211,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
@@ -226,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()'])
@@ -234,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