Compare commits

...

54 commits
v2 ... main

Author SHA1 Message Date
Vilius Sutkus '89
9fc6c4e906 Update dependencies 2024-11-10 00:15:53 +02:00
Vilius Sutkus '89
edebe8927a Update cmdline-tools version in README.md 2024-11-09 23:40:34 +02:00
Stefan Wärting
2022e05939 Add support for versions 12, 13, and 16 2024-11-09 23:37:36 +02:00
Vilius Sutkus '89
f34c17e4f4 [CI] Disable macos-11, enable macos-14 2024-08-09 23:20:30 +03:00
Vilius Sutkus '89
29d7cbabdd [CI] Add workflow_dispatch to run workflow. Remove .github/*.json trigger.
.github/*.json trigger does not seem to trigger anything
2024-08-09 23:20:17 +03:00
Vilius Sutkus '89
bb5134ce76 [CI] Run tests on push in any branch, not just main/release 2024-08-09 23:18:12 +03:00
dependabot[bot]
4b7c168f7a Bump github/codeql-action from 2 to 3
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-07 03:34:09 +03:00
Vilius Sutkus '89
39fe32d9f9 npm update typescript 2024-08-07 03:27:32 +03:00
Vilius Sutkus '89
9b404b77f3 npm update eslint 2024-08-07 03:25:17 +03:00
Vilius Sutkus '89
b15b7e58c1 npm update 2024-08-07 03:23:32 +03:00
Vilius Sutkus '89
12a392d9f4 Update more dependencies 2024-06-18 10:45:48 +03:00
Vilius Sutkus '89
f3fd7c000f Update dependencies 2024-06-18 10:36:57 +03:00
Vilius Sutkus '89
5baef82307 [CI] Add Ubuntu-24.04 to the test matrix 2024-06-18 10:18:53 +03:00
dependabot[bot]
3963848dab Bump eslint-plugin-jest from 28.2.0 to 28.6.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 28.2.0 to 28.6.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v28.2.0...v28.6.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 10:00:47 +03:00
dependabot[bot]
c55407a479 Bump eslint-plugin-github from 4.10.2 to 5.0.1
Bumps [eslint-plugin-github](https://github.com/github/eslint-plugin-github) from 4.10.2 to 5.0.1.
- [Release notes](https://github.com/github/eslint-plugin-github/releases)
- [Commits](https://github.com/github/eslint-plugin-github/compare/v4.10.2...v5.0.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-github
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 09:48:26 +03:00
dependabot[bot]
4aaec39eee Bump braces from 3.0.2 to 3.0.3
Bumps [braces](https://github.com/micromatch/braces) from 3.0.2 to 3.0.3.
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-18 09:47:23 +03:00
dependabot[bot]
e1f5280adf Bump eslint-plugin-jest from 27.9.0 to 28.2.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.9.0 to 28.2.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.9.0...v28.2.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-19 11:11:16 +03:00
dependabot[bot]
961a5d9791 Bump typescript from 5.4.4 to 5.4.5
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.4.4 to 5.4.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.4.4...v5.4.5)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-19 11:10:06 +03:00
Vilius Sutkus '89
00854ea68c Update dependencies and rebuild 2024-04-05 13:59:39 +03:00
dependabot[bot]
0d0e8c3af6 Bump typescript from 5.3.2 to 5.4.4
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.3.2 to 5.4.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v5.3.2...v5.4.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 13:50:43 +03:00
dependabot[bot]
a9d7b728b4 Bump eslint-plugin-github from 4.10.1 to 4.10.2
Bumps [eslint-plugin-github](https://github.com/github/eslint-plugin-github) from 4.10.1 to 4.10.2.
- [Release notes](https://github.com/github/eslint-plugin-github/releases)
- [Commits](https://github.com/github/eslint-plugin-github/compare/v4.10.1...v4.10.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-github
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 13:44:38 +03:00
dependabot[bot]
93337aeebc Bump actions/setup-java from 3 to 4
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 3 to 4.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-04-05 13:43:55 +03:00
dependabot[bot]
c39b220a9b Bump ts-jest from 29.1.1 to 29.1.2
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.1.1 to 29.1.2.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.1.1...v29.1.2)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-22 13:07:30 +02:00
dependabot[bot]
76b557c697 Bump @actions/cache from 3.2.2 to 3.2.4
Bumps [@actions/cache](https://github.com/actions/toolkit/tree/HEAD/packages/cache) from 3.2.2 to 3.2.4.
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/cache/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/cache)

---
updated-dependencies:
- dependency-name: "@actions/cache"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-22 11:45:06 +02:00
dependabot[bot]
b7334e0985 Bump prettier from 3.1.0 to 3.2.5
Bumps [prettier](https://github.com/prettier/prettier) from 3.1.0 to 3.2.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.1.0...3.2.5)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-22 11:44:08 +02:00
dependabot[bot]
8252dc7232 Bump eslint-plugin-jest from 27.6.0 to 27.9.0
Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 27.6.0 to 27.9.0.
- [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases)
- [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v27.6.0...v27.9.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-jest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-03-22 11:42:51 +02:00
Vilius Sutkus '89
07976c6290 [CI] Don't log licenses 2023-11-25 18:10:19 +02:00
Vilius Sutkus '89
56927e38e2 Update npm dependencies 2023-11-25 18:04:24 +02:00
Vilius Sutkus '89
eb7920b260 Implement action input parameter 'packages' 2023-11-25 17:41:26 +02:00
Vilius Sutkus '89
a86cdbf03d [CI] Call this action by calling action.yml
action.yml has default input arguments. Would rather not duplicate them in CI workflow
2023-11-25 17:25:16 +02:00
Vilius Sutkus '89
713cbf481b [README.md] Update wording about licenses 2023-11-25 17:22:28 +02:00
Vilius Sutkus '89
1297b09c09 [CI] List installed packages 2023-11-25 17:21:46 +02:00
Vilius Sutkus '89
d24156dbc9 [README.md] Add a note about installed packages 2023-11-21 22:41:46 +02:00
Vilius Sutkus '89
ade8112388 Change "Licence" to "License" 2023-11-21 22:35:25 +02:00
Vilius Sutkus '89
aeaba18a12 [Issue #384] Implement silent licence agreement. 2023-11-21 22:11:35 +02:00
Vilius Sutkus '89
423241b186 Don't eslint warn about English text in string literals 2023-11-21 21:35:16 +02:00
Vilius Sutkus '89
4113fd9036 [CI] Test all cmdlinetools versions 2023-11-21 21:32:42 +02:00
Vilius Sutkus '89
0549df86ae Update npm dependencies 2023-11-21 21:27:27 +02:00
Vilius Sutkus '89
b6023dae3a [CI] Update actions/setup-node to v4 2023-11-21 21:25:54 +02:00
Vilius Sutkus '89
ded9227d6b [CI] Update actions/checkout to v4 2023-11-21 21:25:09 +02:00
Vilius Sutkus '89
449627e76b Format file to match correct "desired" width. Remove leftover debug printout 2023-11-21 21:22:57 +02:00
Vilius Sutkus '89
8023252681 [Issue #192] Accept cmdline-tools-version input parameter 2023-11-21 21:18:33 +02:00
Vilius Sutkus '89
9584f05408 [README.md] Update version of this action 2023-09-25 04:30:57 +03:00
dependabot[bot]
13f81365a4 Bump github/codeql-action from 1 to 2
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 03:55:25 +03:00
Vilius Sutkus '89
110787489d [README.md] Update JDK version in step name 2023-09-25 03:53:50 +03:00
Vilius Sutkus '89
4ba30747dc [CI] Use Temurin JDK. Adopt JDK is discontinued
( according to https://github.com/actions/setup-java#supported-distributions )
2023-09-25 03:53:00 +03:00
Omar Shehata
a3da945276 Fix README example 2023-09-25 03:48:44 +03:00
Vilius Sutkus '89
1cb03f027b Update node dependencies & Rebuild 2023-09-25 03:37:15 +03:00
Vilius Sutkus '89
ccc0939481 Use Node-20 instead of end-of-life Node-16
Would prefer to use Node-18, because it's LTS, but I can't, because it's not available:
https://github.com/actions/runner-images/discussions/7664
2023-09-25 03:20:06 +03:00
Vilius Sutkus '89
fabcc053ca [CI] Add macos-13 to test matrix 2023-09-25 03:14:01 +03:00
Vilius Sutkus '89
bee5ac3f90 Update cmdline-tools to 11.0 (latest) 2023-09-25 03:04:50 +03:00
Vilius Sutkus '89
26c86ac3f5 Update JDK to 17 (from 1.8). Required for current cmdline-tools 2023-09-25 03:03:19 +03:00
Vilius Sutkus '89
bc52f43eb3 [CI] Remove ubuntu-18.04 from test matrix 2023-09-25 03:02:55 +03:00
Simon Marquis
899d70efad Update commandlinetools version to 9.0 (latest)
https://developer.android.com/studio#command-line-tools-only
2023-09-25 02:57:03 +03:00
11 changed files with 29801 additions and 7537 deletions

View file

@ -44,7 +44,7 @@
"semi": "off", "semi": "off",
"@typescript-eslint/semi": ["error", "never"], "@typescript-eslint/semi": ["error", "never"],
"@typescript-eslint/type-annotation-spacing": "error", "@typescript-eslint/type-annotation-spacing": "error",
"i18n-text/no-en": "warn", "i18n-text/no-en": "off",
"@typescript-eslint/unbound-method": "error" "@typescript-eslint/unbound-method": "error"
}, },
"env": { "env": {

View file

@ -1,13 +1,7 @@
name: Build & Test name: Build & Test
on: on:
pull_request:
paths-ignore:
- '**.md'
push: push:
branches:
- main
- releases/*
paths-ignore: paths-ignore:
- '**.md' - '**.md'
@ -15,12 +9,12 @@ jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup node 16 - name: Setup node 20
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: '16' node-version: 20
- run: npm ci - run: npm ci
@ -32,12 +26,12 @@ jobs:
format-check: format-check:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup node 16 - name: Setup node 20
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: '16' node-version: 20
- run: npm ci - run: npm ci
@ -46,12 +40,12 @@ jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup node 16 - name: Setup node 20
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: '16' node-version: 20
- run: npm ci - run: npm ci
@ -59,35 +53,64 @@ jobs:
runSdkManager: runSdkManager:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
name: ${{ matrix.os }} - ${{ matrix.cmdline-tools-version }}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
os: [ ubuntu-18.04, ubuntu-20.04, ubuntu-22.04, macos-11, macos-12, windows-2019, windows-2022 ] os:
- ubuntu-24.04
- ubuntu-22.04
- ubuntu-20.04
- macos-14
- macos-13
- macos-12
- windows-2022
- windows-2019
cmdline-tools-version:
- 12266719
- 11479570
- 11076708
- 10406996
- 9862592
- 9477386
- 9123335
- 8512546
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup node 16 - name: Setup node 20
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: '16' node-version: 20
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'temurin'
- run: npm ci - run: npm ci
- run: npm run build - run: npm run build
- run: node dist/index.js - name: Run setup-android
uses: ./
with:
cmdline-tools-version: ${{ matrix.cmdline-tools-version }}
log-accepted-android-sdk-licenses: 'false'
- run: sdkmanager --list_installed
- run: sdkmanager --list - run: sdkmanager --list
lint: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Setup node 16 - name: Setup node 20
uses: actions/setup-node@v3 uses: actions/setup-node@v4
with: with:
node-version: '16' node-version: 20
- run: npm ci - run: npm ci

View file

@ -31,13 +31,13 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3 uses: actions/checkout@v4
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v1 uses: github/codeql-action/init@v3
with: with:
languages: 'javascript' languages: 'javascript'
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1 uses: github/codeql-action/analyze@v3

View file

@ -1,17 +1,10 @@
name: Run Android build name: Run Android build
on: on:
pull_request: workflow_dispatch:
paths:
- 'dist/**.js'
- '.github/*.json'
push: push:
branches:
- main
- releases/*
paths: paths:
- 'dist/**.js' - 'dist/**.js'
- '.github/*.json'
jobs: jobs:
build: build:
@ -27,19 +20,19 @@ jobs:
if: ${{ false }} if: ${{ false }}
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
repository: daveol/SampleApplication repository: daveol/SampleApplication
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
path: ./build/ path: ./build/
- name: Set up JDK 1.8 - name: Set up JDK 17
uses: actions/setup-java@v3 uses: actions/setup-java@v4
with: with:
java-version: 1.8 java-version: 17
distribution: 'adopt' distribution: 'temurin'
- name: Setup Android SDK - name: Setup Android SDK
id: 'setup-android' id: 'setup-android'

6
.idea/vcs.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View file

@ -3,10 +3,10 @@
![Build & Test](https://github.com/android-actions/setup-android/workflows/Build%20&%20Test/badge.svg) ![Build & Test](https://github.com/android-actions/setup-android/workflows/Build%20&%20Test/badge.svg)
This action sets up the Android SDK tools by: This action sets up the Android SDK tools by:
- Downloading the SDK commandline tools, if the current version (7.0) is not found in either `$ANDROID_SDK_ROOT` or `$HOME/.android/sdk`. - Downloading the SDK commandline tools, if the current version (16.0) is not found in either `$ANDROID_SDK_ROOT` or `$HOME/.android/sdk`.
- Accepting the SDK licenses. - Accepting the SDK licenses.
- Installing `tools` and `platform-tools`. - Installing `tools` and `platform-tools`.
- Adding `platform-tools` (contains adb) and `cmdline-tools/7.0/bin` (contains sdkmanager) to `$PATH`. - Adding `platform-tools` (contains adb) and `cmdline-tools/16.0/bin` (contains sdkmanager) to `$PATH`.
- Setting up problem [matchers](/matchers.json). - Setting up problem [matchers](/matchers.json).
On Windows 2016 runners, this action also checks if `$ANDROID_SDK_ROOT` path contains spaces. On Windows 2016 runners, this action also checks if `$ANDROID_SDK_ROOT` path contains spaces.
@ -23,20 +23,78 @@ See [action.yml](action.yml)
## Basic ## Basic
```yaml ```yaml
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: Set up JDK 1.8 - name: Set up JDK 17
uses: actions/setup-java@v3 uses: actions/setup-java@v3
with: with:
java-version: 1.8 java-version: '17'
distribution: 'temurin'
- name: Setup Android SDK - name: Setup Android SDK
uses: android-actions/setup-android@v2 uses: android-actions/setup-android@v3
- name: Build SampleApplication - name: Build SampleApplication
run: ./gradlew --no-daemon build run: ./gradlew --no-daemon build
``` ```
## Additional packages
Input parameter `packages` controls which packages this action will install from Android SDK.
Default value is `tools platform-tools`, supply an empty string to skip installing additional packages.
Additional packages can be installed at a later time by calling sdkmanager manually.
```yaml
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
packages: ''
# ...
- run: sdkmanager tools platform-tools
```
## SDK Version selection
Command line tools are versioned using two variables - short and long.
Long one is the build number, used in the zip URL, short one is the human friendly version name.
By default, setup-android installs version 12266719 (short version 16.0).
To install a different version, call setup-android with desired long version as the input parameter `cmdline-tools-version`:
```yaml
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
cmdline-tools-version: 8512546
```
#### Version table
| Short version | Long version |
|---------------| --- |
| 16.0 | 12266719 |
| 13.0 | 11479570 |
| 12.0 | 11076708 |
| 11.0 | 10406996 |
| 10.0 | 9862592 |
| 9.0 | 9477386 |
| 8.0 | 9123335 |
| 7.0 | 8512546 |
Current cmdline tools version can be found at https://developer.android.com/studio#command-line-tools-only
# Android SDK Licenses
Android SDK is not public domain software, it comes with a license.
Input parameter `accept-android-sdk-licenses` decides if Android SDK licenses should be agreed to on behalf of the user of this action.
Default option is 'yes', because otherwise SDK is unusable until said licenses are agreed to.
licenses are quite long, to prevent a wall of text in the action output, licenses can be agreed to silently.
Input parameter `log-accepted-android-sdk-licenses` controls whether license texts should be printed or omitted from the text output. Defaults to 'true'.
# Thanks # Thanks
Based on the project [android-problem-matchers-action](https://github.com/jonasb/android-problem-matchers-action) from [@jonasb](https://github.com/jonasb) Based on the project [android-problem-matchers-action](https://github.com/jonasb/android-problem-matchers-action) from [@jonasb](https://github.com/jonasb)

View file

@ -2,8 +2,29 @@ name: 'Setup Android SDK Tools'
author: 'Android-Actions' author: 'Android-Actions'
description: 'Setup the Android SDK Tools and add them to the path' description: 'Setup the Android SDK Tools and add them to the path'
inputs:
cmdline-tools-version:
description: 'cmdline-tools-version. See https://developer.android.com/studio#command-line-tools-only'
required: false
default: '12266719'
accept-android-sdk-licenses:
description: 'Android SDK is usable only after the license agreement. Should setup-android agree to the licences, provided by "sdkmanager --licenses"'
required: false
default: 'true'
log-accepted-android-sdk-licenses:
description: 'Should accepted licenses be logged. If not, accepted licences will be accepted silently'
required: false
default: 'true'
packages:
description: 'Additional packages to install'
required: false
default: 'tools platform-tools'
runs: runs:
using: 'node16' using: node20
main: 'dist/index.js' main: 'dist/index.js'
branding: branding:

28504
dist/index.js vendored

File diff suppressed because one or more lines are too long

8341
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -25,26 +25,24 @@
"author": "daveol", "author": "daveol",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@actions/cache": "^3.0.5", "@actions/cache": "^3.2.4",
"@actions/core": "^1.10.0", "@actions/core": "^1.10.1",
"@actions/tool-cache": "^2.0.1", "@actions/tool-cache": "^2.0.1"
"fs-extra": "^10.1.0"
}, },
"devDependencies": { "devDependencies": {
"@types/fs-extra": "^9.0.13", "@types/jest": "^29.5.5",
"@types/jest": "^29.2.0", "@types/node": "^20.6.5",
"@types/node": "^16.11.66", "@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/eslint-plugin": "^5.40.1", "@typescript-eslint/parser": "^7.18.0",
"@typescript-eslint/parser": "^5.40.1", "@vercel/ncc": "^0.38.0",
"@vercel/ncc": "^0.34.0", "eslint": "^8.57.0",
"eslint": "^8.25.0", "eslint-plugin-github": "^5.0.1",
"eslint-plugin-github": "^4.4.0", "eslint-plugin-jest": "^28.6.0",
"eslint-plugin-jest": "^27.1.3", "jest": "^29.7.0",
"jest": "^29.2.1", "jest-circus": "^29.7.0",
"jest-circus": "^29.2.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"prettier": "^2.7.1", "prettier": "^3.3.2",
"ts-jest": "^29.0.3", "ts-jest": "^29.1.5",
"typescript": "^4.8.4" "typescript": "^5.5.4"
} }
} }

View file

@ -3,109 +3,102 @@ import * as tc from '@actions/tool-cache'
import * as exec from '@actions/exec' import * as exec from '@actions/exec'
import * as path from 'path' import * as path from 'path'
import * as fs from 'fs' import * as fs from 'fs'
import * as fse from 'fs-extra'
import * as os from 'os' import * as os from 'os'
const CMDLINE_TOOLS_VERSION = '7.0' function getVersionShort(versionLong: string): string {
const COMMANDLINE_TOOLS_VERSION = '8512546' switch (versionLong) {
case '12266719':
return '16.0'
case '11479570':
return '13.0'
case '11076708':
return '12.0'
case '10406996':
return '11.0'
case '9862592':
return '10.0'
case '9477386':
return '9.0'
case '9123335':
return '8.0'
case '8512546':
return '7.0'
default:
return versionLong
}
}
const COMMANDLINE_TOOLS_WIN_URL = `https://dl.google.com/android/repository/commandlinetools-win-${COMMANDLINE_TOOLS_VERSION}_latest.zip` const VERSION_LONG = core.getInput('cmdline-tools-version', {
const COMMANDLINE_TOOLS_MAC_URL = `https://dl.google.com/android/repository/commandlinetools-mac-${COMMANDLINE_TOOLS_VERSION}_latest.zip` trimWhitespace: true
const COMMANDLINE_TOOLS_LIN_URL = `https://dl.google.com/android/repository/commandlinetools-linux-${COMMANDLINE_TOOLS_VERSION}_latest.zip` })
if (VERSION_LONG.includes('/') || VERSION_LONG.includes('\\')) {
core.setFailed('Malformed cmdline-tools-version!')
throw new Error('Malformed cmdline-tools-version!')
}
const VERSION_SHORT = getVersionShort(VERSION_LONG)
const HOME = os.homedir() const COMMANDLINE_TOOLS_WIN_URL = `https://dl.google.com/android/repository/commandlinetools-win-${VERSION_LONG}_latest.zip`
const ANDROID_HOME_DIR = path.join(HOME, '.android') const COMMANDLINE_TOOLS_MAC_URL = `https://dl.google.com/android/repository/commandlinetools-mac-${VERSION_LONG}_latest.zip`
const ANDROID_HOME_SDK_DIR = path.join(ANDROID_HOME_DIR, 'sdk') const COMMANDLINE_TOOLS_LIN_URL = `https://dl.google.com/android/repository/commandlinetools-linux-${VERSION_LONG}_latest.zip`
const ANDROID_HOME_SDK_DIR = path.join(os.homedir(), '.android', 'sdk')
let ANDROID_SDK_ROOT = process.env['ANDROID_SDK_ROOT'] || ANDROID_HOME_SDK_DIR let ANDROID_SDK_ROOT = process.env['ANDROID_SDK_ROOT'] || ANDROID_HOME_SDK_DIR
function getSdkManagerPath(cmdToolsVersion: string): string { async function callSdkManager(
return path.join( sdkManager: string,
ANDROID_SDK_ROOT, arg: string,
'cmdline-tools', printOutput: Boolean = true
cmdToolsVersion, ): Promise<void> {
'bin',
'sdkmanager'
)
}
function findPreinstalledSdkManager(): {
isFound: boolean
isCorrectVersion: boolean
exePath: string
} {
const result = {isFound: false, isCorrectVersion: false, exePath: ''}
// First try to find the version defined in CMDLINE_TOOLS_VERSION
result.exePath = getSdkManagerPath(CMDLINE_TOOLS_VERSION)
result.isFound = fs.existsSync(result.exePath)
if (result.isFound) {
result.isCorrectVersion = true
return result
}
// cmdline-tools could have a 'latest' version, but if it was installed 2 years ago
// it may not be 'latest' as of today
result.exePath = getSdkManagerPath('latest')
result.isFound = fs.existsSync(result.exePath)
if (result.isFound) {
const propertiesFile = path.join(
ANDROID_SDK_ROOT,
'cmdline-tools',
'latest',
'source.properties'
)
if (fs.existsSync(propertiesFile)) {
result.isCorrectVersion = fs
.readFileSync(propertiesFile, 'utf8')
.includes(`Pkg.Revision=${CMDLINE_TOOLS_VERSION}`)
}
return result
}
result.exePath = ''
// Find whatever version is available in ANDROID_SDK_ROOT
const cmdlineToolsDir = path.join(ANDROID_SDK_ROOT, 'cmdline-tools')
const foundVersions: string[] = fs.existsSync(cmdlineToolsDir)
? fs.readdirSync(cmdlineToolsDir)
: []
const foundVersionsFiltered: string[] = foundVersions.filter(
obj => '.' !== obj && '..' !== obj
)
// Sort by desc, to get 2.0 first, before 1.0
const foundVersionsSorted: string[] = foundVersionsFiltered.sort(
(a: string, b: string) => (a > b ? -1 : 1)
)
for (const version of foundVersionsSorted) {
result.exePath = getSdkManagerPath(version)
result.isFound = fs.existsSync(result.exePath)
if (result.isFound) {
return result
}
}
result.exePath = ''
return result
}
async function callSdkManager(sdkManager: string, arg: string): Promise<void> {
const acceptBuffer = Buffer.from(Array(10).fill('y').join('\n'), 'utf8') const acceptBuffer = Buffer.from(Array(10).fill('y').join('\n'), 'utf8')
await exec.exec(sdkManager, [arg], { await exec.exec(sdkManager, [arg], {
input: acceptBuffer input: acceptBuffer,
silent: !printOutput
}) })
} }
async function installSdkManager(): Promise<string> { async function installSdkManager(): Promise<string> {
fs.mkdirSync(ANDROID_SDK_ROOT, {recursive: true}) const cmdlineTools = path.join(
ANDROID_SDK_ROOT,
// touch $ANDROID_SDK_ROOT/repositories.cfg 'cmdline-tools',
fs.closeSync( VERSION_SHORT
fs.openSync(path.join(ANDROID_SDK_ROOT, 'repositories.cfg'), 'w')
) )
let sdkManagerExe = path.join(cmdlineTools, 'bin', 'sdkmanager')
const sdkManager = findPreinstalledSdkManager() if (!fs.existsSync(sdkManagerExe)) {
if (!sdkManager.isFound) { const latestCmdlineTools = path.join(
ANDROID_SDK_ROOT,
'cmdline-tools',
'latest'
)
const sourcePropertiesFile = path.join(
latestCmdlineTools,
'source.properties'
)
const latestSdkManagerExe = path.join(
latestCmdlineTools,
'bin',
'sdkmanager'
)
if (
fs.existsSync(latestCmdlineTools) &&
fs.existsSync(sourcePropertiesFile) &&
fs.existsSync(latestSdkManagerExe)
) {
const sourceProperties = fs.readFileSync(sourcePropertiesFile)
core.info(
`Found preinstalled sdkmanager in ${latestCmdlineTools} with following source.properties:`
)
core.info(sourceProperties.toString())
if (sourceProperties.includes(`Pkg.Revision=${VERSION_SHORT}`)) {
core.info(`Preinstalled sdkmanager has the correct version`)
sdkManagerExe = latestSdkManagerExe
} else {
core.info(`Wrong version in preinstalled sdkmanager`)
}
}
}
if (!fs.existsSync(sdkManagerExe)) {
let cmdlineToolsURL let cmdlineToolsURL
if (process.platform === 'linux') { if (process.platform === 'linux') {
cmdlineToolsURL = COMMANDLINE_TOOLS_LIN_URL cmdlineToolsURL = COMMANDLINE_TOOLS_LIN_URL
@ -117,43 +110,27 @@ async function installSdkManager(): Promise<string> {
core.error(`Unsupported platform: ${process.platform}`) core.error(`Unsupported platform: ${process.platform}`)
return '' return ''
} }
core.info(`Downloading commandline tools from ${cmdlineToolsURL}`)
const cmdlineToolsZip = await tc.downloadTool(cmdlineToolsURL) const cmdlineToolsZip = await tc.downloadTool(cmdlineToolsURL)
const cmdlineToolsExtractedLocation = await tc.extractZip(cmdlineToolsZip)
// Move cmdline-tools to where it would be if it was installed through sdkmanager const extractTo = path.join(ANDROID_SDK_ROOT, 'cmdline-tools')
// Will allow calling sdkmanager without --sdk_root='..' argument await tc.extractZip(cmdlineToolsZip, extractTo)
const desiredLocation = path.join(
ANDROID_SDK_ROOT,
'cmdline-tools',
CMDLINE_TOOLS_VERSION
)
// Create parent directory
fs.mkdirSync(path.dirname(desiredLocation), {recursive: true})
// Make sure we don't have leftover target directory (happens sometimes...) // Make sure we don't have leftover target directory (happens sometimes...)
if (fs.existsSync(desiredLocation)) fse.removeSync(desiredLocation) if (fs.existsSync(cmdlineTools)) {
core.info(`Removing leftovers from ${cmdlineTools}`)
// @TODO: use io.mv instead of fs-extra.moveSync once following issue is resolved: fs.rmSync(cmdlineTools, {recursive: true})
// https://github.com/actions/toolkit/issues/706 }
fse.moveSync( fs.renameSync(path.join(extractTo, 'cmdline-tools'), cmdlineTools)
path.join(cmdlineToolsExtractedLocation, 'cmdline-tools'),
desiredLocation
)
fse.removeSync(cmdlineToolsExtractedLocation)
sdkManager.exePath = getSdkManagerPath(CMDLINE_TOOLS_VERSION)
sdkManager.isCorrectVersion = true
} }
if (!sdkManager.isCorrectVersion) { // touch $ANDROID_SDK_ROOT/repositories.cfg
await callSdkManager( fs.closeSync(
sdkManager.exePath, fs.openSync(path.join(ANDROID_SDK_ROOT, 'repositories.cfg'), 'w')
`cmdline-tools;${CMDLINE_TOOLS_VERSION}` )
) core.debug(`sdkmanager available at: ${sdkManagerExe}`)
sdkManager.exePath = getSdkManagerPath(CMDLINE_TOOLS_VERSION) return sdkManagerExe
}
return sdkManager.exePath
} }
async function run(): Promise<void> { async function run(): Promise<void> {
@ -175,17 +152,36 @@ async function run(): Promise<void> {
} }
} }
const sdkManager = await installSdkManager() const sdkManagerExe = await installSdkManager()
core.debug(`sdkmanager installed to: ${sdkManager}`)
await callSdkManager(sdkManager, '--licenses')
await callSdkManager(sdkManager, 'tools')
await callSdkManager(sdkManager, 'platform-tools')
core.setOutput('ANDROID_COMMANDLINE_TOOLS_VERSION', COMMANDLINE_TOOLS_VERSION) if (core.getBooleanInput('accept-android-sdk-licenses')) {
core.info('Accepting Android SDK licenses')
await callSdkManager(
sdkManagerExe,
'--licenses',
core.getBooleanInput('log-accepted-android-sdk-licenses')
)
}
const packages = core
.getInput('packages', {required: false})
.split(' ')
.map(function (str) {
return str.trim()
})
/* eslint-disable-next-line @typescript-eslint/no-unused-vars */
.filter(function (element, index, array) {
return element
})
for (const pkg of packages) {
await callSdkManager(sdkManagerExe, pkg)
}
core.setOutput('ANDROID_COMMANDLINE_TOOLS_VERSION', VERSION_LONG)
core.exportVariable('ANDROID_HOME', ANDROID_SDK_ROOT) core.exportVariable('ANDROID_HOME', ANDROID_SDK_ROOT)
core.exportVariable('ANDROID_SDK_ROOT', ANDROID_SDK_ROOT) core.exportVariable('ANDROID_SDK_ROOT', ANDROID_SDK_ROOT)
core.addPath(path.dirname(sdkManager)) core.addPath(path.dirname(sdkManagerExe))
core.addPath(path.join(ANDROID_SDK_ROOT, 'platform-tools')) core.addPath(path.join(ANDROID_SDK_ROOT, 'platform-tools'))
core.debug('add matchers') core.debug('add matchers')