diff --git a/dist/index.js b/dist/index.js index c309c57..4fcff7f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1001,37 +1001,38 @@ module.exports = require("os"); /***/ (function(__unusedmodule, __unusedexports, __webpack_require__) { const { inspect } = __webpack_require__(669); -const fs = __webpack_require__(747); +const isDocker = __webpack_require__(160); const core = __webpack_require__(470); const exec = __webpack_require__(986); const setupPython = __webpack_require__(139); -function fileExists(path) { - try { - return fs.statSync(path).isFile(); - } catch (e) { - core.debug(`e: ${inspect(e)}`); - return false; - } -} - async function run() { try { // Allows ncc to find assets to be included in the distribution const src = __webpack_require__.ab + "src"; core.debug(`src: ${src}`); - // Check if the platfrom is Alpine Linux - const alpineLinux = fileExists("/etc/alpine-release"); - core.debug(`alpineLinux: ${alpineLinux}`); - - // Skip Python setup if the platform is Alpine Linux - if (!alpineLinux) - // Setup Python from the tool cache - setupPython("3.8.x", "x64"); + // Determine how to access python and pip + const { pip, python } = (function() { + if (isDocker()) { + core.info("Running inside a Docker container"); + // Python 3 assumed to be installed and on the PATH + return { + pip: "pip3", + python: "python3" + }; + } else { + // Setup Python from the tool cache + setupPython("3.x", "x64"); + return { + pip: "pip", + python: "python" + }; + } + })(); // Install requirements - await exec.exec("pip", [ + await exec.exec(pip, [ "install", "--requirement", `${src}/requirements.txt`, @@ -1057,7 +1058,7 @@ async function run() { projectColumn: core.getInput("project-column"), branch: core.getInput("branch"), base: core.getInput("base"), - branchSuffix: core.getInput("branch-suffix"), + branchSuffix: core.getInput("branch-suffix") }; core.debug(`Inputs: ${inspect(inputs)}`); @@ -1081,7 +1082,7 @@ async function run() { if (inputs.branchSuffix) process.env.CPR_BRANCH_SUFFIX = inputs.branchSuffix; // Execute python script - await exec.exec("python", [`${src}/create_pull_request.py`]); + await exec.exec(python, [`${src}/create_pull_request.py`]); } catch (error) { core.setFailed(error.message); } @@ -1411,6 +1412,43 @@ if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { exports.debug = debug; // for test +/***/ }), + +/***/ 160: +/***/ (function(module, __unusedexports, __webpack_require__) { + +"use strict"; + +const fs = __webpack_require__(747); + +let isDocker; + +function hasDockerEnv() { + try { + fs.statSync('/.dockerenv'); + return true; + } catch (_) { + return false; + } +} + +function hasDockerCGroup() { + try { + return fs.readFileSync('/proc/self/cgroup', 'utf8').includes('docker'); + } catch (_) { + return false; + } +} + +module.exports = () => { + if (isDocker === undefined) { + isDocker = hasDockerEnv() || hasDockerCGroup(); + } + + return isDocker; +}; + + /***/ }), /***/ 211: diff --git a/index.js b/index.js index 2f362c6..3dce607 100644 --- a/index.js +++ b/index.js @@ -1,35 +1,36 @@ const { inspect } = require("util"); -const fs = require("fs"); +const isDocker = require("is-docker"); const core = require("@actions/core"); const exec = require("@actions/exec"); const setupPython = require("./src/setup-python"); -function fileExists(path) { - try { - return fs.statSync(path).isFile(); - } catch (e) { - core.debug(`e: ${inspect(e)}`); - return false; - } -} - async function run() { try { // Allows ncc to find assets to be included in the distribution const src = __dirname + "/src"; core.debug(`src: ${src}`); - // Check if the platfrom is Alpine Linux - const alpineLinux = fileExists("/etc/alpine-release"); - core.debug(`alpineLinux: ${alpineLinux}`); - - // Skip Python setup if the platform is Alpine Linux - if (!alpineLinux) - // Setup Python from the tool cache - setupPython("3.8.x", "x64"); + // Determine how to access python and pip + const { pip, python } = (function() { + if (isDocker()) { + core.info("Running inside a Docker container"); + // Python 3 assumed to be installed and on the PATH + return { + pip: "pip3", + python: "python3" + }; + } else { + // Setup Python from the tool cache + setupPython("3.x", "x64"); + return { + pip: "pip", + python: "python" + }; + } + })(); // Install requirements - await exec.exec("pip", [ + await exec.exec(pip, [ "install", "--requirement", `${src}/requirements.txt`, @@ -55,7 +56,7 @@ async function run() { projectColumn: core.getInput("project-column"), branch: core.getInput("branch"), base: core.getInput("base"), - branchSuffix: core.getInput("branch-suffix"), + branchSuffix: core.getInput("branch-suffix") }; core.debug(`Inputs: ${inspect(inputs)}`); @@ -79,7 +80,7 @@ async function run() { if (inputs.branchSuffix) process.env.CPR_BRANCH_SUFFIX = inputs.branchSuffix; // Execute python script - await exec.exec("python", [`${src}/create_pull_request.py`]); + await exec.exec(python, [`${src}/create_pull_request.py`]); } catch (error) { core.setFailed(error.message); } diff --git a/package-lock.json b/package-lock.json index 18e22c3..2c569ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,11 @@ "integrity": "sha512-M9WzgquSOt2nsjRkYM9LRylBLmmlwNCwYbm3Up3PDEshfvdmIfqpFNSK8EJvR18NwZjGHE5z2avlDtYQx2JQnw==", "dev": true }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==" + }, "qs": { "version": "6.9.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", diff --git a/package.json b/package.json index f0778cf..3453a37 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "dependencies": { "@actions/core": "^1.1.1", "@actions/exec": "^1.0.1", - "@actions/tool-cache": "^1.1.2" + "@actions/tool-cache": "^1.1.2", + "is-docker": "^2.0.0" }, "devDependencies": { "@zeit/ncc": "0.21.1"