From ca669a91a3e598403cf786189d783eb47d0ce846 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Thu, 15 Aug 2024 19:55:45 +0800 Subject: [PATCH] Addded check for ros_gz Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 18 ++++++++++++++++++ action.yml | 5 +++++ dist/index.js | 22 ++++++++++++++++++++++ src/setup-gazebo-linux.ts | 11 +++++++++++ src/utils.ts | 11 +++++++++++ 5 files changed, 67 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 75ab8ce..62c21e8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -256,3 +256,21 @@ jobs: run: | conda activate gz sim --versions + + test_install_ros_gz: + name: 'Install ros_gz side-by-side Gazebo' + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4.0.3 + with: + node-version: '20.x' + - name: 'Install ROS 2 Jazzy' + uses: ros-tooling/setup-ros@v0.7 + with: + required-ros-distributions: jazzy + - name: 'Install Gazebo with ros_gz' + uses: ./ + with: + required-gazebo-distributions: 'harmonic' + install-ros-gz: 'true' diff --git a/action.yml b/action.yml index f758cfa..f18f3ca 100644 --- a/action.yml +++ b/action.yml @@ -29,6 +29,11 @@ inputs: Use nightly binaries from OSRF repository required: false default: 'false' + install-ros-gz: + description: | + Install ros_gz side-by-side with ROS 2 and Gazebo + required: false + default: 'false' runs: using: node20 main: dist/index.js diff --git a/dist/index.js b/dist/index.js index d3fb151..11ce59b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26387,6 +26387,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.runLinux = runLinux; const core = __importStar(__nccwpck_require__(2186)); const io = __importStar(__nccwpck_require__(7436)); +const actions_exec = __importStar(__nccwpck_require__(1514)); const apt = __importStar(__nccwpck_require__(4671)); const utils = __importStar(__nccwpck_require__(1314)); /** @@ -26477,6 +26478,16 @@ function addAptRepo(ubuntuCodename) { yield utils.exec("sudo", ["apt-get", "update"]); }); } +function installRosGz() { + return __awaiter(this, void 0, void 0, function* () { + yield utils.exec("bash", ["-c", `distros=($(ls /opt/ros -1))`]); + const output = yield actions_exec.getExecOutput("bash", [ + "-c", + `echo $distros`, + ]); + console.log(output.stdout); + }); +} /** * Install Gazebo on a Linux worker. */ @@ -26492,6 +26503,7 @@ function runLinux() { for (const gazeboDistro of utils.getRequiredGazeboDistributions()) { yield apt.runAptGetInstall([`gz-${gazeboDistro}`]); } + yield installRosGz(); }); } @@ -26790,6 +26802,7 @@ exports.validateDistro = validateDistro; exports.getRequiredGazeboDistributions = getRequiredGazeboDistributions; exports.checkUbuntuCompatibility = checkUbuntuCompatibility; exports.checkForUnstableAptRepos = checkForUnstableAptRepos; +exports.checkForRosGz = checkForRosGz; const actions_exec = __importStar(__nccwpck_require__(1514)); const core = __importStar(__nccwpck_require__(2186)); // List of Valid Gazebo distributions with compatible @@ -26798,22 +26811,27 @@ const validGazeboDistroList = [ { name: "citadel", compatibleUbuntuDistros: ["focal"], + compatibleRosDistros: ["foxy"], }, { name: "fortress", compatibleUbuntuDistros: ["focal", "jammy"], + compatibleRosDistros: ["humble", "iron"], }, { name: "garden", compatibleUbuntuDistros: ["focal", "jammy"], + compatibleRosDistros: [], }, { name: "harmonic", compatibleUbuntuDistros: ["jammy", "noble"], + compatibleRosDistros: ["jazzy", "rolling"], }, { name: "ionic", compatibleUbuntuDistros: ["noble"], + compatibleRosDistros: [], }, ]; /** @@ -26925,6 +26943,10 @@ function checkForUnstableAptRepos() { } return unstableRepos; } +function checkForRosGz() { + const installRosGz = core.getInput("install-ros-gz") === "true"; + return installRosGz; +} /***/ }), diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index 9595bea..68fc4a6 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -1,5 +1,6 @@ import * as core from "@actions/core"; import * as io from "@actions/io"; +import * as actions_exec from "@actions/exec"; import * as apt from "./package_manager/apt"; import * as utils from "./utils"; @@ -92,6 +93,15 @@ async function addAptRepo(ubuntuCodename: string): Promise { await utils.exec("sudo", ["apt-get", "update"]); } +async function installRosGz(): Promise { + await utils.exec("bash", ["-c", `distros=($(ls /opt/ros -1))`]); + const output = await actions_exec.getExecOutput("bash", [ + "-c", + `echo $distros`, + ]); + console.log(output.stdout); +} + /** * Install Gazebo on a Linux worker. */ @@ -110,4 +120,5 @@ export async function runLinux(): Promise { for (const gazeboDistro of utils.getRequiredGazeboDistributions()) { await apt.runAptGetInstall([`gz-${gazeboDistro}`]); } + await installRosGz(); } diff --git a/src/utils.ts b/src/utils.ts index 1af41bf..2db4b1d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -7,26 +7,32 @@ import * as im from "@actions/exec/lib/interfaces"; const validGazeboDistroList: { name: string; compatibleUbuntuDistros: string[]; + compatibleRosDistros: string[]; }[] = [ { name: "citadel", compatibleUbuntuDistros: ["focal"], + compatibleRosDistros: ["foxy"], }, { name: "fortress", compatibleUbuntuDistros: ["focal", "jammy"], + compatibleRosDistros: ["humble", "iron"], }, { name: "garden", compatibleUbuntuDistros: ["focal", "jammy"], + compatibleRosDistros: [], }, { name: "harmonic", compatibleUbuntuDistros: ["jammy", "noble"], + compatibleRosDistros: ["jazzy", "rolling"], }, { name: "ionic", compatibleUbuntuDistros: ["noble"], + compatibleRosDistros: [], }, ]; @@ -161,3 +167,8 @@ export function checkForUnstableAptRepos(): string[] { } return unstableRepos; } + +export function checkForRosGz(): boolean { + const installRosGz = core.getInput("install-ros-gz") === "true"; + return installRosGz; +}