This project provides an all-in-one script for Microsoft AppCenter: https://appcenter.ms/
This script automates the whole flow to create project, connect repo, configure build settings, and generate mobile apps.
With Node environment, add this script to your dev dependencies.
npm install appcenter-auto-builder --save-dev
yarn add appcenter-auto-builder --dev
pnpm add appcenter-auto-builder -D
With a proper AppCenterBuilderConfiguration
config, you can run it with AppCenterBuilder
.
It returns a Promise
, which resolves when the build succeeds, or rejects when errors occur.
The resolved object is an AppCenterBuildContext
, with which you can handle the bundle, disconnect the repo, etc.
import {AppCenterBuilderConfiguration, AppCenterBuilder} from "appcenter-auto-builder";
const config: AppCenterBuilderConfiguration = {
apiToken: "<Your API Token>",
project: {
name: "test-react-native-ios",
os: "iOS",
platform: "React-Native",
},
repo: {
url: "https://github.com/dionshihk/some-ios-project",
},
owner: {
type: "individual",
name: "<Your Account Name>",
},
buildSetting: {
trigger: "manual",
artifactVersioning: {buildNumberFormat: "buildId"},
environmentVariables: [
{name: "TEST_ENV_1", value: "1"},
{name: "TEST_ENV_2", value: Date.now().toString()},
],
toolsets: {
javascript: {
packageJsonPath: "package.json",
nodeVersion: "12.x",
},
xcode: {
....
},
},
},
};
new AppCenterBuilder(config).build();
To learn more about AppCenterBuilderConfiguration
interface, please read type.d.ts
, with proper comments.
With a proper AppCenterCleanerConfiguration
config, you can run it with AppCenterCleaner
.
There will be a Cli prompt for confirmation of deletion, type yes
to proceed, no
to exit.
import {AppCenterCleaner, AppCenterCleanerConfiguration} from "appcenter-auto-builder";
const config: AppCenterCleanerConfiguration = {
apiToken: "<Your API Token>",
owner: {
type: "individual",
name: "<Your Account Name>",
},
projectFilter: appCenterProjects => ["my-unwanted-project"],
};
new AppCenterCleaner(config).clean();
Complete TypeScript examples (with async usage) can be found here: https://github.com/dionshihk/appcenter-auto-builder/blob/master/test/
You are strongly suggested trying to create a project from scratch on AppCenter manually. Because of:
-
Connect to your repo (
BitBucket/Github
) at least once manually, to authorize your AppCenter account with OAuth. This step cannot be done with pure script. -
Learn the complicated build configuration data structure of iOS/Android project. The official API specification is not well-documented. GET
/v0.1/apps/{ownerName}/{appName}/repo_config
to find out the meaning of each field, in corresponding withtype.ts/BuildConfiguration
interface. -
Build the app once, to figure out a great number for
AppCenterBuilderConfiguration.buildEstDuration
.