Skip to content

Commit

Permalink
merge master
Browse files Browse the repository at this point in the history
  • Loading branch information
acoates-ms committed Mar 23, 2019
2 parents baa51f2 + 9f1e909 commit 1b12e2c
Show file tree
Hide file tree
Showing 109 changed files with 2,417 additions and 788 deletions.
164 changes: 164 additions & 0 deletions .ado/publish.js
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();
84 changes: 84 additions & 0 deletions .ado/publish.yml
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'

6 changes: 5 additions & 1 deletion .flowconfig
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,11 @@
.*/Libraries/polyfills/.*

; Ignore metro
; .*/node_modules/metro/.*
.*/node_modules/metro/.*
.*/node_modules/metro-config/src/configTypes.flow.js.flow

; Ignore rn-cli.config.js
<PROJECT_ROOT>/rn-cli.config.js

; These should not be required directly
; require from fbjs/lib instead: require('fbjs/lib/invariant')
Expand Down
15 changes: 1 addition & 14 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -1,14 +1 @@
Libraries/Animated/* @janicduplessis
Libraries/NativeAnimation/* @janicduplessis
Libraries/Image/* @shergin
Libraries/Text/* @shergin
React/Base/* @shergin
React/Views/* @shergin
React/Modules/* @shergin
React/CxxBridge/* @mhorowitz
ReactAndroid/src/main/java/com/facebook/react/animated/* @janicduplessis
**/*.md @hramos
package.json @hramos
local-cli/core/* @grabbou @kureev
local-cli/link/* @grabbou @kureev
local-cli/unlink/* @grabbou @kureev
** @acoates-ms
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
GitHub Issues in the `facebook/react-native` repository are used exclusively for tracking bugs in React Native.
GitHub Issues in the `Microsoft/react-native` repository are used exclusively for tracking bugs in the Microsoft/React Native fork. If the issue concerns Facebook's react-native, submit the issue to facebook/react-native.

Please take a look at the issue templates at https://github.com/facebook/react-native/issues/new/choose before submitting a new issue. Following one of the issue templates will ensure maintainers can route your request efficiently. Thanks!
54 changes: 17 additions & 37 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,25 @@
Thank you for sending the PR! We appreciate you spending the time to work on these changes.
Help us understand your motivation by explaining why you decided to make this change.

If this PR fixes an issue, type "Fixes #issueNumber" to automatically close the issue when the PR is merged.

_Pull requests that expand test coverage are more likely to get reviewed. Add a test case whenever possible!_

Test Plan:
----------
Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work. Bonus points for screenshots and videos!

Changelog:
----------
Help reviewers and the release process by writing your own changelog entry. When the change doesn't impact React Native developers, it may be ommitted from the changelog for brevity. See below for an example.

[CATEGORY] [TYPE] - Message
# :warning: Make sure you are targeting Microsoft/react-native for your PR :warning:
(then delete these lines)

<!--
We are working on reducing the diff between Facebook's public version of react-native, and our Microsoft/react-native. Long term, we want to remove the need for our version and only depend on Facebook's react-native. In order to move in the right direction, new changes should be examined to ensure that we are doing the right thing.
CATEGORY may be:
- [General]
- [iOS]
- [Android]
TYPE may be:
- [Added] for new features.
- [Changed] for changes in existing functionality.
- [Deprecated] for soon-to-be removed features.
- [Removed] for now removed features.
- [Fixed] for any bug fixes.
- [Security] in case of vulnerabilities.
If you are making a new change then one of the following should be done:
- Consider if it is possible to achieve the desired behavior without making a change to react-native. Often a change can be made in a layer above react-native instead.
- Create a corresponding PR against [react-native on GitHub](https://github.com/facebook/react-native)
**Note:** Ideally you would wait for GitHub feedback before submitting to ISS, since we want to ensure that ISS doesn't deviate from GitHub.
-->

For more detail, see https://keepachangelog.com/en/1.0.0/#how
#### Please select one of the following
- [ ] I am removing an existing difference between facebook/react-native and Microsoft/react-native :thumbsup:
- [ ] I am cherry-picking a change from Facebook's react-native into Microsoft/react-native :thumbsup:
- [ ] I am making a fix / change for the macOS implementation of react-native
- [ ] I am making a change required for Microsoft usage of react-native

MESSAGE may answer "what and why" on a feature level. Use this to briefly tell React Native users about notable changes.
#### Description of changes

EXAMPLES:
(give an overview)

[General] [Added] - Add snapToOffsets prop to ScrollView component
[General] [Fixed] - Fix various issues in snapToInterval on ScrollView component
[iOS] [Fixed] - Fix crash in RCTImagePicker
#### Focus areas to test

-->
(optional)
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@ DerivedData
*.hmap
*.ipa
*.xcuserstate
project.xcworkspace
# exclude project.xcworkspace except for xcshareddata/WorkspaceSettings.xcsettings
project.xcworkspace/*
**/project.xcworkspace/contents.xcworkspacedata
**/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist

# Gradle
/build/
Expand Down
16 changes: 15 additions & 1 deletion CHANGELOG.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
{
"name": "@microsoft/react-native",
"name": "react-native",
"entries": [
{
"version": "0.0.2",
"tag": "react-native_v0.0.2",
"date": "Wed, 06 Mar 2019 05:43:46 GMT",
"comments": {
"patch": [
{
"comment": "Rename microsoft react-native",
"author": "Andrew Coates (REDMOND) <[email protected]>",
"commit": "0c0c2e0fa8762dda21b96ec3031a90450a45607f"
}
]
}
},
{
"version": "0.3.9",
"tag": "@microsoft/react-native_v0.3.9",
Expand Down
11 changes: 9 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# Change Log - @microsoft/react-native
# Change Log - react-native

This log was last generated on Tue, 05 Mar 2019 20:54:55 GMT and should not be manually modified.
This log was last generated on Wed, 06 Mar 2019 05:43:46 GMT and should not be manually modified.

## 0.0.2
Wed, 06 Mar 2019 05:43:46 GMT

### Patches

- Rename microsoft react-native

## 0.3.9
Tue, 05 Mar 2019 20:54:55 GMT
Expand Down
Loading

0 comments on commit 1b12e2c

Please sign in to comment.