diff --git a/.github/actions/buildpack-pr-check/action.yml b/.github/actions/buildpack-pr-check/action.yml new file mode 100644 index 000000000000..62b58807201a --- /dev/null +++ b/.github/actions/buildpack-pr-check/action.yml @@ -0,0 +1,13 @@ +name: "Checks whether a PR is buildpack related" +description: "Checks whether a PR is buildpack related" +inputs: + token: + description: "GitHub access token" + required: true + default: "" + label: + description: "Label to check for" + required: true +runs: + using: "node12" + main: "dist/index.js" diff --git a/.github/actions/buildpack-pr-check/package-lock.json b/.github/actions/buildpack-pr-check/package-lock.json new file mode 100644 index 000000000000..9f4978208850 --- /dev/null +++ b/.github/actions/buildpack-pr-check/package-lock.json @@ -0,0 +1,394 @@ +{ + "name": "buildpack-pr-check", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@actions/core": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.4.tgz", + "integrity": "sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg==" + }, + "@actions/github": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.1.1.tgz", + "integrity": "sha512-kAgTGUx7yf5KQCndVeHSwCNZuDBvPyxm5xKTswW2lofugeuC1AZX73nUUVDNaysnM9aKFMHv9YCdVJbg7syEyA==", + "requires": { + "@actions/http-client": "^1.0.3", + "@octokit/graphql": "^4.3.1", + "@octokit/rest": "^16.43.1" + } + }, + "@actions/http-client": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz", + "integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==", + "requires": { + "tunnel": "0.0.6" + } + }, + "@octokit/auth-token": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz", + "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==", + "requires": { + "@octokit/types": "^2.0.0" + } + }, + "@octokit/endpoint": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.3.tgz", + "integrity": "sha512-EzKwkwcxeegYYah5ukEeAI/gYRLv2Y9U5PpIsseGSFDk+G3RbipQGBs8GuYS1TLCtQaqoO66+aQGtITPalxsNQ==", + "requires": { + "@octokit/types": "^2.0.0", + "is-plain-object": "^3.0.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "requires": { + "os-name": "^3.1.0" + } + } + } + }, + "@octokit/graphql": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.3.1.tgz", + "integrity": "sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==", + "requires": { + "@octokit/request": "^5.3.0", + "@octokit/types": "^2.0.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "requires": { + "@octokit/types": "^2.0.1" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", + "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==" + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "requires": { + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.2.tgz", + "integrity": "sha512-7NPJpg19wVQy1cs2xqXjjRq/RmtSomja/VSWnptfYwuBxLdbYh2UjhGi0Wx7B1v5Iw5GKhfFDQL7jM7SSp7K2g==", + "requires": { + "@octokit/endpoint": "^5.5.0", + "@octokit/request-error": "^1.0.1", + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "requires": { + "os-name": "^3.1.0" + } + } + } + }, + "@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "requires": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "16.43.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz", + "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==", + "requires": { + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.5.0.tgz", + "integrity": "sha512-KEnLwOfdXzxPNL34fj508bhi9Z9cStyN7qY1kOfVahmqtAfrWw6Oq3P4R+dtsg0lYtZdWBpUrS/Ixmd5YILSww==", + "requires": { + "@types/node": ">= 8" + } + }, + "@types/node": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==" + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" + }, + "before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "requires": { + "isobject": "^4.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "requires": { + "os-name": "^3.1.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "windows-release": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "requires": { + "execa": "^1.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/.github/actions/buildpack-pr-check/package.json b/.github/actions/buildpack-pr-check/package.json new file mode 100644 index 000000000000..80448c50630f --- /dev/null +++ b/.github/actions/buildpack-pr-check/package.json @@ -0,0 +1,20 @@ +{ + "name": "buildpack-pr-check", + "version": "1.0.0", + "description": "An action that checks whether a pr was buildpack related", + "private": true, + "main": "index.js", + "scripts": { + "build": "tsc" + }, + "keywords": [], + "author": "Alexander Arlt", + "license": "MIT", + "dependencies": { + "@actions/core": "^1.2.4", + "@actions/github": "^2.1.1" + }, + "devDependencies": { + "typescript": "^3.8.3" + } +} diff --git a/.github/actions/buildpack-pr-check/src/index.ts b/.github/actions/buildpack-pr-check/src/index.ts new file mode 100644 index 000000000000..c745d899bb57 --- /dev/null +++ b/.github/actions/buildpack-pr-check/src/index.ts @@ -0,0 +1,59 @@ +import * as core from "@actions/core"; +import * as github from "@actions/github"; + +async function run() { + const token = core.getInput("token"); + + const octokit = new github.GitHub(token); + const context = github.context; + + const comments = await octokit.issues.listComments({ + ...context.repo, + issue_number: context.payload.pull_request!.number + }); + + const pull_request = await octokit.pulls.get({ + ...context.repo, + pull_number: context.payload.pull_request!.number + }); + + const actionComment = comments.data.find( + comment => comment.body.indexOf("Package: ") >= 0 && + comment.body.indexOf("Version: ") >= 0 && + comment.body.indexOf("Action: ") >= 0 && + comment.body.indexOf("Artifact: ") >= 0 && + comment.body.indexOf("Commit: ") >= 0 + ); + + if (actionComment) { + let pack = actionComment!.body.substr(actionComment!.body.indexOf("Package: ") + 9) + pack = pack.substr(0, pack.indexOf("\n")); + let version = actionComment!.body.substr(actionComment!.body.indexOf("Version: ") + 9) + version = version.substr(0, version.indexOf("\n")); + let action = actionComment!.body.substr(actionComment!.body.indexOf("Action: ") + 8) + action = action.substr(0, action.indexOf("\n")); + let artifact = actionComment!.body.substr(actionComment!.body.indexOf("Artifact: ") + 10) + artifact = artifact.substr(0, artifact.indexOf("\n")); + let commit = actionComment!.body.substr(actionComment!.body.indexOf("Commit: ") + 8) + + core.setOutput( + "publish", + pull_request.data.labels + .some(label => label.name === core.getInput("label")) + .toString() + ); + core.setOutput("package", pack.trim()); + core.setOutput("version", version.trim()); + core.setOutput("action", action.trim()); + core.setOutput("artifact", artifact.trim()); + core.setOutput("commit", commit.trim()); + + console.log("package", pack.trim()); + console.log("version", version.trim()); + console.log("action", action.trim()); + console.log("artifact", artifact.trim()); + console.log("commit", commit.trim()); + } +} + +run(); diff --git a/.github/actions/buildpack-pr-check/tsconfig.json b/.github/actions/buildpack-pr-check/tsconfig.json new file mode 100644 index 000000000000..67d94bc92287 --- /dev/null +++ b/.github/actions/buildpack-pr-check/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "outDir": "dist" + } +} diff --git a/.github/actions/buildpack-pr-comment/action.yml b/.github/actions/buildpack-pr-comment/action.yml new file mode 100644 index 000000000000..695bdcf41be0 --- /dev/null +++ b/.github/actions/buildpack-pr-comment/action.yml @@ -0,0 +1,26 @@ +name: "Add comment to current PR" +description: "Adds a comment to current PR" +inputs: + token: + description: "GitHub access token" + required: true + default: "" + action-id: + description: "GitHub Action ID" + required: true + default: "" + package-name: + description: "Name of the package being released" + required: true + default: "Something like buildpack-ubuntu2004" + package-version: + description: "Version of the package being released" + required: true + default: "Something like 1.0.0" + artifact: + description: "Name of the artifact" + required: true + default: "Something like buildpack-ubuntu2004-d12f0d12c9f69baa7b825033b2f9c89acea738bf1ae734efa4b343833f897e1d" +runs: + using: "node12" + main: "dist/index.js" diff --git a/.github/actions/buildpack-pr-comment/package-lock.json b/.github/actions/buildpack-pr-comment/package-lock.json new file mode 100644 index 000000000000..c086e4c752e3 --- /dev/null +++ b/.github/actions/buildpack-pr-comment/package-lock.json @@ -0,0 +1,394 @@ +{ + "name": "buildpack-pr-comment", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@actions/core": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.2.4.tgz", + "integrity": "sha512-YJCEq8BE3CdN8+7HPZ/4DxJjk/OkZV2FFIf+DlZTC/4iBlzYCD5yjRR6eiOS5llO11zbRltIRuKAjMKaWTE6cg==" + }, + "@actions/github": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-2.1.1.tgz", + "integrity": "sha512-kAgTGUx7yf5KQCndVeHSwCNZuDBvPyxm5xKTswW2lofugeuC1AZX73nUUVDNaysnM9aKFMHv9YCdVJbg7syEyA==", + "requires": { + "@actions/http-client": "^1.0.3", + "@octokit/graphql": "^4.3.1", + "@octokit/rest": "^16.43.1" + } + }, + "@actions/http-client": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.8.tgz", + "integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==", + "requires": { + "tunnel": "0.0.6" + } + }, + "@octokit/auth-token": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.0.tgz", + "integrity": "sha512-eoOVMjILna7FVQf96iWc3+ZtE/ZT6y8ob8ZzcqKY1ibSQCnu4O/B7pJvzMx5cyZ/RjAff6DAdEb0O0Cjcxidkg==", + "requires": { + "@octokit/types": "^2.0.0" + } + }, + "@octokit/endpoint": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.5.3.tgz", + "integrity": "sha512-EzKwkwcxeegYYah5ukEeAI/gYRLv2Y9U5PpIsseGSFDk+G3RbipQGBs8GuYS1TLCtQaqoO66+aQGtITPalxsNQ==", + "requires": { + "@octokit/types": "^2.0.0", + "is-plain-object": "^3.0.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "requires": { + "os-name": "^3.1.0" + } + } + } + }, + "@octokit/graphql": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.3.1.tgz", + "integrity": "sha512-hCdTjfvrK+ilU2keAdqNBWOk+gm1kai1ZcdjRfB30oA3/T6n53UVJb7w0L5cR3/rhU91xT3HSqCd+qbvH06yxA==", + "requires": { + "@octokit/request": "^5.3.0", + "@octokit/types": "^2.0.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "requires": { + "@octokit/types": "^2.0.1" + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.0.tgz", + "integrity": "sha512-ywoxP68aOT3zHCLgWZgwUJatiENeHE7xJzYjfz8WI0goynp96wETBF+d95b8g/uL4QmS6owPVlaxiz3wyMAzcw==" + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "requires": { + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + } + }, + "@octokit/request": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.3.2.tgz", + "integrity": "sha512-7NPJpg19wVQy1cs2xqXjjRq/RmtSomja/VSWnptfYwuBxLdbYh2UjhGi0Wx7B1v5Iw5GKhfFDQL7jM7SSp7K2g==", + "requires": { + "@octokit/endpoint": "^5.5.0", + "@octokit/request-error": "^1.0.1", + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "is-plain-object": "^3.0.0", + "node-fetch": "^2.3.0", + "once": "^1.4.0", + "universal-user-agent": "^5.0.0" + }, + "dependencies": { + "universal-user-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-5.0.0.tgz", + "integrity": "sha512-B5TPtzZleXyPrUMKCpEHFmVhMN6EhmJYjG5PQna9s7mXeSqGTLap4OpqLl5FCEFUI3UBmllkETwKf/db66Y54Q==", + "requires": { + "os-name": "^3.1.0" + } + } + } + }, + "@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "requires": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "@octokit/rest": { + "version": "16.43.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.1.tgz", + "integrity": "sha512-gfFKwRT/wFxq5qlNjnW2dh+qh74XgTQ2B179UX5K1HYCluioWj8Ndbgqw2PVqa1NnVJkGHp2ovMpVn/DImlmkw==", + "requires": { + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/types": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.5.0.tgz", + "integrity": "sha512-KEnLwOfdXzxPNL34fj508bhi9Z9cStyN7qY1kOfVahmqtAfrWw6Oq3P4R+dtsg0lYtZdWBpUrS/Ixmd5YILSww==", + "requires": { + "@types/node": ">= 8" + } + }, + "@types/node": { + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.0.tgz", + "integrity": "sha512-0ARSQootUG1RljH2HncpsY2TJBfGQIKOOi7kxzUY6z54ePu/ZD+wJA8zI2Q6v8rol2qpG/rvqsReco8zNMPvhQ==" + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=" + }, + "before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==" + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=" + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-plain-object": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-3.0.0.tgz", + "integrity": "sha512-tZIpofR+P05k8Aocp7UI/2UTa9lTJSebCXpFFoR9aibpokDj/uXBsJ8luUu0tTVYKkMU6URDUuOfJZ7koewXvg==", + "requires": { + "isobject": "^4.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-4.0.0.tgz", + "integrity": "sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA==" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==" + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node-fetch": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", + "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==" + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "typescript": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.8.3.tgz", + "integrity": "sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==", + "dev": true + }, + "universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "requires": { + "os-name": "^3.1.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "windows-release": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "requires": { + "execa": "^1.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/.github/actions/buildpack-pr-comment/package.json b/.github/actions/buildpack-pr-comment/package.json new file mode 100644 index 000000000000..2fe39af632f1 --- /dev/null +++ b/.github/actions/buildpack-pr-comment/package.json @@ -0,0 +1,20 @@ +{ + "name": "buildpack-pr-comment", + "version": "1.0.0", + "description": "An action for creating a comment on current PR to save artifact information", + "private": true, + "main": "index.js", + "scripts": { + "build": "tsc" + }, + "keywords": [], + "author": "Alexander Arlt", + "license": "MIT", + "dependencies": { + "@actions/core": "^1.2.4", + "@actions/github": "^2.1.1" + }, + "devDependencies": { + "typescript": "^3.8.3" + } +} diff --git a/.github/actions/buildpack-pr-comment/src/index.ts b/.github/actions/buildpack-pr-comment/src/index.ts new file mode 100644 index 000000000000..79cce11539e6 --- /dev/null +++ b/.github/actions/buildpack-pr-comment/src/index.ts @@ -0,0 +1,21 @@ +import * as core from "@actions/core"; +import * as github from "@actions/github"; + +async function run() { + const token = core.getInput("token"); + + const octokit = new github.GitHub(token); + const context = github.context; + + await octokit.issues.createComment({ + ...context.repo, + issue_number: context.payload.pull_request!.number, + body: `Package: ${core.getInput("package-name")}\n` + + `Version: ${core.getInput("package-version")}\n` + + `Action: ${core.getInput("action-id")}\n` + + `Artifact: ${core.getInput("artifact")}\n` + + `Commit: ${context.sha}` + }); +} + +run(); diff --git a/.github/actions/buildpack-pr-comment/tsconfig.json b/.github/actions/buildpack-pr-comment/tsconfig.json new file mode 100644 index 000000000000..67d94bc92287 --- /dev/null +++ b/.github/actions/buildpack-pr-comment/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "target": "es5", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "outDir": "dist" + } +} diff --git a/.github/workflows/buildpack-emscripten.yml b/.github/workflows/buildpack-emscripten.yml new file mode 100644 index 000000000000..43873b14c7af --- /dev/null +++ b/.github/workflows/buildpack-emscripten.yml @@ -0,0 +1,78 @@ +name: buildpack:emscripten + +on: + pull_request: + paths: + - '.github/workflows/buildpack-emscripten.yml' + - 'scripts/docker/buildpack/Dockerfile.emscripten' + +jobs: + build: + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_DOCKER_REPOSITORY: docker.pkg.github.com/${{ github.repository }} + IMAGE_NAME: buildpack + IMAGE_VARIANT: emscripten + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Check version + run: | + VERSION=$(grep "LABEL version" scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT | awk -F'"' '$0=$2') + echo "::set-env name=VERSION::$VERSION" + + echo ${GITHUB_TOKEN} | docker login docker.pkg.github.com -u ${GITHUB_ACTOR} --password-stdin + VERSION_EXIST=$(docker pull -q $GITHUB_DOCKER_REPOSITORY/$IMAGE_NAME-$IMAGE_VARIANT:${VERSION} || echo false && true) + docker logout docker.pkg.github.com + + if [ "${VERSION_EXIST}" != "false" ] + then + echo "" + echo "ERROR: version '${VERSION}' already exist for '$IMAGE_NAME-$IMAGE_VARIANT'. Aborting." + echo "" + + false + fi + + - name: Build image + run: | + docker build scripts/docker/${IMAGE_NAME} --file scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT --tag $IMAGE_NAME + + - name: Test image + run: | + scripts/build_emscripten.sh emscripten_build $IMAGE_NAME + + - name: Save image + run: | + docker save -o $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME + HASH=$(sha256sum $IMAGE_NAME-$IMAGE_VARIANT.tar | awk '{print $1}') + mv $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME-$IMAGE_VARIANT-$HASH + echo "::set-env name=HASH::$HASH" + echo "::set-env name=ARCHIVE::$IMAGE_NAME-$IMAGE_VARIANT-$HASH" + + - name: Upload image + uses: actions/upload-artifact@v2 + with: + name: ${{ env.ARCHIVE }} + path: ${{ env.ARCHIVE }} + + - name: Prepare action + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Build action + run: npm i && npm run build + working-directory: ./.github/actions/buildpack-pr-comment + + - name: Create buildpack comment on PR + uses: ./.github/actions/buildpack-pr-comment + with: + token: ${{ secrets.GITHUB_TOKEN }} + action-id: ${{ github.run_id }} + artifact: ${{ env.ARCHIVE }} + package-name: ${{ env.IMAGE_NAME }}-${{ env.IMAGE_VARIANT }} + package-version: ${{ env.VERSION }} diff --git a/.github/workflows/buildpack-push.yml b/.github/workflows/buildpack-push.yml new file mode 100644 index 000000000000..acf14dec6f70 --- /dev/null +++ b/.github/workflows/buildpack-push.yml @@ -0,0 +1,82 @@ +name: buildpack:push + +on: + pull_request: + types: [labeled] + paths: + - '.github/workflows/buildpack-emscripten.yml' + - 'scripts/docker/buildpack/Dockerfile.emscripten' + - '.github/workflows/buildpack-ubuntu1604.clang.ossfuzz.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu1604.clang.ossfuzz' + - '.github/workflows/buildpack-ubuntu1804.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu1804' + - '.github/workflows/buildpack-ubuntu2004.clang.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu2004.clang' + - '.github/workflows/buildpack-ubuntu2004.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu2004' + +jobs: + build: + env: + OUTPUT_PATH: ${{ github.workspace }}/.output + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_DOCKER_REPOSITORY: docker.pkg.github.com/${{ github.repository }} + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Prepare action + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Build action + run: npm i && npm run build + working-directory: ./.github/actions/buildpack-pr-check + + - name: Check for buildpack PR + uses: ./.github/actions/buildpack-pr-check + id: buildpack-pr-check + with: + token: ${{ secrets.GITHUB_TOKEN }} + label: "buildpack-release" + + - name: Download image artifact + if: steps.buildpack-pr-check.outputs.publish == 'true' + run: | + echo ${{ steps.get-action-id.outputs.id }} + mkdir ${{ env.OUTPUT_PATH }} + cd ${{ env.OUTPUT_PATH }} + curl https://api.github.com/repos/aarlt/solidity/actions/runs/${{ steps.buildpack-pr-check.outputs.action }}/artifacts --output artifacts.json + downloadUrl=$(cat artifacts.json | jq -c '.artifacts[] | select(.name == "${{ steps.buildpack-pr-check.outputs.artifact }}") | .archive_download_url' | tr -d '"') + echo $downloadUrl + curl $downloadUrl --output packages.zip --user octocat:${{ secrets.GITHUB_TOKEN }} --verbose --location + unzip packages.zip + ls + + - name: Load image + if: steps.buildpack-pr-check.outputs.publish == 'true' + run: | + docker load -i ${{ env.OUTPUT_PATH }}/${{ steps.buildpack-pr-check.outputs.artifact }} + docker images + HASH=$(sha256sum ${{ env.OUTPUT_PATH }}/${{ steps.buildpack-pr-check.outputs.artifact }} | awk '{print $1}') + echo "::set-env name=HASH::$HASH" + echo "HASH=$HASH" + + - name: Push image + if: steps.buildpack-pr-check.outputs.publish == 'true' + run: | + echo ${GITHUB_TOKEN} | docker login docker.pkg.github.com -u ${GITHUB_ACTOR} --password-stdin + + VERSION=$(docker inspect --format={{.Config.Labels.version}} buildpack:latest) + docker tag buildpack:latest $GITHUB_DOCKER_REPOSITORY/${{ steps.buildpack-pr-check.outputs.package }}:${{ steps.buildpack-pr-check.outputs.version }} + docker push $GITHUB_DOCKER_REPOSITORY/${{ steps.buildpack-pr-check.outputs.package }}:${{ steps.buildpack-pr-check.outputs.version }} + + docker tag buildpack:latest $GITHUB_DOCKER_REPOSITORY/${{ steps.buildpack-pr-check.outputs.package }}:latest + docker push $GITHUB_DOCKER_REPOSITORY/${{ steps.buildpack-pr-check.outputs.package }}:latest + + docker logout docker.pkg.github.com + + diff --git a/.github/workflows/buildpack-ubuntu1604.clang.ossfuzz.yml b/.github/workflows/buildpack-ubuntu1604.clang.ossfuzz.yml new file mode 100644 index 000000000000..2c4260dbec00 --- /dev/null +++ b/.github/workflows/buildpack-ubuntu1604.clang.ossfuzz.yml @@ -0,0 +1,80 @@ +name: buildpack:ubuntu1604.clang.ossfuzz + +on: + pull_request: + paths: + - '.github/workflows/buildpack-ubuntu1604.clang.ossfuzz.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu1604.clang.ossfuzz' + +jobs: + build: + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_DOCKER_REPOSITORY: docker.pkg.github.com/${{ github.repository }} + IMAGE_NAME: buildpack + IMAGE_VARIANT: ubuntu1604.clang.ossfuzz + CC: clang + CXX: clang++ + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Check version + run: | + VERSION=$(grep "LABEL version" scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT | awk -F'"' '$0=$2') + echo "::set-env name=VERSION::$VERSION" + + echo ${GITHUB_TOKEN} | docker login docker.pkg.github.com -u ${GITHUB_ACTOR} --password-stdin + VERSION_EXIST=$(docker pull -q $GITHUB_DOCKER_REPOSITORY/$IMAGE_NAME-$IMAGE_VARIANT:${VERSION} || echo false && true) + docker logout docker.pkg.github.com + + if [ "${VERSION_EXIST}" != "false" ] + then + echo "" + echo "ERROR: version '${VERSION}' already exist for '$IMAGE_NAME-$IMAGE_VARIANT'. Aborting." + echo "" + + false + fi + + - name: Build image + run: | + docker build scripts/docker/${IMAGE_NAME} --file scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT --tag $IMAGE_NAME + + - name: Test image + run: | + docker run -v ${PWD}:/tmp -e CI=1 -e CC=$CC -e CXX=$CXX $IMAGE_NAME /tmp/scripts/docker/${IMAGE_NAME}/test/test-$IMAGE_VARIANT.sh + + - name: Save image + run: | + docker save -o $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME + HASH=$(sha256sum $IMAGE_NAME-$IMAGE_VARIANT.tar | awk '{print $1}') + mv $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME-$IMAGE_VARIANT-$HASH + echo "::set-env name=HASH::$HASH" + echo "::set-env name=ARCHIVE::$IMAGE_NAME-$IMAGE_VARIANT-$HASH" + + - name: Upload image + uses: actions/upload-artifact@v2 + with: + name: ${{ env.ARCHIVE }} + path: ${{ env.ARCHIVE }} + + - name: Prepare action + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Build action + run: npm i && npm run build + working-directory: ./.github/actions/buildpack-pr-comment + + - name: Create buildpack comment on PR + uses: ./.github/actions/buildpack-pr-comment + with: + token: ${{ secrets.GITHUB_TOKEN }} + action-id: ${{ github.run_id }} + artifact: ${{ env.ARCHIVE }} + package-name: ${{ env.IMAGE_NAME }}-${{ env.IMAGE_VARIANT }} + package-version: ${{ env.VERSION }} diff --git a/.github/workflows/buildpack-ubuntu1804.yml b/.github/workflows/buildpack-ubuntu1804.yml new file mode 100644 index 000000000000..e8b9d6e742c6 --- /dev/null +++ b/.github/workflows/buildpack-ubuntu1804.yml @@ -0,0 +1,78 @@ +name: buildpack:ubuntu1804 + +on: + pull_request: + paths: + - '.github/workflows/buildpack-ubuntu1804.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu1804' + +jobs: + build: + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_DOCKER_REPOSITORY: docker.pkg.github.com/${{ github.repository }} + IMAGE_NAME: buildpack + IMAGE_VARIANT: ubuntu1804 + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Check version + run: | + VERSION=$(grep "LABEL version" scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT | awk -F'"' '$0=$2') + echo "::set-env name=VERSION::$VERSION" + + echo ${GITHUB_TOKEN} | docker login docker.pkg.github.com -u ${GITHUB_ACTOR} --password-stdin + VERSION_EXIST=$(docker pull -q $GITHUB_DOCKER_REPOSITORY/$IMAGE_NAME-$IMAGE_VARIANT:${VERSION} || echo false && true) + docker logout docker.pkg.github.com + + if [ "${VERSION_EXIST}" != "false" ] + then + echo "" + echo "ERROR: version '${VERSION}' already exist for '$IMAGE_NAME-$IMAGE_VARIANT'. Aborting." + echo "" + + false + fi + + - name: Build image + run: | + docker build scripts/docker/${IMAGE_NAME} --file scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT --tag $IMAGE_NAME + + - name: Test image + run: | + docker run -v ${PWD}:/tmp -e CI=1 $IMAGE_NAME /tmp/scripts/build.sh + + - name: Save image + run: | + docker save -o $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME + HASH=$(sha256sum $IMAGE_NAME-$IMAGE_VARIANT.tar | awk '{print $1}') + mv $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME-$IMAGE_VARIANT-$HASH + echo "::set-env name=HASH::$HASH" + echo "::set-env name=ARCHIVE::$IMAGE_NAME-$IMAGE_VARIANT-$HASH" + + - name: Upload image + uses: actions/upload-artifact@v2 + with: + name: ${{ env.ARCHIVE }} + path: ${{ env.ARCHIVE }} + + - name: Prepare action + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Build action + run: npm i && npm run build + working-directory: ./.github/actions/buildpack-pr-comment + + - name: Create buildpack comment on PR + uses: ./.github/actions/buildpack-pr-comment + with: + token: ${{ secrets.GITHUB_TOKEN }} + action-id: ${{ github.run_id }} + artifact: ${{ env.ARCHIVE }} + package-name: ${{ env.IMAGE_NAME }}-${{ env.IMAGE_VARIANT }} + package-version: ${{ env.VERSION }} diff --git a/.github/workflows/buildpack-ubuntu2004.clang.yml b/.github/workflows/buildpack-ubuntu2004.clang.yml new file mode 100644 index 000000000000..ec402721515e --- /dev/null +++ b/.github/workflows/buildpack-ubuntu2004.clang.yml @@ -0,0 +1,80 @@ +name: buildpack:ubuntu2004.clang + +on: + pull_request: + paths: + - '.github/workflows/buildpack-ubuntu2004.clang.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu2004.clang' + +jobs: + build: + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_DOCKER_REPOSITORY: docker.pkg.github.com/${{ github.repository }} + IMAGE_NAME: buildpack + IMAGE_VARIANT: ubuntu2004.clang + CC: clang + CXX: clang++ + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Check version + run: | + VERSION=$(grep "LABEL version" scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT | awk -F'"' '$0=$2') + echo "::set-env name=VERSION::$VERSION" + + echo ${GITHUB_TOKEN} | docker login docker.pkg.github.com -u ${GITHUB_ACTOR} --password-stdin + VERSION_EXIST=$(docker pull -q $GITHUB_DOCKER_REPOSITORY/$IMAGE_NAME-$IMAGE_VARIANT:${VERSION} || echo false && true) + docker logout docker.pkg.github.com + + if [ "${VERSION_EXIST}" != "false" ] + then + echo "" + echo "ERROR: version '${VERSION}' already exist for '$IMAGE_NAME-$IMAGE_VARIANT'. Aborting." + echo "" + + false + fi + + - name: Build image + run: | + docker build scripts/docker/${IMAGE_NAME} --file scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT --tag $IMAGE_NAME + + - name: Test image + run: | + docker run -v ${PWD}:/tmp -e CI=1 -e CC=$CC -e CXX=$CXX $IMAGE_NAME /tmp/scripts/build.sh + + - name: Save image + run: | + docker save -o $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME + HASH=$(sha256sum $IMAGE_NAME-$IMAGE_VARIANT.tar | awk '{print $1}') + mv $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME-$IMAGE_VARIANT-$HASH + echo "::set-env name=HASH::$HASH" + echo "::set-env name=ARCHIVE::$IMAGE_NAME-$IMAGE_VARIANT-$HASH" + + - name: Upload image + uses: actions/upload-artifact@v2 + with: + name: ${{ env.ARCHIVE }} + path: ${{ env.ARCHIVE }} + + - name: Prepare action + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Build action + run: npm i && npm run build + working-directory: ./.github/actions/buildpack-pr-comment + + - name: Create buildpack comment on PR + uses: ./.github/actions/buildpack-pr-comment + with: + token: ${{ secrets.GITHUB_TOKEN }} + action-id: ${{ github.run_id }} + artifact: ${{ env.ARCHIVE }} + package-name: ${{ env.IMAGE_NAME }}-${{ env.IMAGE_VARIANT }} + package-version: ${{ env.VERSION }} diff --git a/.github/workflows/buildpack-ubuntu2004.yml b/.github/workflows/buildpack-ubuntu2004.yml new file mode 100644 index 000000000000..4905fc923b56 --- /dev/null +++ b/.github/workflows/buildpack-ubuntu2004.yml @@ -0,0 +1,77 @@ +name: buildpack:ubuntu2004 + +on: + pull_request: + paths: + - '.github/workflows/buildpack-ubuntu2004.yml' + - 'scripts/docker/buildpack/Dockerfile.ubuntu2004' +jobs: + build: + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_DOCKER_REPOSITORY: docker.pkg.github.com/${{ github.repository }} + IMAGE_NAME: buildpack + IMAGE_VARIANT: ubuntu2004 + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Check version + run: | + VERSION=$(grep "LABEL version" scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT | awk -F'"' '$0=$2') + echo "::set-env name=VERSION::$VERSION" + + echo ${GITHUB_TOKEN} | docker login docker.pkg.github.com -u ${GITHUB_ACTOR} --password-stdin + VERSION_EXIST=$(docker pull -q $GITHUB_DOCKER_REPOSITORY/$IMAGE_NAME-$IMAGE_VARIANT:${VERSION} || echo false && true) + docker logout docker.pkg.github.com + + if [ "${VERSION_EXIST}" != "false" ] + then + echo "" + echo "ERROR: version '${VERSION}' already exist for '$IMAGE_NAME-$IMAGE_VARIANT'. Aborting." + echo "" + + false + fi + + - name: Build image + run: | + docker build scripts/docker/${IMAGE_NAME} --file scripts/docker/${IMAGE_NAME}/Dockerfile.$IMAGE_VARIANT --tag $IMAGE_NAME + + - name: Test image + run: | + docker run -v ${PWD}:/tmp -e CI=1 $IMAGE_NAME /tmp/scripts/build.sh + + - name: Save image + run: | + docker save -o $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME + HASH=$(sha256sum $IMAGE_NAME-$IMAGE_VARIANT.tar | awk '{print $1}') + mv $IMAGE_NAME-$IMAGE_VARIANT.tar $IMAGE_NAME-$IMAGE_VARIANT-$HASH + echo "::set-env name=HASH::$HASH" + echo "::set-env name=ARCHIVE::$IMAGE_NAME-$IMAGE_VARIANT-$HASH" + + - name: Upload image + uses: actions/upload-artifact@v2 + with: + name: ${{ env.ARCHIVE }} + path: ${{ env.ARCHIVE }} + + - name: Prepare action + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Build action + run: npm i && npm run build + working-directory: ./.github/actions/buildpack-pr-comment + + - name: Create buildpack comment on PR + uses: ./.github/actions/buildpack-pr-comment + with: + token: ${{ secrets.GITHUB_TOKEN }} + action-id: ${{ github.run_id }} + artifact: ${{ env.ARCHIVE }} + package-name: ${{ env.IMAGE_NAME }}-${{ env.IMAGE_VARIANT }} + package-version: ${{ env.VERSION }} diff --git a/.gitignore b/.gitignore index f6eeba75fffa..74d3af75a561 100644 --- a/.gitignore +++ b/.gitignore @@ -32,7 +32,7 @@ prerelease.txt # Build directory build/ -build*/ +/build*/ emscripten_build/ docs/_build docs/utils/__pycache__ diff --git a/cmake/jsoncpp.cmake b/cmake/jsoncpp.cmake index 1377041b9a69..8525d88b7898 100644 --- a/cmake/jsoncpp.cmake +++ b/cmake/jsoncpp.cmake @@ -26,7 +26,8 @@ else() # JSON_USE_INT64_DOUBLE_CONVERSION preprocessor macro. Doing so, # not only gets rid of the implicit conversion error that clang-10 produces # but also forces safer behavior in general. - set(JSONCPP_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJSON_USE_INT64_DOUBLE_CONVERSION") + find_package(Threads REQUIRED) + set(JSONCPP_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DJSON_USE_INT64_DOUBLE_CONVERSION ${CMAKE_THREAD_LIBS_INIT}") endif() set(byproducts "") diff --git a/scripts/build_emscripten.sh b/scripts/build_emscripten.sh index 7a052aa77eb6..c5c78dfb40f0 100755 --- a/scripts/build_emscripten.sh +++ b/scripts/build_emscripten.sh @@ -34,5 +34,11 @@ else BUILD_DIR="$1" fi -docker run -v $(pwd):/root/project -w /root/project ethereum/solidity-buildpack-deps:emsdk-1.39.15-2 \ +if test -z "$2"; then + DOCKER_IMAGE="ethereum/solidity-buildpack-deps:emsdk-1.39.15-2" +else + DOCKER_IMAGE="$2" +fi + +docker run -v $(pwd):/root/project -w /root/project ${DOCKER_IMAGE} \ ./scripts/travis-emscripten/build_emscripten.sh $BUILD_DIR diff --git a/.circleci/docker/Dockerfile.emscripten b/scripts/docker/buildpack/Dockerfile.emscripten similarity index 99% rename from .circleci/docker/Dockerfile.emscripten rename to scripts/docker/buildpack/Dockerfile.emscripten index d2456bb2ae0b..87d82fdc6263 100644 --- a/.circleci/docker/Dockerfile.emscripten +++ b/scripts/docker/buildpack/Dockerfile.emscripten @@ -29,6 +29,7 @@ # make version=1.39.15 build # FROM emscripten/emsdk:1.39.15 AS base +LABEL version="5" ADD emscripten.jam /usr/src RUN set -ex; \ diff --git a/.circleci/docker/Dockerfile.ubuntu1604.clang.ossfuzz b/scripts/docker/buildpack/Dockerfile.ubuntu1604.clang.ossfuzz similarity index 98% rename from .circleci/docker/Dockerfile.ubuntu1604.clang.ossfuzz rename to scripts/docker/buildpack/Dockerfile.ubuntu1604.clang.ossfuzz index f7dfc7001bdf..6e0c68966c63 100644 --- a/.circleci/docker/Dockerfile.ubuntu1604.clang.ossfuzz +++ b/scripts/docker/buildpack/Dockerfile.ubuntu1604.clang.ossfuzz @@ -22,10 +22,12 @@ # (c) 2016-2019 solidity contributors. #------------------------------------------------------------------------------ FROM gcr.io/oss-fuzz-base/base-clang as base +LABEL version="5" ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update; \ + apt-get upgrade -y; \ apt-get -qqy install --no-install-recommends \ build-essential \ software-properties-common \ @@ -99,3 +101,4 @@ FROM base COPY --from=libraries /usr/lib /usr/lib COPY --from=libraries /usr/bin /usr/bin COPY --from=libraries /usr/include /usr/include + diff --git a/.circleci/docker/Dockerfile.ubuntu1804 b/scripts/docker/buildpack/Dockerfile.ubuntu1804 similarity index 99% rename from .circleci/docker/Dockerfile.ubuntu1804 rename to scripts/docker/buildpack/Dockerfile.ubuntu1804 index fa651900b873..93f80659566a 100644 --- a/.circleci/docker/Dockerfile.ubuntu1804 +++ b/scripts/docker/buildpack/Dockerfile.ubuntu1804 @@ -22,6 +22,7 @@ # (c) 2016-2019 solidity contributors. #------------------------------------------------------------------------------ FROM buildpack-deps:bionic AS base +LABEL version="5" ARG DEBIAN_FRONTEND=noninteractive diff --git a/.circleci/docker/Dockerfile.ubuntu2004 b/scripts/docker/buildpack/Dockerfile.ubuntu2004 similarity index 98% rename from .circleci/docker/Dockerfile.ubuntu2004 rename to scripts/docker/buildpack/Dockerfile.ubuntu2004 index a021b6533486..3124dbe52671 100644 --- a/.circleci/docker/Dockerfile.ubuntu2004 +++ b/scripts/docker/buildpack/Dockerfile.ubuntu2004 @@ -22,6 +22,7 @@ # (c) 2016-2019 solidity contributors. #------------------------------------------------------------------------------ FROM buildpack-deps:focal AS base +LABEL version="5" ARG DEBIAN_FRONTEND=noninteractive @@ -58,5 +59,7 @@ RUN set -ex; \ FROM base COPY --from=libraries /usr/lib /usr/lib +RUN true COPY --from=libraries /usr/bin /usr/bin +RUN true COPY --from=libraries /usr/include /usr/include diff --git a/.circleci/docker/Dockerfile.ubuntu2004.clang b/scripts/docker/buildpack/Dockerfile.ubuntu2004.clang similarity index 98% rename from .circleci/docker/Dockerfile.ubuntu2004.clang rename to scripts/docker/buildpack/Dockerfile.ubuntu2004.clang index c8d057eb11a0..f43f2f4f78a6 100644 --- a/.circleci/docker/Dockerfile.ubuntu2004.clang +++ b/scripts/docker/buildpack/Dockerfile.ubuntu2004.clang @@ -22,6 +22,7 @@ # (c) 2016-2019 solidity contributors. #------------------------------------------------------------------------------ FROM buildpack-deps:focal AS base +LABEL version="5" ARG DEBIAN_FRONTEND=noninteractive @@ -60,5 +61,7 @@ RUN set -ex; \ FROM base COPY --from=libraries /usr/lib /usr/lib +RUN true COPY --from=libraries /usr/bin /usr/bin +RUN true COPY --from=libraries /usr/include /usr/include diff --git a/.circleci/docker/emscripten.jam b/scripts/docker/buildpack/emscripten.jam similarity index 100% rename from .circleci/docker/emscripten.jam rename to scripts/docker/buildpack/emscripten.jam diff --git a/scripts/docker/buildpack/test/test-ubuntu1604.clang.ossfuzz.sh b/scripts/docker/buildpack/test/test-ubuntu1604.clang.ossfuzz.sh new file mode 100755 index 000000000000..c0b336ed65e7 --- /dev/null +++ b/scripts/docker/buildpack/test/test-ubuntu1604.clang.ossfuzz.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +cd /tmp +mkdir fuzzer-build && cd fuzzer-build + +## Compile protobuf C++ bindings +protoc --proto_path=../test/tools/ossfuzz yulProto.proto --cpp_out=../test/tools/ossfuzz +protoc --proto_path=../test/tools/ossfuzz abiV2Proto.proto --cpp_out=../test/tools/ossfuzz +protoc --proto_path=../test/tools/ossfuzz solProto.proto --cpp_out=../test/tools/ossfuzz + +## Run cmake +cmake -DCMAKE_TOOLCHAIN_FILE=cmake/toolchains/libfuzzer.cmake -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Release}" .. +make ossfuzz ossfuzz_proto ossfuzz_abiv2