diff --git a/.github/workflows/action.yml b/.github/workflows/action.yml index b30a3048..1e9e4686 100644 --- a/.github/workflows/action.yml +++ b/.github/workflows/action.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 with: - node-version: '12' + node-version: 12 - run: npm install -g npm - run: npm install - run: npm run build @@ -31,12 +31,24 @@ jobs: - name: Check if build left artifacts run: git diff --exit-code - unit_test: - name: Unit tests + unit_tests_ubuntu: + name: Unit tests (Ubuntu) runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v1 - with: {node-version: '12'} + with: + node-version: 12 - run: npm ci - run: npm test + + unit_tests_windows: + name: Unit tests (Windows) + runs-on: windows-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - run: npm install --production + - run: npm test diff --git a/README.md b/README.md index f232fb36..d24b36a8 100644 --- a/README.md +++ b/README.md @@ -53,6 +53,35 @@ and Erlang/OTP. **Note** *: prior to 23, Windows builds are only available for minor versions, e.g. 21.0, 21.3, 22.0, etc. +### Self-hosted runners + +Self-hosted runners need to set env. variable `ImageOS` to one of the following, since the action +uses that to download assets: + +| ImageOS | Operating system +|- |- +| ubuntu16 | ubuntu-16.04 +| ubuntu18 | ubuntu-18.04 +| ubuntu20 | ubuntu-20.04 +| win16 | windows-2016 +| win19 | windows-2019 + +as per the following example: + +```yaml +... + +jobs: + test: + runs-on: self-hosted + env: + ImageOS: ubuntu20 # equivalent to runs-on ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - uses: erlef/setup-beam@v1 + ... +``` + ### Basic example (Erlang/OTP + Elixir, on Ubuntu) ```yaml diff --git a/__tests__/setup-beam.test.js b/__tests__/setup-beam.test.js index 394b03a2..7dfca904 100644 --- a/__tests__/setup-beam.test.js +++ b/__tests__/setup-beam.test.js @@ -136,7 +136,7 @@ async function testOTPVersions() { spec = '23.2.x' osVersion = 'windows-2016' - expected = '23.2.7.4' + expected = '23.2.7' got = await setupBeam.getOTPVersion(spec, osVersion) assert.deepStrictEqual(got, expected) diff --git a/dist/index.js b/dist/index.js index 6a97199b..3b76cec8 100644 --- a/dist/index.js +++ b/dist/index.js @@ -5001,8 +5001,19 @@ function getRunnerOSVersion() { win16: 'windows-2016', win19: 'windows-2019', } + const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS] - return ImageOSToContainer[process.env.ImageOS] + if (!containerFromEnvImageOS) { + throw new Error( + "Tried to map a target OS from env. variable 'ImageOS', but failed. If you're using a " + + "self-hosted runner, you should set 'env': 'ImageOS': ... to one of the following: " + + "['" + + `${Object.keys(ImageOSToContainer).join("', '")}` + + "']", + ) + } + + return containerFromEnvImageOS } async function get(url0, pageIdxs) { diff --git a/src/setup-beam.js b/src/setup-beam.js index 125f874a..0dfee5fa 100644 --- a/src/setup-beam.js +++ b/src/setup-beam.js @@ -345,8 +345,19 @@ function getRunnerOSVersion() { win16: 'windows-2016', win19: 'windows-2019', } + const containerFromEnvImageOS = ImageOSToContainer[process.env.ImageOS] - return ImageOSToContainer[process.env.ImageOS] + if (!containerFromEnvImageOS) { + throw new Error( + "Tried to map a target OS from env. variable 'ImageOS', but failed. If you're using a " + + "self-hosted runner, you should set 'env': 'ImageOS': ... to one of the following: " + + "['" + + `${Object.keys(ImageOSToContainer).join("', '")}` + + "']", + ) + } + + return containerFromEnvImageOS } async function get(url0, pageIdxs) {