Added 'releaseFile' back to action to maintain backwards compatibility.

This commit is contained in:
Drew Heavner
2020-11-11 09:46:26 -05:00
parent e0b7d9bc3e
commit 6bdd0b899a
4 changed files with 64 additions and 14 deletions

View File

@@ -18,9 +18,14 @@ The service account json in plain text, provided via a secret, etc.
**Required:** The package name, or Application Id, of the app you are uploading
### `releaseFiles`
### `releaseFile`
**DEPRECATED:** Please switch to using `releaseFiles` as this will be removed in the future
The Android release file to upload (.apk or .aab)
**Required:** The Android release file(s) to upload (.apk or .aab). Multiple files are separated by ','.
### `releaseFiles`
**CAVEAT:** Either this or `releaseFile` are required
The Android release file(s) to upload (.apk or .aab). Multiple files are separated by ','.
### `releaseName`
@@ -29,14 +34,14 @@ The release name. Not required to be unique. If not set, the name is generated f
### `track`
**Required:** The track in which you want to assign the uploaded app.
**Default:** `production`
**Default:** `production`
_Values:_ `alpha`, `beta`, `internal`, `production`, `internalsharing`
### `inAppUpdatePriority`
In-app update priority of the release. All newly added APKs in the release will be considered at this priority. Can take values in the range [0, 5], with 5 the highest priority.
**Default:** `0`
**Default:** `0`
_Values:_ `[0, 5]`
### `userFraction`

View File

@@ -14,9 +14,12 @@ inputs:
packageName:
description: 'The package name, or Application Id, of the app you are uploading'
required: true
releaseFile:
description: 'The Android release file to upload (.apk or .aab)'
required: false
releaseFiles:
description: "The Android release file(s) to upload (.apk or .aab). Separated by a ',' for multiple artifacts"
required: true
required: false
releaseName:
description: 'The name of this release. If not set it's generated automatically from the APKs versionName'
required: false

View File

@@ -36,12 +36,14 @@ const auth = new google.auth.GoogleAuth({
scopes: ['https://www.googleapis.com/auth/androidpublisher']
});
function run() {
var _a, _b;
return __awaiter(this, void 0, void 0, function* () {
try {
const serviceAccountJson = core.getInput('serviceAccountJson', { required: false });
const serviceAccountJsonRaw = core.getInput('serviceAccountJsonPlainText', { required: false });
const packageName = core.getInput('packageName', { required: true });
const releaseFiles = core.getInput('releaseFiles', { required: true }).split(',').filter(x => x !== '');
const releaseFile = core.getInput('releaseFile', { required: false });
const releaseFiles = ((_b = (_a = core.getInput('releaseFiles', { required: false })) === null || _a === void 0 ? void 0 : _a.split(',')) === null || _b === void 0 ? void 0 : _b.filter(x => x !== '')) || [];
const releaseName = core.getInput('releaseName', { required: false });
const track = core.getInput('track', { required: true });
const inAppUpdatePriority = core.getInput('inAppUpdatePriority', { required: false });
@@ -52,6 +54,7 @@ function run() {
if (!serviceAccountJson && !serviceAccountJsonRaw) {
console.log("No service account json key provided!");
core.setFailed("You must provide one of 'serviceAccountJson' or 'serviceAccountJsonPlainText' to use this action");
return;
}
// If the user has provided the raw plain text via secrets, or w/e, then write to file and
// set appropriate env variable for the auth
@@ -89,13 +92,32 @@ function run() {
else {
inAppUpdatePriorityInt = undefined;
}
// Check release files
for (const releaseFile of releaseFiles) {
// Check release files while maintaining backward compatibility
let validatedReleaseFiles = [];
if (releaseFiles.length == 0 && !releaseFile) {
core.setFailed(`You must provide either 'releaseFile' or 'releaseFiles' in your configuration.`);
return;
}
else if (releaseFiles.length == 0 && releaseFile) {
core.warning(`WARNING!! 'releaseFile' is deprecated and will be removed in a future release. Please migrate to 'releaseFiles'.`);
core.debug(`Validating ${releaseFile} exists`);
if (!fs.existsSync(releaseFile)) {
core.setFailed(`Unable to find release file @ ${releaseFile}`);
return;
}
else {
validatedReleaseFiles = [releaseFile];
}
}
else if (releaseFiles.length > 0) {
for (const file of releaseFiles) {
core.debug(`Validating ${file} exists`);
if (!fs.existsSync(file)) {
core.setFailed(`Unable to find release file @ ${file}`);
return;
}
}
validatedReleaseFiles = releaseFiles;
}
if (whatsNewDir != undefined && whatsNewDir.length > 0 && !fs.existsSync(whatsNewDir)) {
core.setFailed(`Unable to find 'whatsnew' directory @ ${whatsNewDir}`);
@@ -115,7 +137,7 @@ function run() {
whatsNewDir: whatsNewDir,
mappingFile: mappingFile,
name: releaseName
}, releaseFiles);
}, validatedReleaseFiles);
console.log(`Finished uploading to the Play Store`);
}
catch (error) {

View File

@@ -12,7 +12,10 @@ async function run() {
const serviceAccountJson = core.getInput('serviceAccountJson', { required: false });
const serviceAccountJsonRaw = core.getInput('serviceAccountJsonPlainText', { required: false});
const packageName = core.getInput('packageName', { required: true });
const releaseFiles = core.getInput('releaseFiles', { required: true }).split(',').filter(x => x !== '');
const releaseFile = core.getInput('releaseFile', { required: false });
const releaseFiles = core.getInput('releaseFiles', { required: false })
?.split(',')
?.filter(x => x !== '') || [];
const releaseName = core.getInput('releaseName', { required: false });
const track = core.getInput('track', { required: true });
const inAppUpdatePriority = core.getInput('inAppUpdatePriority', { required: false });
@@ -24,6 +27,7 @@ async function run() {
if (!serviceAccountJson && !serviceAccountJsonRaw) {
console.log("No service account json key provided!");
core.setFailed("You must provide one of 'serviceAccountJson' or 'serviceAccountJsonPlainText' to use this action");
return;
}
// If the user has provided the raw plain text via secrets, or w/e, then write to file and
@@ -65,13 +69,29 @@ async function run() {
inAppUpdatePriorityInt = undefined;
}
// Check release files
for (const releaseFile of releaseFiles) {
// Check release files while maintaining backward compatibility
let validatedReleaseFiles: string[] = [];
if (releaseFiles.length == 0 && !releaseFile) {
core.setFailed(`You must provide either 'releaseFile' or 'releaseFiles' in your configuration.`);
return;
} else if (releaseFiles.length == 0 && releaseFile) {
core.warning(`WARNING!! 'releaseFile' is deprecated and will be removed in a future release. Please migrate to 'releaseFiles'.`);
core.debug(`Validating ${releaseFile} exists`)
if (!fs.existsSync(releaseFile)) {
core.setFailed(`Unable to find release file @ ${releaseFile}`);
return
return;
} else {
validatedReleaseFiles = [releaseFile];
}
} else if (releaseFiles.length > 0) {
for (const file of releaseFiles) {
core.debug(`Validating ${file} exists`)
if (!fs.existsSync(file)) {
core.setFailed(`Unable to find release file @ ${file}`);
return;
}
}
validatedReleaseFiles = releaseFiles;
}
if (whatsNewDir != undefined && whatsNewDir.length > 0 && !fs.existsSync(whatsNewDir)) {
@@ -95,7 +115,7 @@ async function run() {
whatsNewDir: whatsNewDir,
mappingFile: mappingFile,
name: releaseName
}, releaseFiles);
}, validatedReleaseFiles);
console.log(`Finished uploading to the Play Store`)
} catch (error) {