diff --git a/.travis.yml b/.travis.yml index c9989e25..abfae4e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,3 +11,7 @@ script: after_success: - npm config set "//registry.npmjs.org/:_authToken=\${NPM_API_KEY}" - script/cibuild --yes + +notifications: + slack: + secure: W9lPRuuPMNwElkXZ8UZtu5phgUNleDCK0PgERa28dkh5b0Y9xzRpIQPRJfqVYAPtnMVXhfYcqryMzA4oj0E4fc7OxQsKmMeF1OcTuj5N4CM5xXR/qXDehOUTp6fpCToIX9d4hZ2H///PCExpul3TcfxYJe6EWQCHYd1n6zKRl8g= diff --git a/CHANGELOG.md b/CHANGELOG.md index 79a8e622..982a0a68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # HEAD +# 9.1.0 + +This release updates our [stylelint config](/primer/stylelint-config-primer) to [v2.0.0](https://github.com/primer/stylelint-config-primer/releases/tag/v2.0.0), and to stylelint v7.13.0. Each module also now has a `lint` npm script, and there are top-level `test` and `lint` scripts that you can use to lint and test all modules in one go. + +This release also includes major improvements to our Travis build scripts to automatically publish PR builds, release candidates, and the "final" versions to npm. + +# 9.0.0 + +# 8.0.0 + +# 7.0.0 + +# 6.0.0 + +# 5.0.0 + # 4.4.0 - Adding primer-marketing module to primer diff --git a/modules/primer-alerts/package.json b/modules/primer-alerts/package.json index da775cd7..0fe74880 100644 --- a/modules/primer-alerts/package.json +++ b/modules/primer-alerts/package.json @@ -1,5 +1,5 @@ { - "version": "1.1.8", + "version": "1.2.0", "name": "primer-alerts", "description": "Flash messages, or alerts, inform users of successful or pending actions.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-avatars/package.json b/modules/primer-avatars/package.json index 83160a94..98338162 100644 --- a/modules/primer-avatars/package.json +++ b/modules/primer-avatars/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-avatars", "description": "Basic styles for user profile avatars.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-base/package.json b/modules/primer-base/package.json index cf983168..7dcb6362 100644 --- a/modules/primer-base/package.json +++ b/modules/primer-base/package.json @@ -1,5 +1,5 @@ { - "version": "1.1.5", + "version": "1.2.0", "name": "primer-base", "description": "CSS to reset the browsers default styles", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-blankslate/package.json b/modules/primer-blankslate/package.json index 7de9b306..48b48401 100644 --- a/modules/primer-blankslate/package.json +++ b/modules/primer-blankslate/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-blankslate", "description": "Blankslates are for when there is a lack of content within a page or section.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-box/package.json b/modules/primer-box/package.json index cb10b240..675446ff 100644 --- a/modules/primer-box/package.json +++ b/modules/primer-box/package.json @@ -1,5 +1,5 @@ { - "version": "2.1.8", + "version": "2.2.0", "name": "primer-box", "description": "A module for creating rounded-corner boxes with options for headers, lists, and footers.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-breadcrumb/package.json b/modules/primer-breadcrumb/package.json index f6a13aea..463c0b5e 100644 --- a/modules/primer-breadcrumb/package.json +++ b/modules/primer-breadcrumb/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-breadcrumb", "description": "Breadcrumb navigation for pages with parents / grandparents.", "homepage": "http://primercss.io/", @@ -23,8 +23,8 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-marketing-support": "^1.0.2", - "primer-support": "^4.0.7" + "primer-marketing-support": "^1.1.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-buttons/package.json b/modules/primer-buttons/package.json index a0ad58bf..67974504 100644 --- a/modules/primer-buttons/package.json +++ b/modules/primer-buttons/package.json @@ -1,5 +1,5 @@ { - "version": "2.0.6", + "version": "2.1.0", "name": "primer-buttons", "description": "A collection of buttons used for primary and secondary actions.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-cards/package.json b/modules/primer-cards/package.json index eab30e6e..c5dbc67f 100644 --- a/modules/primer-cards/package.json +++ b/modules/primer-cards/package.json @@ -1,5 +1,5 @@ { - "version": "0.1.8", + "version": "0.2.0", "name": "primer-cards", "description": "Card-like containers to group semantically related content together on marketing websites at GitHub.", "homepage": "http://primercss.io/", @@ -23,8 +23,8 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-marketing-support": "^1.0.2", - "primer-support": "^4.0.7" + "primer-marketing-support": "^1.1.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-core/package.json b/modules/primer-core/package.json index 151d81be..e1f05d34 100644 --- a/modules/primer-core/package.json +++ b/modules/primer-core/package.json @@ -1,5 +1,5 @@ { - "version": "6.0.0", + "version": "6.1.0", "name": "primer-core", "description": "Primer CSS's core modules", "homepage": "http://primercss.io/", @@ -21,17 +21,17 @@ "test": "npm run build" }, "dependencies": { - "primer-base": "^1.1.5", - "primer-box": "^2.1.8", - "primer-buttons": "^2.0.6", - "primer-forms": "^1.0.13", - "primer-layout": "^1.0.5", - "primer-navigation": "^1.0.6", - "primer-support": "^4.0.7", - "primer-table-object": "^1.0.9", - "primer-tooltips": "^1.0.2", - "primer-truncate": "^1.0.2", - "primer-utilities": "^4.3.5" + "primer-base": "^1.2.0", + "primer-box": "^2.2.0", + "primer-buttons": "^2.1.0", + "primer-forms": "^1.1.0", + "primer-layout": "^1.1.0", + "primer-navigation": "^1.1.0", + "primer-support": "^4.1.0", + "primer-table-object": "^1.1.0", + "primer-tooltips": "^1.1.0", + "primer-truncate": "^1.1.0", + "primer-utilities": "^4.4.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-css/package.json b/modules/primer-css/package.json index 1902331c..3eb536cc 100644 --- a/modules/primer-css/package.json +++ b/modules/primer-css/package.json @@ -1,5 +1,5 @@ { - "version": "9.0.0", + "version": "9.1.0", "name": "primer-css", "description": "Primer is the CSS framework that powers GitHub's front-end design. Primer-css includes 23 packages that are grouped into 3 core meta-packages for easy install. Each package and meta-package is independently versioned and distributed via npm, so it's easy to include all or part of Primer within your own project.", "homepage": "http://primercss.io/", @@ -21,33 +21,33 @@ "test": "npm run build" }, "dependencies": { - "primer-alerts": "^1.1.8", - "primer-avatars": "^1.0.2", - "primer-base": "^1.1.5", - "primer-blankslate": "^1.0.2", - "primer-box": "^2.1.8", - "primer-breadcrumb": "^1.0.2", - "primer-buttons": "^2.0.6", - "primer-cards": "^0.1.8", - "primer-core": "^6.0.0", - "primer-forms": "^1.0.13", - "primer-labels": "^1.1.6", - "primer-layout": "^1.0.5", - "primer-markdown": "^3.3.13", - "primer-marketing": "^5.0.2", - "primer-marketing-support": "^1.0.2", - "primer-marketing-type": "^1.0.2", - "primer-marketing-utilities": "^1.0.2", - "primer-navigation": "^1.0.6", - "primer-page-headers": "^1.0.2", - "primer-page-sections": "^1.0.2", - "primer-product": "^5.0.2", - "primer-support": "^4.0.7", - "primer-table-object": "^1.0.9", - "primer-tables": "^1.0.2", - "primer-tooltips": "^1.0.2", - "primer-truncate": "^1.0.2", - "primer-utilities": "^4.3.5" + "primer-alerts": "^1.2.0", + "primer-avatars": "^1.1.0", + "primer-base": "^1.2.0", + "primer-blankslate": "^1.1.0", + "primer-box": "^2.2.0", + "primer-breadcrumb": "^1.1.0", + "primer-buttons": "^2.1.0", + "primer-cards": "^0.2.0", + "primer-core": "^6.1.0", + "primer-forms": "^1.1.0", + "primer-labels": "^1.2.0", + "primer-layout": "^1.1.0", + "primer-markdown": "^3.4.0", + "primer-marketing": "^5.1.0", + "primer-marketing-support": "^1.1.0", + "primer-marketing-type": "^1.1.0", + "primer-marketing-utilities": "^1.1.0", + "primer-navigation": "^1.1.0", + "primer-page-headers": "^1.1.0", + "primer-page-sections": "^1.1.0", + "primer-product": "^5.1.0", + "primer-support": "^4.1.0", + "primer-table-object": "^1.1.0", + "primer-tables": "^1.1.0", + "primer-tooltips": "^1.1.0", + "primer-truncate": "^1.1.0", + "primer-utilities": "^4.4.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-forms/package.json b/modules/primer-forms/package.json index 82c520bf..5851f909 100644 --- a/modules/primer-forms/package.json +++ b/modules/primer-forms/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.13", + "version": "1.1.0", "name": "primer-forms", "description": "Style individual form controls and utilize common layouts.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-labels/package.json b/modules/primer-labels/package.json index 2c967218..b8cd4668 100644 --- a/modules/primer-labels/package.json +++ b/modules/primer-labels/package.json @@ -1,5 +1,5 @@ { - "version": "1.1.6", + "version": "1.2.0", "name": "primer-labels", "description": "Labels add metatdata or indicate status of items and navigational elements.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-layout/package.json b/modules/primer-layout/package.json index 5077799f..67d1a2a8 100644 --- a/modules/primer-layout/package.json +++ b/modules/primer-layout/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.5", + "version": "1.1.0", "name": "primer-layout", "description": "Containers, rows, and columns for creating page layout.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-markdown/package.json b/modules/primer-markdown/package.json index 6cfe672c..552568eb 100644 --- a/modules/primer-markdown/package.json +++ b/modules/primer-markdown/package.json @@ -1,5 +1,5 @@ { - "version": "3.3.13", + "version": "3.4.0", "name": "primer-markdown", "description": "GitHub stylesheets for rendering markdown.", "homepage": "https://github.com/primer/primer-markdown", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-marketing-support/package.json b/modules/primer-marketing-support/package.json index ce60abd5..bf49451d 100644 --- a/modules/primer-marketing-support/package.json +++ b/modules/primer-marketing-support/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-marketing-support", "description": "Sass variables, mixins, and functions for use in our components.", "homepage": "http://primercss.io/", diff --git a/modules/primer-marketing-type/package.json b/modules/primer-marketing-type/package.json index d1bbd9fb..f19f6f0e 100644 --- a/modules/primer-marketing-type/package.json +++ b/modules/primer-marketing-type/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-marketing-type", "description": "Typography for marketing websites at GitHub", "homepage": "http://primercss.io/", @@ -23,8 +23,8 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-marketing-support": "^1.0.2", - "primer-support": "^4.0.7" + "primer-marketing-support": "^1.1.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-marketing-utilities/package.json b/modules/primer-marketing-utilities/package.json index a59bef4d..46f62951 100644 --- a/modules/primer-marketing-utilities/package.json +++ b/modules/primer-marketing-utilities/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-marketing-utilities", "description": "Marketing specific immutable, atomic CSS classes", "homepage": "http://primercss.io/", @@ -23,8 +23,8 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-marketing-support": "^1.0.2", - "primer-support": "^4.0.7" + "primer-marketing-support": "^1.1.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-marketing/package.json b/modules/primer-marketing/package.json index 28ca7738..295f1fa9 100644 --- a/modules/primer-marketing/package.json +++ b/modules/primer-marketing/package.json @@ -1,5 +1,5 @@ { - "version": "5.0.2", + "version": "5.1.0", "name": "primer-marketing", "description": "Primer CSS marketing packages", "homepage": "http://primercss.io/", @@ -21,15 +21,15 @@ "test": "npm run build" }, "dependencies": { - "primer-breadcrumb": "^1.0.2", - "primer-cards": "^0.1.8", - "primer-marketing-support": "^1.0.2", - "primer-marketing-type": "^1.0.2", - "primer-marketing-utilities": "^1.0.2", - "primer-page-headers": "^1.0.2", - "primer-page-sections": "^1.0.2", - "primer-support": "^4.0.7", - "primer-tables": "^1.0.2" + "primer-breadcrumb": "^1.1.0", + "primer-cards": "^0.2.0", + "primer-marketing-support": "^1.1.0", + "primer-marketing-type": "^1.1.0", + "primer-marketing-utilities": "^1.1.0", + "primer-page-headers": "^1.1.0", + "primer-page-sections": "^1.1.0", + "primer-support": "^4.1.0", + "primer-tables": "^1.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-navigation/package.json b/modules/primer-navigation/package.json index 50ea9e99..3eee344f 100644 --- a/modules/primer-navigation/package.json +++ b/modules/primer-navigation/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.6", + "version": "1.1.0", "name": "primer-navigation", "description": "Singular purpose and flexible navigation elements.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-page-headers/package.json b/modules/primer-page-headers/package.json index 46a52f31..8174a668 100644 --- a/modules/primer-page-headers/package.json +++ b/modules/primer-page-headers/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-page-headers", "description": "Jumbotrons, heroes, and featured content sections for marketing websites at GitHub.", "homepage": "http://primercss.io/", @@ -23,8 +23,8 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-marketing-support": "^1.0.2", - "primer-support": "^4.0.7" + "primer-marketing-support": "^1.1.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-page-sections/package.json b/modules/primer-page-sections/package.json index 47c93299..ae46179c 100644 --- a/modules/primer-page-sections/package.json +++ b/modules/primer-page-sections/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-page-sections", "description": "Styles to create distinct sections of marketing pages at GitHub.", "homepage": "http://primercss.io/", @@ -23,8 +23,8 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-marketing-support": "^1.0.2", - "primer-support": "^4.0.7" + "primer-marketing-support": "^1.1.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-product/package.json b/modules/primer-product/package.json index 1c2939db..4259d705 100644 --- a/modules/primer-product/package.json +++ b/modules/primer-product/package.json @@ -1,5 +1,5 @@ { - "version": "5.0.2", + "version": "5.1.0", "name": "primer-product", "description": "Primer CSS's product modules", "homepage": "http://primercss.io/", @@ -21,12 +21,12 @@ "test": "npm run build" }, "dependencies": { - "primer-alerts": "^1.1.8", - "primer-avatars": "^1.0.2", - "primer-blankslate": "^1.0.2", - "primer-labels": "^1.1.6", - "primer-markdown": "^3.3.13", - "primer-support": "^4.0.7" + "primer-alerts": "^1.2.0", + "primer-avatars": "^1.1.0", + "primer-blankslate": "^1.1.0", + "primer-labels": "^1.2.0", + "primer-markdown": "^3.4.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-support/package.json b/modules/primer-support/package.json index 7b2fc7e4..016f7895 100644 --- a/modules/primer-support/package.json +++ b/modules/primer-support/package.json @@ -1,5 +1,5 @@ { - "version": "4.0.7", + "version": "4.1.0", "name": "primer-support", "description": "Sass variables, mixins, and functions for use in our components.", "homepage": "http://primercss.io/", diff --git a/modules/primer-table-object/package.json b/modules/primer-table-object/package.json index b2b4bd26..74a2b55a 100644 --- a/modules/primer-table-object/package.json +++ b/modules/primer-table-object/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.9", + "version": "1.1.0", "name": "primer-table-object", "description": "A module for creating dynamically resizable elements that always sit on the same horizontal line.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-tables/package.json b/modules/primer-tables/package.json index ef7f1aca..5a7c5582 100644 --- a/modules/primer-tables/package.json +++ b/modules/primer-tables/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-tables", "description": "Styles to display tabular data for marketing websites at GitHub.", "homepage": "http://primercss.io/", @@ -23,8 +23,8 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-marketing-support": "^1.0.2", - "primer-support": "^4.0.7" + "primer-marketing-support": "^1.1.0", + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-tooltips/package.json b/modules/primer-tooltips/package.json index d38684c5..0ec42391 100644 --- a/modules/primer-tooltips/package.json +++ b/modules/primer-tooltips/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-tooltips", "description": "Add tooltips built entirely in CSS to nearly any element.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-truncate/package.json b/modules/primer-truncate/package.json index 56f8d532..651f0523 100644 --- a/modules/primer-truncate/package.json +++ b/modules/primer-truncate/package.json @@ -1,5 +1,5 @@ { - "version": "1.0.2", + "version": "1.1.0", "name": "primer-truncate", "description": "Shorten text with an ellipsis.", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/modules/primer-utilities/package.json b/modules/primer-utilities/package.json index dd6ae11d..007b2d34 100644 --- a/modules/primer-utilities/package.json +++ b/modules/primer-utilities/package.json @@ -1,5 +1,5 @@ { - "version": "4.3.5", + "version": "4.4.0", "name": "primer-utilities", "description": "Immutable, atomic CSS classes to rapidly build product", "homepage": "http://primercss.io/", @@ -23,7 +23,7 @@ "test": "npm run build && npm run lint" }, "dependencies": { - "primer-support": "^4.0.7" + "primer-support": "^4.1.0" }, "devDependencies": { "primer-module-build": "*", diff --git a/package.json b/package.json index 5317b64a..bcc586ab 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "devDependencies": { "commit-status": "^4.1.0", - "lerna": "^2.0.0" + "lerna": "^2.0.0", + "semver": "^5.3.0" } } diff --git a/script/cibuild b/script/cibuild index 4a7310d1..dab000db 100755 --- a/script/cibuild +++ b/script/cibuild @@ -3,18 +3,49 @@ set -e # --yes gets passed in by .travis.yml, # which makes this easier to test locally -args=${@:1} +args=$@ -# always publish a pr release if this is a PR build -if [[ $TRAVIS_EVENT_TYPE = pull_request ]]; then - script/release-pr ${args} -# merges to dev build a release candidate -elif [[ $TRAVIS_BRANCH = dev ]]; then - script/release-candidate ${args} -# publish a release when we merge to master -elif [[ $TRAVIS_BRANCH = master ]]; then - script/release ${args} -else - echo "⚠️ This isn't a PR and '${TRAVIS_BRANCH}' isn't a release branch." +event="$TRAVIS_EVENT_TYPE" +branch="$TRAVIS_BRANCH" +# use $TRAVIS_PULL_REQUEST_BRANCH if this is a PR +if [[ "$event" = "pull_request" ]]; then + branch="$TRAVIS_PULL_REQUEST_BRANCH" +fi + +echo "===== CI build =====" +echo " event: $event" +echo " branch: $branch" +echo "====================" + +if [[ "$event" = "" || "$branch" = "" ]]; then + echo '❌ Missing $TRAVIS_EVENT_TYPE or $TRAVIS_BRANCH!' exit 1 fi + +# release branches publish a release candidate +if [[ "$branch" =~ ^release- ]]; then + # only publish RCs for push builds + if [[ "$event" = "push" ]]; then + script/notify pending + script/release-candidate $args + script/notify success + else + echo "⚠️ This appears to be a release branch, but we only publish *push* builds." + echo "(TRAVIS_EVENT_TYPE: $event)" + exit 1 + fi +# always publish a pr release if this is a PR build +elif [[ "$event" = "pull_request" ]]; then + script/notify pending + script/release-pr $args + script/notify success +# publish a release when we merge to master +elif [[ "$branch" = "master" ]]; then + script/notify pending + script/release $args + script/notify success +else + echo "⚠️ This isn't a PR and '$branch' isn't a release branch." + exit 1 +fi + diff --git a/script/notify b/script/notify new file mode 100755 index 00000000..781659c2 --- /dev/null +++ b/script/notify @@ -0,0 +1,32 @@ +#!/bin/bash +set -e + +if [[ $# -lt 1 ]]; then + echo "No status provided!" >&2 + exit 1 +fi + +# the commit status context +context="npm publish" +_status=$1 + +# get the published version of primer-css from its package.json +package=primer-css +version=$(jq -r .version modules/$package/package.json) +published="$package@$version" + +message="" +if [[ "$_status" = "success" ]]; then + # TODO point this at the contributing docs! + message="https://unpkg.com/$published/build/build.css" +fi + +# XXX this will go away if we build pushes instead of PRs +if [[ "$TRAVIS_PULL_REQUEST_SHA" != "" ]]; then + # setting TRAVIS_COMMIT inline here is a fix for: + # + export TRAVIS_COMMIT=$TRAVIS_PULL_REQUEST_SHA +fi + +echo "📡 Transmitting publish status for $published..." +commit-status "$_status" "$context" "$published" "$message" diff --git a/script/release b/script/release index 9ed06ae3..2408158a 100755 --- a/script/release +++ b/script/release @@ -1,4 +1,4 @@ #!/bin/bash set -e -echo "📦 Publishing latest release!" -echo lerna publish +echo "📦 Publishing latest release..." +lerna exec -- npm publish diff --git a/script/release-candidate b/script/release-candidate index 2c0129f3..9f6447bb 100755 --- a/script/release-candidate +++ b/script/release-candidate @@ -1,4 +1,61 @@ #!/bin/bash set -e echo "👌 Publishing release candidate..." -echo lerna publish --npm-tag=rc + +PATH=$(npm bin):$PATH + +package=primer-css +npm_tag=rc +log=/tmp/rc.log + +function bump() { + npm version --no-git $@ +} + +# get the version we're publishing as a release candidate +local_version=$(jq -r .version modules/$package/package.json) +if [[ $local_version =~ "-" ]]; then + echo "❌ Found pre-release version: $package@$local_version; bailing!" + exit 1 +else + echo "🏔 Local version: $package@$local_version" +fi + +# get the version most recently published to the rc dist-tag +rc_version=$(npm info $package@$npm_tag version) +echo "📦 Published version for $package@$npm_tag: $rc_version" +rc_release=${rc_version%-*} + +# determine the +next_version=$( + semver --increment prerelease --preid $npm_tag $rc_version +) +echo "🤜 Next version: $package@$next_version" + +# strip the pre-release version, yielding just major.minor.patch +pre_version=${next_version:${#local_version}} +echo " Prerelease suffix: '$pre_version'" + +# if this is the same version, we need to bump the prerelease +# for all of the modules using the same prerelease identifier +echo "Updating all module versions in place..." +echo +module_dirs=modules/primer-* +for module_dir in $module_dirs; do + pushd $module_dir > /dev/null + module=$(basename $module_dir) + + # determine the local version (in git) + module_version=$(jq -r .version package.json) + module_next_version="$module_version$pre_version" + + echo "$module@$module_version => $module_next_version" + # "upgrade" to the most recent RC version so that + # `npm version prerelease` can increment automatically + bump --quiet "$module_next_version" >> $log + + popd > /dev/null +done + +# publish all the things! +lerna exec --bail -- npm publish --tag=$npm_tag diff --git a/script/release-pr b/script/release-pr index e162f700..8af6061a 100755 --- a/script/release-pr +++ b/script/release-pr @@ -1,26 +1,8 @@ #!/bin/bash set -e -args=${@:1} -package=primer-css +args=$@ npm_tag=pr -# the commit status context -context=npm/publish/${npm_tag} -echo "🐦 Publishing PR release to dist-tag '${npm_tag}'..." -lerna publish --npm-tag=${npm_tag} --canary --no-git ${args} - -# get the published version of primer-css from its package.json -version=`jq -r .version modules/${package}/package.json` -slug="${package}@${version}" - -echo "📡 Transmitting release success for ${slug} ..." - -if [[ $TRAVIS_PULL_REQUEST_SHA ]]; then - # setting TRAVIS_COMMIT inline here is a fix for: - # - TRAVIS_COMMIT=$TRAVIS_PULL_REQUEST_SHA \ - commit-status success ${context} \ - "npm install ${slug}" \ - "https://unpkg.com/${slug}/build/build.css" -fi +echo "🐦 Publishing PR release to dist-tag '$npm_tag'..." +lerna publish --npm-tag=$npm_tag --canary --no-git $args diff --git a/script/version b/script/version new file mode 100755 index 00000000..f1de8026 --- /dev/null +++ b/script/version @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +if [[ $# -lt 1 ]]; then + echo "You must provide a version!" + exit 1 +fi + +version=$1 +module=${2:-primer-css} + +cd modules/$module +echo "${module}@$(jq -r .version package.json) => ${version}" +npm version --no-git ${@:1} > /dev/null