@@ -1361,6 +1361,9 @@ jobs:
1361
1361
latest :
1362
1362
type : boolean
1363
1363
default : false
1364
+ dryrun :
1365
+ type : boolean
1366
+ default : false
1364
1367
executor : reactnativeios
1365
1368
steps :
1366
1369
- checkout_code_with_cache
@@ -1373,13 +1376,15 @@ jobs:
1373
1376
- run :
1374
1377
name : " Set new react-native version and commit changes"
1375
1378
command : |
1376
- node ./scripts/prepare-package-for-release.js -v << parameters.version >> -l << parameters.latest >>
1379
+ node ./scripts/prepare-package-for-release.js -v << parameters.version >> -l << parameters.latest >> --dry-run << parameters.dryrun >>
1377
1380
1378
1381
build_npm_package :
1379
1382
parameters :
1380
- publish_npm_args :
1381
- type : string
1382
- default : --dry-run
1383
+ release_type :
1384
+ description : The type of release to build. Must be one of "nightly", "release", "dry-run".
1385
+ type : enum
1386
+ enum : ["nightly", "release", "dry-run"]
1387
+ default : " dry-run"
1383
1388
executor : reactnativeandroid
1384
1389
environment :
1385
1390
- HERMES_WS_DIR : *hermes_workspace_root
@@ -1422,8 +1427,8 @@ jobs:
1422
1427
- when :
1423
1428
condition :
1424
1429
or :
1425
- - equal : [ -- release, << parameters.publish_npm_args >> ]
1426
- - equal : [ -- nightly, << parameters.publish_npm_args >> ]
1430
+ - equal : [ " release" , << parameters.release_type >> ]
1431
+ - equal : [ " nightly" , << parameters.release_type >> ]
1427
1432
steps :
1428
1433
- run : echo "//registry.npmjs.org/:_authToken=${CIRCLE_NPM_TOKEN}" > ~/.npmrc
1429
1434
- run : |
@@ -1432,7 +1437,7 @@ jobs:
1432
1437
echo "machine github.com login react-native-bot password $GITHUB_TOKEN" > ~/.netrc
1433
1438
# END: Stables and nightlies
1434
1439
1435
- - run : node ./scripts/publish-npm.js << parameters.publish_npm_args >>
1440
+ - run : node ./scripts/publish-npm.js -- << parameters.release_type >>
1436
1441
- run :
1437
1442
name : Zip Hermes Native Symbols
1438
1443
command : zip -r /tmp/hermes-native-symbols.zip ~/react-native/ReactAndroid/hermes-engine/build/intermediates/cmake/
@@ -1443,7 +1448,7 @@ jobs:
1443
1448
# Provide a react-native package for this commit as a Circle CI release artifact.
1444
1449
- when :
1445
1450
condition :
1446
- equal : [ -- dry-run, << parameters.publish_npm_args >> ]
1451
+ equal : [ " dry-run" , << parameters.release_type >> ]
1447
1452
steps :
1448
1453
- run :
1449
1454
name : Build release package as a job artifact
@@ -1475,7 +1480,7 @@ jobs:
1475
1480
# START: Stable releases
1476
1481
- when :
1477
1482
condition :
1478
- equal : [ -- release, << parameters.publish_npm_args >> ]
1483
+ equal : [ " release" , << parameters.release_type >> ]
1479
1484
steps :
1480
1485
- run :
1481
1486
name : Update rn-diff-purge to generate upgrade-support diff
@@ -1484,15 +1489,44 @@ jobs:
1484
1489
-H "Accept: application/vnd.github.v3+json" \
1485
1490
-u "$PAT_USERNAME:$PAT_TOKEN" \
1486
1491
-d "{\"event_type\": \"publish\", \"client_payload\": { \"version\": \"${CIRCLE_TAG:1}\" }}"
1492
+ # END: Stable releases
1493
+
1494
+ # START: Stables and commitlies
1495
+ - when :
1496
+ condition :
1497
+ or :
1498
+ - equal : [ "release", << parameters.release_type >> ]
1499
+ - equal : [ "dry-run", << parameters.release_type >> ]
1500
+ steps :
1487
1501
- run :
1488
1502
name : Install dependencies
1489
1503
command : apt update && apt install -y jq jo
1490
1504
- run :
1491
1505
name : Create draft GitHub Release and upload Hermes binaries
1492
1506
command : |
1493
- ARTIFACTS=("$HERMES_WS_DIR/hermes-runtime-darwin/hermes-runtime-darwin-$CIRCLE_TAG.tar.gz")
1494
- ./scripts/circleci/create_github_release.sh $CIRCLE_TAG $CIRCLE_PROJECT_USERNAME $CIRCLE_PROJECT_REPONAME $GITHUB_TOKEN "${ARTIFACTS[@]}"
1495
- # END: Stable releases
1507
+ RELEASE_VERSION=$(cat build/.version)
1508
+ if [[ << parameters.release_type >> == "release" ]]; then
1509
+ GIT_TAG=$CIRCLE_TAG
1510
+ elif [[ << parameters.release_type >> == "dry-run" ]]; then
1511
+ GIT_TAG=v1000.0.0
1512
+ fi
1513
+
1514
+ ARTIFACTS=("")
1515
+ for build_type in "Debug" "Release"; do
1516
+ TARBALL_FILENAME=$(node ./scripts/hermes/get-tarball-name.js \
1517
+ --buildType $build_type \
1518
+ --releaseVersion $RELEASE_VERSION)
1519
+
1520
+ ARTIFACTS+=("$HERMES_WS_DIR/hermes-runtime-darwin/$TARBALL_FILENAME")
1521
+ done
1522
+
1523
+ ./scripts/circleci/create_github_release.sh \
1524
+ << parameters.release_type >> \
1525
+ $GIT_TAG \
1526
+ $RELEASE_VERSION \
1527
+ $GITHUB_TOKEN \
1528
+ "${ARTIFACTS[@]}"
1529
+ # END: Stable and commitlies
1496
1530
1497
1531
# -------------------------
1498
1532
# JOBS: Nightly
@@ -1551,7 +1585,7 @@ workflows:
1551
1585
- prepare_hermes_workspace
1552
1586
- build_npm_package :
1553
1587
# Build a release package on every untagged commit, but do not publish to npm.
1554
- publish_npm_args : -- dry-run
1588
+ release_type : " dry-run"
1555
1589
requires :
1556
1590
- build_hermesc_linux
1557
1591
- build_hermes_macos
@@ -1639,13 +1673,44 @@ workflows:
1639
1673
- build_npm_package :
1640
1674
name : build_and_publish_npm_package
1641
1675
context : react-native-bot
1642
- publish_npm_args : -- release
1676
+ release_type : " release"
1643
1677
filters : *only_release_tags
1644
1678
requires :
1645
1679
- build_hermesc_linux
1646
1680
- build_hermes_macos
1647
1681
- build_hermesc_windows
1648
1682
1683
+ package_and_publish_release_dryrun :
1684
+ jobs :
1685
+ - prepare_package_for_release :
1686
+ name : prepare_package_for_release
1687
+ version : ' v1000.0.1'
1688
+ latest : false
1689
+ dryrun : true
1690
+ - prepare_hermes_workspace :
1691
+ requires :
1692
+ - prepare_package_for_release
1693
+ - build_hermesc_linux :
1694
+ requires :
1695
+ - prepare_hermes_workspace
1696
+ - build_hermes_macos :
1697
+ requires :
1698
+ - prepare_hermes_workspace
1699
+ matrix :
1700
+ parameters :
1701
+ flavor : ["Debug", "Release"]
1702
+ - build_hermesc_windows :
1703
+ requires :
1704
+ - prepare_hermes_workspace
1705
+ - build_npm_package :
1706
+ name : build_and_publish_npm_package
1707
+ context : react-native-bot
1708
+ release_type : " dry-run"
1709
+ requires :
1710
+ - build_hermesc_linux
1711
+ - build_hermes_macos
1712
+ - build_hermesc_windows
1713
+
1649
1714
analysis :
1650
1715
unless : << pipeline.parameters.run_package_release_workflow_only >>
1651
1716
jobs :
@@ -1684,7 +1749,7 @@ workflows:
1684
1749
requires :
1685
1750
- prepare_hermes_workspace
1686
1751
- build_npm_package :
1687
- publish_npm_args : -- nightly
1752
+ release_type : " nightly"
1688
1753
requires :
1689
1754
- build_hermesc_linux
1690
1755
- build_hermes_macos
0 commit comments