forked from facebook/react-native
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c6cb0ad
commit d5557f9
Showing
11 changed files
with
5,194 additions
and
12 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,164 @@ | ||
// Used to publish this fork of react-native | ||
// Publish it as an attached tar asset to the GitHub release for general consumption, since we can't publish this to the npmjs npm feed | ||
|
||
const fs = require("fs"); | ||
const path = require("path"); | ||
const execSync = require("child_process").execSync; | ||
|
||
function exec(command) { | ||
try { | ||
console.log(`Running command: ${command}`); | ||
return execSync(command, { | ||
stdio: "inherit" | ||
}); | ||
} catch (err) { | ||
process.exitCode = 1; | ||
console.log(`Failure running: ${command}`); | ||
throw err; | ||
} | ||
} | ||
|
||
function doPublish() { | ||
const publishBranchName = process.env.publishBranchName; | ||
|
||
const tempPublishBranch = `publish-${Date.now()}`; | ||
|
||
const pkgJsonPath = path.resolve(__dirname, "../package.json"); | ||
let pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8")); | ||
|
||
let releaseVersion = pkgJson.version; | ||
|
||
const versionGroups = /(.*-microsoft\.)([0-9]*)/.exec(releaseVersion); | ||
if (versionGroups) { | ||
releaseVersion = versionGroups[1] + (parseInt(versionGroups[2]) + 1); | ||
} else { | ||
if (releaseVersion.indexOf("-") === -1) { | ||
releaseVersion = releaseVersion + "-microsoft.0"; | ||
} else { | ||
console.log("Invalid version to publish"); | ||
exit(1); | ||
} | ||
} | ||
|
||
pkgJson.version = releaseVersion; | ||
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2)); | ||
console.log(`Updating package.json to version ${releaseVersion}`); | ||
|
||
exec(`git checkout -b ${tempPublishBranch}`); | ||
|
||
exec(`git add ${pkgJsonPath}`); | ||
exec(`git commit -m "Applying package update to ${releaseVersion}`); | ||
exec(`git tag v${releaseVersion}`); | ||
exec(`git push origin HEAD:${tempPublishBranch} --follow-tags --verbose`); | ||
exec(`git push origin tag v${releaseVersion}`); | ||
|
||
// -------- Generating Android Artifacts with JavaDoc | ||
exec("gradlew installArchives"); | ||
|
||
// undo uncommenting javadoc setting | ||
exec("git checkout ReactAndroid/gradle.properties"); | ||
|
||
// Configure npm to publish to internal feed | ||
const npmrcPath = path.resolve(__dirname, "../.npmrc"); | ||
const npmrcContents = `registry=https:${ | ||
process.env.publishnpmfeed | ||
}/registry/\nalways-auth=true`; | ||
console.log(`Creating ${npmrcPath} for publishing:`); | ||
console.log(npmrcContents); | ||
fs.writeFileSync(npmrcPath, npmrcContents); | ||
|
||
exec(`npm publish`); | ||
exec(`del ${npmrcPath}`); | ||
|
||
// Push tar to GitHub releases | ||
exec(`npm pack`); | ||
|
||
const npmTarPath = path.resolve( | ||
__dirname, | ||
`../react-native-${releaseVersion}.tgz` | ||
); | ||
const assetUpdateUrl = `https://uploads.github.com/repos/Microsoft/react-native/releases/{id}/assets?name=react-native-${releaseVersion}.tgz`; | ||
const authHeader = | ||
"Basic " + new Buffer(":" + process.env.githubToken).toString("base64"); | ||
const userAgent = "Microsoft-React-Native-Release-Agent"; | ||
|
||
let uploadReleaseAssetUrl = ""; | ||
exec("npm install request@^2.69.0 --no-save"); | ||
|
||
const request = require("request"); | ||
|
||
const uploadTarBallToRelease = function() { | ||
request.post( | ||
{ | ||
url: uploadReleaseAssetUrl, | ||
headers: { | ||
"User-Agent": userAgent, | ||
Authorization: authHeader, | ||
"Content-Type": "application/octet-stream" | ||
}, | ||
formData: { | ||
file: fs.createReadStream(npmTarPath) | ||
} | ||
}, | ||
function(err, res, body) { | ||
if (err) { | ||
console.error(err); | ||
process.exitCode = 1; | ||
throw err; | ||
} | ||
|
||
var formattedResponse = JSON.parse(body); | ||
|
||
if (formattedResponse.errors) { | ||
process.exitCode = 1; | ||
console.error(formattedResponse.errors); | ||
throw formattedResponse.errors; | ||
} | ||
|
||
exec(`del ${npmTarPath}`); | ||
exec(`git checkout ${publishBranchName}`); | ||
exec(`git pull origin ${publishBranchName}`); | ||
exec(`git merge ${tempPublishBranch} --no-edit`); | ||
exec( | ||
`git push origin HEAD:${publishBranchName} --follow-tags --verbose` | ||
); | ||
exec(`git branch -d ${tempPublishBranch}`); | ||
exec(`git push origin --delete -d ${tempPublishBranch}`); | ||
} | ||
); | ||
}; | ||
|
||
const createReleaseRequestBody = { | ||
tag_name: `v${releaseVersion}`, | ||
target_commitish: tempPublishBranch, | ||
name: `v${releaseVersion}`, | ||
body: `v${releaseVersion}`, | ||
draft: false, | ||
prerelease: true | ||
}; | ||
console.log('createReleaseRequestBody: ' + JSON.stringify(createReleaseRequestBody, null, 2)); | ||
|
||
request.post( | ||
{ | ||
url: "https://api.github.com/repos/Microsoft/react-native/releases", | ||
headers: { | ||
"User-Agent": userAgent, | ||
Authorization: authHeader | ||
}, | ||
json: true, | ||
body: createReleaseRequestBody | ||
}, | ||
function(err, res, body) { | ||
if (err) { | ||
console.log(err); | ||
throw new Error("Error fetching release id."); | ||
} | ||
|
||
console.log("Created GitHub Release: " + JSON.stringify(body, null, 2)); | ||
uploadReleaseAssetUrl = assetUpdateUrl.replace(/{id}/, body.id); | ||
uploadTarBallToRelease(); | ||
} | ||
); | ||
} | ||
|
||
doPublish(); |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,84 @@ | ||
# This file defines the Android PR build steps used during the CI loop | ||
name: $(Date:yyyyMMdd).$(Rev:.r) | ||
|
||
trigger: none # will disable CI builds entirely | ||
|
||
pr: | ||
- master | ||
|
||
jobs: | ||
- job: RNGithubPublish | ||
displayName: React-Native GitHub Publish | ||
pool: | ||
name: OE Standard Pool | ||
demands: ['Agent.OS -equals Windows_NT', 'ANDROID_NDK', 'OnPrem -equals False'] | ||
timeoutInMinutes: 90 # how long to run the job before automatically cancelling | ||
cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them | ||
steps: | ||
- checkout: self # self represents the repo where the initial Pipelines YAML file was found | ||
clean: true # whether to fetch clean each time | ||
fetchDepth: 2 # the depth of commits to ask Git to fetch | ||
lfs: false # whether to download Git-LFS files | ||
submodules: recursive # set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules | ||
persistCredentials: true # set to 'true' to leave the OAuth token in the Git config after the initial fetch | ||
|
||
- task: CmdLine@2 | ||
displayName: npm install | ||
inputs: | ||
script: npm install | ||
|
||
- task: NuGetCommand@2 | ||
displayName: NuGet restore | ||
inputs: | ||
command: restore | ||
restoreSolution: ReactAndroid/packages.config | ||
feedsToUse: config | ||
#vstsFeed: # Required when feedsToUse == Select | ||
#includeNuGetOrg: true # Required when feedsToUse == Select | ||
nugetConfigPath: ReactAndroid/NuGet.Config | ||
#externalFeedCredentials: # Optional | ||
#noCache: false | ||
#disableParallelProcessing: false | ||
restoreDirectory: packages/ | ||
verbosityRestore: Detailed # Options: quiet, normal, detailed | ||
#packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' # Required when command == Push | ||
#nuGetFeedType: 'internal' # Required when command == Push# Options: internal, external | ||
#publishVstsFeed: # Required when command == Push && NuGetFeedType == Internal | ||
#publishPackageMetadata: true # Optional | ||
#allowPackageConflicts: # Optional | ||
#publishFeedCredentials: # Required when command == Push && NuGetFeedType == External | ||
#verbosityPush: 'Detailed' # Options: quiet, normal, detailed | ||
#packagesToPack: '**/*.csproj' # Required when command == Pack | ||
#configuration: '$(BuildConfiguration)' # Optional | ||
#packDestination: '$(Build.ArtifactStagingDirectory)' # Optional | ||
#versioningScheme: 'off' # Options: off, byPrereleaseNumber, byEnvVar, byBuildNumber | ||
#includeReferencedProjects: false # Optional | ||
#versionEnvVar: # Required when versioningScheme == ByEnvVar | ||
#majorVersion: '1' # Required when versioningScheme == ByPrereleaseNumber | ||
#minorVersion: '0' # Required when versioningScheme == ByPrereleaseNumber | ||
#patchVersion: '0' # Required when versioningScheme == ByPrereleaseNumber | ||
#packTimezone: 'utc' # Required when versioningScheme == ByPrereleaseNumber# Options: utc, local | ||
#includeSymbols: false # Optional | ||
#toolPackage: # Optional | ||
#buildProperties: # Optional | ||
#basePath: # Optional | ||
#verbosityPack: 'Detailed' # Options: quiet, normal, detailed | ||
#arguments: # Required when command == Custom | ||
|
||
- task: CmdLine@1 | ||
displayName: 'npm auth' | ||
inputs: | ||
filename: npm | ||
arguments: 'config set $(publishnpmfeed)/registry/:_authToken $(npmTokenOffice)' | ||
|
||
- task: CmdLine@2 | ||
displayName: Do Publish | ||
inputs: | ||
script: node .ado/publish.js | ||
|
||
- task: CmdLine@1 | ||
displayName: 'npm unauth' | ||
inputs: | ||
filename: npm | ||
arguments: 'config set $(publishnpmfeed)/registry/:_authToken XXXXX' | ||
|
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.