mirror of
https://github.com/julia-actions/setup-julia.git
synced 2026-02-12 02:56:54 +08:00
Allow lts for the LTS, and allow pre for the latest pre-release (#234)
* update tests to latest `versions.json` * allow specifying the version as `lts` to install the latest LTS version for now, this just hardcodes the LTS version in the source (similar to how juliaup does it) since the latest LTS is not available in `versions.json`. Since the LTS is updated so rarely this might be ok for now. * add a 'pre' version * Run `npm ci` followed by `npm run build` * Add a CI job to test `pre` --------- Co-authored-by: Viral B. Shah <ViralBShah@users.noreply.github.com> Co-authored-by: Dilum Aluthge <dilum@aluthge.com>
This commit is contained in:
committed by
GitHub
parent
42e03d3446
commit
389de5c0df
2
.github/workflows/example-builds.yml
vendored
2
.github/workflows/example-builds.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
julia-version: ['1.0.5', '1.2', '^1.5.0-beta1', '1']
|
julia-version: ['1.0.5', '1.2', '^1.5.0-beta1', '1', 'lts', 'pre']
|
||||||
julia-arch: [x64, x86]
|
julia-arch: [x64, x86]
|
||||||
os: [ubuntu-latest, macOS-latest, windows-latest]
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||||
# 32-bit Julia binaries are not available on macOS
|
# 32-bit Julia binaries are not available on macOS
|
||||||
|
|||||||
@@ -109,6 +109,8 @@ You can either specify specific Julia versions or version ranges. If you specify
|
|||||||
- `'~1.3.0-rc1'` is a **tilde** version range that includes pre-releases of `1.3.0` starting at `rc1`. It matches all versions `≥ 1.3.0-rc1` and `< 1.4.0`.
|
- `'~1.3.0-rc1'` is a **tilde** version range that includes pre-releases of `1.3.0` 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 of `1.3.0`. It matches all versions `≥ 1.3.0-` and `< 2.0.0`.
|
- `'^1.3.0-0'` is a **caret** version range that includes _all_ pre-releases of `1.3.0`. 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 of `1.3.0`. It matches all versions `≥ 1.3.0-` and `< 1.4.0`.
|
- `'~1.3.0-0'` is a **tilde** version range that includes _all_ pre-releases of `1.3.0`. It matches all versions `≥ 1.3.0-` and `< 1.4.0`.
|
||||||
|
- `'lts'` will install the latest LTS build.
|
||||||
|
- `'pre'` will install the latest prerelease build.
|
||||||
- `'nightly'` will install the latest nightly build.
|
- `'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.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.
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -4,30 +4,30 @@
|
|||||||
import * as path from 'path'
|
import * as path from 'path'
|
||||||
|
|
||||||
import * as io from '@actions/io'
|
import * as io from '@actions/io'
|
||||||
|
|
||||||
import nock = require('nock')
|
|
||||||
import * as semver from 'semver'
|
import * as semver from 'semver'
|
||||||
|
|
||||||
|
import nock = require('nock')
|
||||||
|
|
||||||
const testVersions = [
|
const testVersions = [
|
||||||
'0.1.2', '0.2.0', '0.2.1', '0.3.0',
|
'0.1.2',
|
||||||
'0.3.1', '0.3.10', '0.3.11', '0.3.12',
|
'0.2.0', '0.2.1',
|
||||||
'0.3.2', '0.3.3', '0.3.4', '0.3.5',
|
'0.3.0', '0.3.1', '0.3.10', '0.3.11', '0.3.12', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9',
|
||||||
'0.3.6', '0.3.7', '0.3.8', '0.3.9',
|
'0.4.0', '0.4.0-rc1', '0.4.0-rc2', '0.4.0-rc3', '0.4.0-rc4', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7',
|
||||||
'0.4.0', '0.4.0-rc1', '0.4.0-rc2', '0.4.0-rc3',
|
'0.5.0', '0.5.0-rc0', '0.5.0-rc1', '0.5.0-rc2', '0.5.0-rc3', '0.5.0-rc4', '0.5.1', '0.5.2',
|
||||||
'0.4.0-rc4', '0.4.1', '0.4.2', '0.4.3',
|
'0.6.0', '0.6.0-pre.alpha', '0.6.0-pre.beta', '0.6.0-rc1', '0.6.0-rc2', '0.6.0-rc3', '0.6.1', '0.6.2', '0.6.3', '0.6.4',
|
||||||
'0.4.4', '0.4.5', '0.4.6', '0.4.7',
|
'0.7.0', '0.7.0-alpha', '0.7.0-beta', '0.7.0-beta2', '0.7.0-rc1', '0.7.0-rc2', '0.7.0-rc3',
|
||||||
'0.5.0', '0.5.0-rc0', '0.5.0-rc1', '0.5.0-rc2',
|
'1.0.0', '1.0.0-rc1', '1.0.1', '1.0.2', '1.0.3', '1.0.4', '1.0.5',
|
||||||
'0.5.0-rc3', '0.5.0-rc4', '0.5.1', '0.5.2',
|
'1.1.0', '1.1.0-rc1', '1.1.0-rc2', '1.1.1',
|
||||||
'0.6.0', '0.6.0-pre.alpha', '0.6.0-pre.beta', '0.6.0-rc1',
|
'1.2.0', '1.2.0-rc1', '1.2.0-rc2', '1.2.0-rc3',
|
||||||
'0.6.0-rc2', '0.6.0-rc3', '0.6.1', '0.6.2',
|
'1.3.0', '1.3.0-alpha', '1.3.0-rc1', '1.3.0-rc2', '1.3.0-rc3', '1.3.0-rc4', '1.3.0-rc5', '1.3.1',
|
||||||
'0.6.3', '0.6.4', '0.7.0', '0.7.0-alpha',
|
'1.4.0', '1.4.0-rc1', '1.4.0-rc2', '1.4.1', '1.4.2',
|
||||||
'0.7.0-beta', '0.7.0-beta2', '0.7.0-rc1', '0.7.0-rc2',
|
'1.5.0', '1.5.0-beta1', '1.5.0-rc1', '1.5.0-rc2', '1.5.1', '1.5.2', '1.5.3', '1.5.4',
|
||||||
'0.7.0-rc3', '1.0.0', '1.0.0-rc1', '1.0.1',
|
'1.6.0', '1.6.0-beta1', '1.6.0-rc1', '1.6.0-rc2', '1.6.0-rc3', '1.6.1', '1.6.2', '1.6.3', '1.6.4', '1.6.5', '1.6.6', '1.6.7',
|
||||||
'1.0.2', '1.0.3', '1.0.4', '1.0.5',
|
'1.7.0', '1.7.0-beta1', '1.7.0-beta2', '1.7.0-beta3', '1.7.0-beta4', '1.7.0-rc1', '1.7.0-rc2', '1.7.0-rc3', '1.7.1', '1.7.2', '1.7.3',
|
||||||
'1.1.0', '1.1.0-rc1', '1.1.0-rc2', '1.1.1',
|
'1.8.0', '1.8.0-beta1', '1.8.0-beta2', '1.8.0-beta3', '1.8.0-rc1', '1.8.0-rc2', '1.8.0-rc3', '1.8.0-rc4', '1.8.1', '1.8.2', '1.8.3', '1.8.4', '1.8.5',
|
||||||
'1.2.0', '1.2.0-rc1', '1.2.0-rc2', '1.2.0-rc3',
|
'1.9.0', '1.9.0-alpha1', '1.9.0-beta1', '1.9.0-beta2', '1.9.0-beta3', '1.9.0-beta4', '1.9.0-rc1', '1.9.0-rc2', '1.9.0-rc3', '1.9.1', '1.9.2', '1.9.3', '1.9.4',
|
||||||
'1.3.0-alpha', '1.3.0-rc1', '1.3.0-rc2', '1.3.0-rc3',
|
'1.10.0', '1.10.0-alpha1', '1.10.0-beta1', '1.10.0-beta2', '1.10.0-beta3', '1.10.0-rc1', '1.10.0-rc2', '1.10.0-rc3', '1.10.1', '1.10.2',
|
||||||
'1.3.0-rc4'
|
'1.11.0-alpha1', '1.11.0-alpha2', '1.11.0-beta1'
|
||||||
]
|
]
|
||||||
|
|
||||||
const toolDir = path.join(__dirname, 'runner', 'tools')
|
const toolDir = path.join(__dirname, 'runner', 'tools')
|
||||||
@@ -55,22 +55,33 @@ describe('version matching tests', () => {
|
|||||||
expect(installer.getJuliaVersion([], 'nightly')).toEqual('nightly')
|
expect(installer.getJuliaVersion([], 'nightly')).toEqual('nightly')
|
||||||
expect(installer.getJuliaVersion(testVersions, 'nightly')).toEqual('nightly')
|
expect(installer.getJuliaVersion(testVersions, 'nightly')).toEqual('nightly')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('LTS', () => {
|
||||||
|
// Update test when LTS is updated
|
||||||
|
expect(installer.getJuliaVersion(testVersions, 'lts')).toEqual(installer.getJuliaVersion(testVersions, '1.6'))
|
||||||
|
expect(installer.getJuliaVersion(testVersions, 'lts')).toEqual('1.6.7')
|
||||||
|
})
|
||||||
|
|
||||||
|
it('pre', () => {
|
||||||
|
expect(installer.getJuliaVersion(testVersions, 'pre')).toEqual('1.11.0-beta1')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('version ranges', () => {
|
describe('version ranges', () => {
|
||||||
it('Chooses the highest available version that matches the input', () => {
|
it('Chooses the highest available version that matches the input', () => {
|
||||||
expect(installer.getJuliaVersion(testVersions, '1')).toEqual('1.2.0')
|
expect(installer.getJuliaVersion(testVersions, '1')).toEqual('1.10.2')
|
||||||
expect(installer.getJuliaVersion(testVersions, '1.0')).toEqual('1.0.5')
|
expect(installer.getJuliaVersion(testVersions, '1.0')).toEqual('1.0.5')
|
||||||
expect(installer.getJuliaVersion(testVersions, '^1.3.0-rc1')).toEqual('1.3.0-rc4')
|
expect(installer.getJuliaVersion(testVersions, '^1.3.0-rc1')).toEqual('1.10.2')
|
||||||
expect(installer.getJuliaVersion(testVersions, '^1.2.0-rc1')).toEqual('1.2.0')
|
expect(installer.getJuliaVersion(testVersions, '^1.2.0-rc1')).toEqual('1.10.2')
|
||||||
|
expect(installer.getJuliaVersion(testVersions, '^1.10.0-rc1')).toEqual('1.10.2')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('include-prereleases', () => {
|
describe('include-prereleases', () => {
|
||||||
it('Chooses the highest available version that matches the input including prereleases', () => {
|
it('Chooses the highest available version that matches the input including prereleases', () => {
|
||||||
expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', true)).toEqual('1.3.0-rc4')
|
expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', true)).toEqual('1.11.0-beta1')
|
||||||
expect(installer.getJuliaVersion(testVersions, '1', true)).toEqual('1.3.0-rc4')
|
expect(installer.getJuliaVersion(testVersions, '1', true)).toEqual('1.11.0-beta1')
|
||||||
expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', false)).toEqual('1.2.0')
|
expect(installer.getJuliaVersion(testVersions, '^1.2.0-0', false)).toEqual('1.10.2')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
8
lib/installer.js
generated
8
lib/installer.js
generated
@@ -42,6 +42,8 @@ const os = __importStar(require("os"));
|
|||||||
const path = __importStar(require("path"));
|
const path = __importStar(require("path"));
|
||||||
const retry = require("async-retry");
|
const retry = require("async-retry");
|
||||||
const semver = __importStar(require("semver"));
|
const semver = __importStar(require("semver"));
|
||||||
|
const LTS_VERSION = '1.6';
|
||||||
|
const MAJOR_VERSION = '1'; // Could be deduced from versions.json
|
||||||
// Translations between actions input and Julia arch names
|
// Translations between actions input and Julia arch names
|
||||||
const osMap = {
|
const osMap = {
|
||||||
'win32': 'winnt',
|
'win32': 'winnt',
|
||||||
@@ -111,6 +113,12 @@ function getJuliaVersion(availableReleases, versionInput, includePrerelease = fa
|
|||||||
// versionInput is a valid version or a nightly version, use it directly
|
// versionInput is a valid version or a nightly version, use it directly
|
||||||
return versionInput;
|
return versionInput;
|
||||||
}
|
}
|
||||||
|
if (versionInput == 'lts') {
|
||||||
|
return getJuliaVersion(availableReleases, LTS_VERSION, false);
|
||||||
|
}
|
||||||
|
if (versionInput == 'pre') {
|
||||||
|
return getJuliaVersion(availableReleases, MAJOR_VERSION, true);
|
||||||
|
}
|
||||||
// Use the highest available version that matches versionInput
|
// Use the highest available version that matches versionInput
|
||||||
let version = semver.maxSatisfying(availableReleases, versionInput, { includePrerelease });
|
let version = semver.maxSatisfying(availableReleases, versionInput, { includePrerelease });
|
||||||
if (version == null) {
|
if (version == null) {
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ import retry = require('async-retry')
|
|||||||
|
|
||||||
import * as semver from 'semver'
|
import * as semver from 'semver'
|
||||||
|
|
||||||
|
const LTS_VERSION = '1.6'
|
||||||
|
const MAJOR_VERSION = '1' // Could be deduced from versions.json
|
||||||
|
|
||||||
// Translations between actions input and Julia arch names
|
// Translations between actions input and Julia arch names
|
||||||
const osMap = {
|
const osMap = {
|
||||||
'win32': 'winnt',
|
'win32': 'winnt',
|
||||||
@@ -82,6 +85,14 @@ export function getJuliaVersion(availableReleases: string[], versionInput: strin
|
|||||||
return versionInput
|
return versionInput
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (versionInput == 'lts') {
|
||||||
|
return getJuliaVersion(availableReleases, LTS_VERSION, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (versionInput == 'pre') {
|
||||||
|
return getJuliaVersion(availableReleases, MAJOR_VERSION, true)
|
||||||
|
}
|
||||||
|
|
||||||
// Use the highest available version that matches versionInput
|
// Use the highest available version that matches versionInput
|
||||||
let version = semver.maxSatisfying(availableReleases, versionInput, {includePrerelease})
|
let version = semver.maxSatisfying(availableReleases, versionInput, {includePrerelease})
|
||||||
if (version == null) {
|
if (version == null) {
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import * as core from '@actions/core'
|
import * as core from '@actions/core'
|
||||||
import * as exec from '@actions/exec'
|
|
||||||
import * as tc from '@actions/tool-cache'
|
import * as tc from '@actions/tool-cache'
|
||||||
|
|
||||||
import * as fs from 'fs'
|
import * as fs from 'fs'
|
||||||
|
|||||||
Reference in New Issue
Block a user