Created
September 9, 2019 22:23
-
-
Save ldco2016/e12bae86c4329bd2071d76ca472c4812 to your computer and use it in GitHub Desktop.
build script for generating apks and ipas
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import fs from "fs-extra"; | |
import eachSeries from "async/eachSeries"; | |
import { exec } from "child_process"; | |
import { androidDirectory } from "../../app.json"; | |
import { resolveFromRoot, distDir, createLogger } from "../build"; | |
const logger = createLogger("android"); | |
const APK_PATTERN = /release\.apk$/i; | |
function copyArtifactsToDist() { | |
logger.logHeader("Copying APK to Dist", { repeatChar: "=" }); | |
const baseDir = `${androidDirectory}/app/build/outputs/apk`; | |
const allFlavs = ["dev", "qa", "ua", "prod", "in"]; | |
const branchName = process.env.GitVersion_BranchName || ""; | |
const buildFlavour = branchName.startsWith("release/") ? allFlavs : ["dev"]; | |
const envs = { | |
dv: "DEV", | |
qa: "QA", | |
ua: "UA", | |
in: "INT", | |
prod: "" | |
}; | |
buildFlavour | |
.map(env => { | |
const apkOutputDir = resolveFromRoot(`${baseDir}/${env}/release`); | |
return { | |
apkOutputDir, | |
env | |
}; | |
}) | |
.forEach(({ apkOutputDir, env }) => { | |
const src = `${apkOutputDir}/app-${env}-release.apk`; | |
//prettier-ignore | |
const binaryName = env === 'prod' ? 'ENGAL.apk' : `ENGAL-${envs[env]}.apk`; | |
const dest = `${distDir}/${binaryName}`; | |
fs.copy(src, dest, (err: Error) => { | |
if (err) { | |
logger.error(err); | |
} | |
}); | |
}); | |
} | |
function run() { | |
logger.logHeader("Starting Android Builds", { repeatChar: "#" }); | |
const flavours = [ | |
{ | |
endpoint: "dv", | |
flavour: "Dev", | |
appcenterKey: "a014b1a3-c1e6-4fa2-9cae-078ff1b510a2" | |
}, | |
{ | |
endpoint: "qa", | |
flavour: "Qa", | |
appcenterKey: "0291d693-bd16-4fde-ada7-f6b6f2e97a59" | |
}, | |
{ | |
endpoint: "ua", | |
flavour: "Ua", | |
appcenterKey: "0050def9-48ae-4d56-81f8-4d5242a9c639" | |
}, | |
{ | |
endpoint: "prod", | |
flavour: "Prod", | |
appcenterKey: "0cb99e08-2092-43cb-8abe-49e580717221" | |
}, | |
{ | |
endpoint: "in", | |
flavour: "int", | |
appcenterKey: "f743d50f-82fa-4b23-b602-2a318b875480" | |
} | |
]; | |
const versionCode = process.env.Build || 1; | |
const release = process.env.GitVersion_MajorMinorPatch || "1.0.0"; | |
const fullAppVersion = `${release}-${versionCode}`; | |
const devFlav = flavours.find(f => f.flavour.toLocaleLowerCase() === "dev"); | |
const branchName = process.env.GitVersion_BranchName || ""; | |
const buildFlavour = branchName.startsWith("release/") ? flavours : [devFlav]; | |
eachSeries( | |
buildFlavour, | |
(f, callback) => { | |
//prettier-ignore | |
logger.logHeader( | |
`starting gradle assemble${f.flavour}Release with flag - versionName=${fullAppVersion} -PversionCode=${versionCode}`, | |
{repeatChar: '-'} | |
); | |
const engaInfo = `ENGAGE_VERSION=${fullAppVersion}`; | |
const engaEndpoint = `ENGAGE_ENDPOINT=${f.endpoint}`; | |
const engaCenter = `APPCENTER_KEY=${f.appcenterKey}`; | |
const engaPlatform = "APPCENTER_PLATFORM=android"; | |
//prettier-ignore | |
const prepare = `${engaEndpoint} ${engaCenter} ${engaInfo} ${engaPlatform} npm run setup`; | |
const cd = `cd ${androidDirectory}`; | |
//prettier-ignore | |
const releaseCmd = `./gradlew assemble${f.flavour}Release -PversionName=${fullAppVersion} -PversionCode=${versionCode} && cd ..`; | |
exec(`${prepare} && ${cd} && ${releaseCmd}`, err => { | |
if (err) { | |
return callback(err); | |
} | |
logger.logHeader(`${f.flavour} Android Build Successful!`, { | |
repeatChar: "#" | |
}); | |
// logger.close(); | |
callback(null); | |
}); | |
}, | |
error => { | |
if (error) { | |
logger.logHeader("Android Builds Failed!", { | |
repeatChar: "#" | |
}); | |
logger.error(error); | |
logger.close(); | |
} | |
// error below | |
copyArtifactsToDist(); | |
} | |
); | |
} | |
run(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment