Explorar el Código

Bump version to 2.2.1 and change release versiosing method

Shalom Yerushalmy hace 5 años
padre
commit
9e70f936a5
Se han modificado 2 ficheros con 86 adiciones y 53 borrados
  1. 1
    1
      package.json
  2. 85
    52
      scripts/release.js

+ 1
- 1
package.json Ver fichero

@@ -1,6 +1,6 @@
1 1
 {
2 2
   "name": "react-native-navigation",
3
-  "version": "2.0.0",
3
+  "version": "2.2.1",
4 4
   "description": "React Native Navigation - truly native navigation for iOS and Android",
5 5
   "license": "MIT",
6 6
   "nativePackage": true,

+ 85
- 52
scripts/release.js Ver fichero

@@ -3,6 +3,7 @@ const exec = require('shell-utils').exec;
3 3
 const semver = require('semver');
4 4
 const fs = require('fs');
5 5
 const _ = require('lodash');
6
+const path = require('path');
6 7
 
7 8
 // Workaround JS
8 9
 const isRelease = process.env.RELEASE_BUILD === 'true';
@@ -12,88 +13,120 @@ const VERSION_TAG = isRelease ? 'latest' : 'snapshot';
12 13
 const VERSION_INC = 'patch';
13 14
 
14 15
 function run() {
15
-  if (!validateEnv()) {
16
-    return;
17
-  }
18
-  setupGit();
19
-  createNpmRc();
20
-  versionTagAndPublish();
16
+    if (!validateEnv()) {
17
+        return;
18
+    }
19
+    setupGit();
20
+    createNpmRc();
21
+    versionTagAndPublish();
21 22
 }
22 23
 
23 24
 function validateEnv() {
24
-  if (!process.env.JENKINS_CI) {
25
-    throw new Error(`releasing is only available from CI`);
26
-  }
25
+    if (!process.env.JENKINS_CI) {
26
+        throw new Error(`releasing is only available from CI`);
27
+    }
27 28
 
28
-  if (!process.env.JENKINS_MASTER) {
29
-    console.log(`not publishing on a different build`);
30
-    return false;
31
-  }
29
+    if (!process.env.JENKINS_MASTER) {
30
+        console.log(`not publishing on a different build`);
31
+        return false;
32
+    }
32 33
 
33
-  if (process.env.GIT_BRANCH !== ONLY_ON_BRANCH) {
34
-    console.log(`not publishing on branch ${process.env.GIT_BRANCH}`);
35
-    return false;
36
-  }
34
+    if (process.env.GIT_BRANCH !== ONLY_ON_BRANCH) {
35
+        console.log(`not publishing on branch ${process.env.GIT_BRANCH}`);
36
+        return false;
37
+    }
37 38
 
38
-  return true;
39
+    return true;
39 40
 }
40 41
 
41 42
 function setupGit() {
42
-  exec.execSyncSilent(`git config --global push.default simple`);
43
-  exec.execSyncSilent(`git config --global user.email "${process.env.GIT_EMAIL}"`);
44
-  exec.execSyncSilent(`git config --global user.name "${process.env.GIT_USER}"`);
45
-  const remoteUrl = new RegExp(`https?://(\\S+)`).exec(exec.execSyncRead(`git remote -v`))[1];
46
-  exec.execSyncSilent(`git remote add deploy "https://${process.env.GIT_USER}:${process.env.GIT_TOKEN}@${remoteUrl}"`);
47
-  // exec.execSync(`git checkout ${ONLY_ON_BRANCH}`);
43
+    exec.execSyncSilent(`git config --global push.default simple`);
44
+    exec.execSyncSilent(`git config --global user.email "${process.env.GIT_EMAIL}"`);
45
+    exec.execSyncSilent(`git config --global user.name "${process.env.GIT_USER}"`);
46
+    const remoteUrl = new RegExp(`https?://(\\S+)`).exec(exec.execSyncRead(`git remote -v`))[1];
47
+    exec.execSyncSilent(`git remote add deploy "https://${process.env.GIT_USER}:${process.env.GIT_TOKEN}@${remoteUrl}"`);
48
+    // exec.execSync(`git checkout ${ONLY_ON_BRANCH}`);
48 49
 }
49 50
 
50 51
 function createNpmRc() {
51
-  exec.execSync(`rm -f package-lock.json`);
52
-  const content = `
52
+    exec.execSync(`rm -f package-lock.json`);
53
+    const content = `
53 54
 email=\${NPM_EMAIL}
54 55
 //registry.npmjs.org/:_authToken=\${NPM_TOKEN}
55 56
 `;
56
-  fs.writeFileSync(`.npmrc`, content);
57
+    fs.writeFileSync(`.npmrc`, content);
57 58
 }
58 59
 
59 60
 function versionTagAndPublish() {
60
-  const currentPublished = findCurrentPublishedVersion();
61
-  console.log(`current published version: ${currentPublished}`);
61
+    const packageVersion = semver.clean(process.env.npm_package_version);
62
+    console.log(`package version: ${packageVersion}`);
62 63
 
63
-  const version = isRelease ? process.env.VERSION : `${currentPublished}-snapshot.${process.env.BUILD_ID}`;
64
-  console.log(`Publishing version: ${version}`);
64
+    const currentPublished = findCurrentPublishedVersion();
65
+    console.log(`current published version: ${currentPublished}`);
65 66
 
66
-  tryPublishAndTag(version);
67
+    const version = isRelease
68
+        ? process.env.VERSION
69
+        : semver.gt(packageVersion, currentPublished)
70
+            ? `${packageVersion}-snapshot.${process.env.BUILD_ID}`
71
+            : `${currentPublished}-snapshot.${process.env.BUILD_ID}`;
72
+
73
+    console.log(`Publishing version: ${version}`);
74
+
75
+    tryPublishAndTag(version);
67 76
 }
68 77
 
69 78
 function findCurrentPublishedVersion() {
70
-  return exec.execSyncRead(`npm view ${process.env.npm_package_name} dist-tags.latest`);
79
+    return exec.execSyncRead(`npm view ${process.env.npm_package_name} dist-tags.latest`);
71 80
 }
72 81
 
73 82
 function tryPublishAndTag(version) {
74
-  let theCandidate = version;
75
-  for (let retry = 0; retry < 5; retry++) {
76
-    try {
77
-      tagAndPublish(theCandidate);
78
-      console.log(`Released ${theCandidate}`);
79
-      return;
80
-    } catch (err) {
81
-      const alreadyPublished = _.includes(err.toString(), 'You cannot publish over the previously published version');
82
-      if (!alreadyPublished) {
83
-        throw err;
84
-      }
85
-      console.log(`previously published. retrying with increased ${VERSION_INC}...`);
86
-      theCandidate = semver.inc(theCandidate, VERSION_INC);
83
+    let theCandidate = version;
84
+    for (let retry = 0; retry < 5; retry++) {
85
+        try {
86
+            tagAndPublish(theCandidate);
87
+            console.log(`Released ${theCandidate}`);
88
+            return;
89
+        } catch (err) {
90
+            const alreadyPublished = _.includes(err.toString(), 'You cannot publish over the previously published version');
91
+            if (!alreadyPublished) {
92
+                throw err;
93
+            }
94
+            console.log(`previously published. retrying with increased ${VERSION_INC}...`);
95
+            theCandidate = semver.inc(theCandidate, VERSION_INC);
96
+        }
87 97
     }
88
-  }
89 98
 }
90 99
 
91 100
 function tagAndPublish(newVersion) {
92
-  console.log(`trying to publish ${newVersion}...`);
93
-  exec.execSync(`npm --no-git-tag-version version ${newVersion}`);
94
-  exec.execSync(`npm publish --tag ${VERSION_TAG}`);
95
-  exec.execSync(`git tag -a ${newVersion} -m "${newVersion}"`);
96
-  exec.execSyncSilent(`git push deploy ${newVersion} || true`);
101
+    console.log(`trying to publish ${newVersion}...`);
102
+    exec.execSync(`npm --no-git-tag-version version ${newVersion}`);
103
+    exec.execSync(`npm publish --tag ${VERSION_TAG}`);
104
+    exec.execSync(`git tag -a ${newVersion} -m "${newVersion}"`);
105
+    exec.execSyncSilent(`git push deploy ${newVersion} || true`);
106
+    if (isRelease) {
107
+      updatePackageJsonGit(newVersion);
108
+    }
109
+}
110
+
111
+function getPackageJsonPath() {
112
+    return `${process.cwd()}/package.json`;
113
+}
114
+
115
+function writePackageJson(packageJson) {
116
+    fs.writeFileSync(getPackageJsonPath(), JSON.stringify(packageJson, null, 2));
117
+}
118
+
119
+function readPackageJson() {
120
+    return JSON.parse(fs.readFileSync(getPackageJsonPath()));
121
+}
122
+
123
+function updatePackageJsonGit(version) {
124
+    const packageJson = readPackageJson();
125
+    packageJson.version = version;
126
+    writePackageJson(packageJson);
127
+    exec.execSync(`git add package.json`);
128
+    exec.execSync(`git commit -m"Update package.json version to ${version} [ci skip]"`);
129
+    exec.execSync(`git push`);
97 130
 }
98 131
 
99 132
 run();