[build] Add build that verifies the submodule pin is up-to-date

This commit is contained in:
Konstantin Käfer
2018-01-10 16:04:06 -08:00
parent ecfb77c637
commit 7ffde741b7
3 changed files with 67 additions and 0 deletions

View File

@@ -4,6 +4,7 @@ workflows:
version: 2
default:
jobs:
- nitpick
- clang-tidy:
filters:
branches:
@@ -217,6 +218,31 @@ step-library:
destination: render-tests
jobs:
nitpick:
docker:
- image: mbgl/7d2403f42e:base
working_directory: /src
environment:
LIBSYSCONFCPUS: 4
JOBS: 4
BUILDTYPE: Debug
steps:
- checkout
- *generate-cache-key
- *restore-cache
- run:
name: Initialize submodule
command: git submodule update --init mapbox-gl-js
- run:
name: npm install
command: npm install --ignore-scripts
- *save-cache
- run:
name: Verify submodule pin
command: scripts/nitpick/submodule-pin.js
when: always
# ------------------------------------------------------------------------------
clang-tidy:
docker:

28
scripts/nitpick/index.js Normal file
View File

@@ -0,0 +1,28 @@
var failed = false;
process.on('exit', function() {
if (failed) {
process.exitCode = 1;
}
});
module.exports = function(status, str, desc) {
if (status) {
console.warn(`\x1b[1m\x1b[32m✔︎ ${str}\x1b[0m`);
} else {
console.warn(`\x1b[1m\x1b[31m✘ ${str}\x1b[0m`);
failed = true;
}
if (desc) {
console.warn(`${desc.split('\n').map((line) => '| ' + line).join('\n')}\n`);
}
};
module.exports.ok = function(str, desc) {
module.exports(true, str, desc);
};
module.exports.fail = function(str, desc) {
module.exports(false, str, desc);
};

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env node
const nitpick = require('.');
const child_process = require('child_process');
// Make sure that the mapbox-gl-js submodule pin is up to date
const head = child_process.execSync('git -C mapbox-gl-js rev-parse HEAD').toString().trim();
const revs = child_process.execSync(`git -C mapbox-gl-js branch -a --contains ${head}`).toString().split('\n');
if (revs.indexOf(' remotes/origin/master') >= 0) {
nitpick.ok(`mapbox-gl-js submodule pin is merged to master`);
} else {
nitpick.fail(`mapbox-gl-js submodule is pinned to ${head}, which isn't merged to master`);
}