From 0c3bb4b307d8063490b2e73b5a9be9d03df8ddb7 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 13:16:50 +0800 Subject: [PATCH 01/23] Adding gazebo key and testing garden installation Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 2 +- src/setup-gazebo-linux.ts | 77 +++++++++++++++++++++++++++++++++++++- 2 files changed, 77 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fc33672..08fe604 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,6 +13,6 @@ jobs: - ubuntu:20.04 - ubuntu:22.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - name: 'Linux setup' uses: ./ \ No newline at end of file diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index 6392def..7b27206 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -7,6 +7,48 @@ import * as utils from "./utils"; import * as path from "path"; import fs from "fs"; +// Open Robotics APT Repository public GPG key, as retrieved by +// +// $ apt-key adv --refresh-keys --keyserver hkp://keyserver.ubuntu.com:80 \ +// C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 +// See also http://packages.ros.org/ros.asc (caution, this is an HTTP URL) +// +// Unfortunately, usin apt-key adv is slow, and is failing sometimes, causing +// spurious pipelines failures. The action is hard-coding the key here to +// mitigate this issue. +const openRoboticsAptPublicGpgKey = ` +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc +VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro +u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4 +K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG +aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+ +TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz +pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p +V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT +hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/ +/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV +okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB +tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA +PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur +F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB +RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z +PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa +DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC +Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR +fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0 +quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1 +1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6 +qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA +TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo +22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6 +WE+F5FaIKwb72PL4rLi4 +=i0tj +-----END PGP PUBLIC KEY BLOCK----- +`; + /** * Configure basic OS stuff. */ @@ -48,11 +90,44 @@ async function configOs(): Promise { await apt.runAptGetInstall(["tzdata"]); } +/** + * Add OSRF APT repository key. + * + * This is necessary even when building from source to install colcon, vcs, etc. + */ +async function addAptRepoKey(): Promise { + const workspace = process.env.GITHUB_WORKSPACE as string; + const keyFilePath = path.join(workspace, "gazebo.key"); + fs.writeFileSync(keyFilePath, openRoboticsAptPublicGpgKey); + await utils.exec("sudo", ["apt-key", "add", keyFilePath]); +} + +/** + * Add OSRF APT repository. + * + * @param ubuntuCodename the Ubuntu version codename + */ +async function addAptRepo(ubuntuCodename: string): Promise { + await utils.exec("sudo", [ + "bash", + "-c", + `echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" > /etc/apt/sources.list.d/gazebo-stable.list`, + ]); + + await utils.exec("sudo", ["apt-get", "update"]); +} + /** * Install Gazebo on a Linux worker. */ export async function runLinux(): Promise { - await configOs(); + await addAptRepoKey(); + + const ubuntuCodename = await utils.determineDistribCodename(); + await addAptRepo(ubuntuCodename); + + // Only there to test the installation of a gazebo. To be removed later + await utils.exec("sudo", ["apt-get", "install", "gz-garden"]); } From 65378fbaa98fb79fc385a81344db5b166941043f Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 14:01:00 +0800 Subject: [PATCH 02/23] Built package to update index.js Signed-off-by: Saurabh Kamat --- dist/index.js | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/dist/index.js b/dist/index.js index 5aaaf6a..9471ecb 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26256,12 +26256,58 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.runLinux = void 0; const core = __importStar(__nccwpck_require__(2186)); const io = __importStar(__nccwpck_require__(7436)); const apt = __importStar(__nccwpck_require__(4671)); const utils = __importStar(__nccwpck_require__(1314)); +const path = __importStar(__nccwpck_require__(1017)); +const fs_1 = __importDefault(__nccwpck_require__(7147)); +// Open Robotics APT Repository public GPG key, as retrieved by +// +// $ apt-key adv --refresh-keys --keyserver hkp://keyserver.ubuntu.com:80 \ +// C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 +// See also http://packages.ros.org/ros.asc (caution, this is an HTTP URL) +// +// Unfortunately, usin apt-key adv is slow, and is failing sometimes, causing +// spurious pipelines failures. The action is hard-coding the key here to +// mitigate this issue. +const openRoboticsAptPublicGpgKey = ` +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc +VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro +u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4 +K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG +aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+ +TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz +pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p +V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT +hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/ +/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV +okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB +tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA +PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur +F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB +RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z +PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa +DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC +Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR +fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0 +quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1 +1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6 +qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA +TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo +22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6 +WE+F5FaIKwb72PL4rLi4 +=i0tj +-----END PGP PUBLIC KEY BLOCK----- +`; /** * Configure basic OS stuff. */ @@ -26301,12 +26347,45 @@ function configOs() { yield apt.runAptGetInstall(["tzdata"]); }); } +/** + * Add OSRF APT repository key. + * + * This is necessary even when building from source to install colcon, vcs, etc. + */ +function addAptRepoKey() { + return __awaiter(this, void 0, void 0, function* () { + const workspace = process.env.GITHUB_WORKSPACE; + const keyFilePath = path.join(workspace, "gazebo.key"); + fs_1.default.writeFileSync(keyFilePath, openRoboticsAptPublicGpgKey); + yield utils.exec("sudo", ["apt-key", "add", keyFilePath]); + }); +} +/** + * Add OSRF APT repository. + * + * @param ubuntuCodename the Ubuntu version codename + */ +function addAptRepo(ubuntuCodename) { + return __awaiter(this, void 0, void 0, function* () { + yield utils.exec("sudo", [ + "bash", + "-c", + `echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" > /etc/apt/sources.list.d/gazebo-stable.list`, + ]); + yield utils.exec("sudo", ["apt-get", "update"]); + }); +} /** * Install Gazebo on a Linux worker. */ function runLinux() { return __awaiter(this, void 0, void 0, function* () { yield configOs(); + yield addAptRepoKey(); + const ubuntuCodename = yield utils.determineDistribCodename(); + yield addAptRepo(ubuntuCodename); + // Only there to test the installation of a gazebo. To be removed later + yield utils.exec("sudo", ["apt-get", "install", "gz-garden"]); }); } exports.runLinux = runLinux; From 1b8726ce513f585820d0bbec0f02383d0e09a846 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 15:06:47 +0800 Subject: [PATCH 03/23] Changed gpg key filepath Signed-off-by: Saurabh Kamat --- src/setup-gazebo-linux.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index 7b27206..00cbee6 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -97,7 +97,7 @@ async function configOs(): Promise { */ async function addAptRepoKey(): Promise { const workspace = process.env.GITHUB_WORKSPACE as string; - const keyFilePath = path.join(workspace, "gazebo.key"); + const keyFilePath = path.join(workspace, "/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg"); fs.writeFileSync(keyFilePath, openRoboticsAptPublicGpgKey); await utils.exec("sudo", ["apt-key", "add", keyFilePath]); } From b90cfdffd59fea25028e8e5bfff79716d44c2b68 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 15:14:20 +0800 Subject: [PATCH 04/23] Updated dist Signed-off-by: Saurabh Kamat --- dist/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/index.js b/dist/index.js index 9471ecb..4998e5b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26355,7 +26355,7 @@ function configOs() { function addAptRepoKey() { return __awaiter(this, void 0, void 0, function* () { const workspace = process.env.GITHUB_WORKSPACE; - const keyFilePath = path.join(workspace, "gazebo.key"); + const keyFilePath = path.join(workspace, "/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg"); fs_1.default.writeFileSync(keyFilePath, openRoboticsAptPublicGpgKey); yield utils.exec("sudo", ["apt-key", "add", keyFilePath]); }); From a0aef20a656b09c8d0291173bbc89a5adbd17fe8 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 15:21:41 +0800 Subject: [PATCH 05/23] Changed method to get gpg key Signed-off-by: Saurabh Kamat --- dist/index.js | 61 ++++++--------------------------------- src/setup-gazebo-linux.ts | 57 ++++++------------------------------ 2 files changed, 18 insertions(+), 100 deletions(-) diff --git a/dist/index.js b/dist/index.js index 4998e5b..86069db 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26256,58 +26256,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.runLinux = void 0; const core = __importStar(__nccwpck_require__(2186)); const io = __importStar(__nccwpck_require__(7436)); const apt = __importStar(__nccwpck_require__(4671)); const utils = __importStar(__nccwpck_require__(1314)); -const path = __importStar(__nccwpck_require__(1017)); -const fs_1 = __importDefault(__nccwpck_require__(7147)); -// Open Robotics APT Repository public GPG key, as retrieved by -// -// $ apt-key adv --refresh-keys --keyserver hkp://keyserver.ubuntu.com:80 \ -// C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 -// See also http://packages.ros.org/ros.asc (caution, this is an HTTP URL) -// -// Unfortunately, usin apt-key adv is slow, and is failing sometimes, causing -// spurious pipelines failures. The action is hard-coding the key here to -// mitigate this issue. -const openRoboticsAptPublicGpgKey = ` ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc -VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro -u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4 -K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG -aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+ -TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz -pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p -V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT -hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/ -/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV -okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB -tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA -PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur -F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB -RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z -PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa -DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC -Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR -fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0 -quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1 -1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6 -qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA -TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo -22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6 -WE+F5FaIKwb72PL4rLi4 -=i0tj ------END PGP PUBLIC KEY BLOCK----- -`; /** * Configure basic OS stuff. */ @@ -26332,7 +26286,7 @@ function configOs() { yield utils.exec("sudo", ["bash", "-c", "echo 'Etc/UTC' > /etc/timezone"]); yield utils.exec("sudo", ["apt-get", "update"]); // Install tools required to configure the worker system. - yield apt.runAptGetInstall(["curl", "gnupg2", "locales", "lsb-release"]); + yield apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release"]); // Select a locale supporting Unicode. yield utils.exec("sudo", ["locale-gen", "en_US", "en_US.UTF-8"]); core.exportVariable("LANG", "en_US.UTF-8"); @@ -26354,10 +26308,11 @@ function configOs() { */ function addAptRepoKey() { return __awaiter(this, void 0, void 0, function* () { - const workspace = process.env.GITHUB_WORKSPACE; - const keyFilePath = path.join(workspace, "/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg"); - fs_1.default.writeFileSync(keyFilePath, openRoboticsAptPublicGpgKey); - yield utils.exec("sudo", ["apt-key", "add", keyFilePath]); + yield utils.exec("sudo", [ + "bash", + "-c", + "wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg" + ]); }); } /** @@ -26370,7 +26325,9 @@ function addAptRepo(ubuntuCodename) { yield utils.exec("sudo", [ "bash", "-c", - `echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" > /etc/apt/sources.list.d/gazebo-stable.list`, + `echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] + http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | + sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null`, ]); yield utils.exec("sudo", ["apt-get", "update"]); }); diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index 00cbee6..1e786cd 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -7,48 +7,6 @@ import * as utils from "./utils"; import * as path from "path"; import fs from "fs"; -// Open Robotics APT Repository public GPG key, as retrieved by -// -// $ apt-key adv --refresh-keys --keyserver hkp://keyserver.ubuntu.com:80 \ -// C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 -// See also http://packages.ros.org/ros.asc (caution, this is an HTTP URL) -// -// Unfortunately, usin apt-key adv is slow, and is failing sometimes, causing -// spurious pipelines failures. The action is hard-coding the key here to -// mitigate this issue. -const openRoboticsAptPublicGpgKey = ` ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v1 - -mQINBFzvJpYBEADY8l1YvO7iYW5gUESyzsTGnMvVUmlV3XarBaJz9bGRmgPXh7jc -VFrQhE0L/HV7LOfoLI9H2GWYyHBqN5ERBlcA8XxG3ZvX7t9nAZPQT2Xxe3GT3tro -u5oCR+SyHN9xPnUwDuqUSvJ2eqMYb9B/Hph3OmtjG30jSNq9kOF5bBTk1hOTGPH4 -K/AY0jzT6OpHfXU6ytlFsI47ZKsnTUhipGsKucQ1CXlyirndZ3V3k70YaooZ55rG -aIoAWlx2H0J7sAHmqS29N9jV9mo135d+d+TdLBXI0PXtiHzE9IPaX+ctdSUrPnp+ -TwR99lxglpIG6hLuvOMAaxiqFBB/Jf3XJ8OBakfS6nHrWH2WqQxRbiITl0irkQoz -pwNEF2Bv0+Jvs1UFEdVGz5a8xexQHst/RmKrtHLct3iOCvBNqoAQRbvWvBhPjO/p -V5cYeUljZ5wpHyFkaEViClaVWqa6PIsyLqmyjsruPCWlURLsQoQxABcL8bwxX7UT -hM6CtH6tGlYZ85RIzRifIm2oudzV5l+8oRgFr9yVcwyOFT6JCioqkwldW52P1pk/ -/SnuexC6LYqqDuHUs5NnokzzpfS6QaWfTY5P5tz4KHJfsjDIktly3mKVfY0fSPVV -okdGpcUzvz2hq1fqjxB6MlB/1vtk0bImfcsoxBmF7H+4E9ZN1sX/tSb0KQARAQAB -tCZPcGVuIFJvYm90aWNzIDxpbmZvQG9zcmZvdW5kYXRpb24ub3JnPokCVAQTAQgA -PgIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBMHPbjHmut6IaLFytPQu1vur -F8ZUBQJgsdhRBQkLTMW7AAoJEPQu1vurF8ZUTMwP/3f7EkOPIFjUdRmpNJ2db4iB -RQu5b2SJRG+KIdbvQBzKUBMV6/RUhEDPjhXZI3zDevzBewvAMKkqs2Q1cWo9WV7Z -PyTkvSyey/Tjn+PozcdvzkvrEjDMftIk8E1WzLGq7vnPLZ1q/b6Vq4H373Z+EDWa -DaDwW72CbCBLWAVtqff80CwlI2x8fYHKr3VBUnwcXNHR4+nRABfAWnaU4k+oTshC -Qucsd8vitNfsSXrKuKyz91IRHRPnJjx8UvGU4tRGfrHkw1505EZvgP02vXeRyWBR -fKiL1vGy4tCSRDdZO3ms2J2m08VPv65HsHaWYMnO+rNJmMZj9d9JdL/9GRf5F6U0 -quoIFL39BhUEvBynuqlrqistnyOhw8W/IQy/ymNzBMcMz6rcMjMwhkgm/LNXoSD1 -1OrJu4ktQwRhwvGVarnB8ihwjsTxZFylaLmFSfaA+OAlOqCLS1OkIVMzjW+Ul6A6 -qjiCEUOsnlf4CGlhzNMZOx3low6ixzEqKOcfECpeIj80a2fBDmWkcAAjlHu6VBhA -TUDG9e2xKLzV2Z/DLYsb3+n9QW7KO0yZKfiuUo6AYboAioQKn5jh3iRvjGh2Ujpo -22G+oae3PcCc7G+z12j6xIY709FQuA49dA2YpzMda0/OX4LP56STEveDRrO+CnV6 -WE+F5FaIKwb72PL4rLi4 -=i0tj ------END PGP PUBLIC KEY BLOCK----- -`; - /** * Configure basic OS stuff. */ @@ -73,7 +31,7 @@ async function configOs(): Promise { await utils.exec("sudo", ["apt-get", "update"]); // Install tools required to configure the worker system. - await apt.runAptGetInstall(["curl", "gnupg2", "locales", "lsb-release"]); + await apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release"]); // Select a locale supporting Unicode. await utils.exec("sudo", ["locale-gen", "en_US", "en_US.UTF-8"]); @@ -96,10 +54,11 @@ async function configOs(): Promise { * This is necessary even when building from source to install colcon, vcs, etc. */ async function addAptRepoKey(): Promise { - const workspace = process.env.GITHUB_WORKSPACE as string; - const keyFilePath = path.join(workspace, "/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg"); - fs.writeFileSync(keyFilePath, openRoboticsAptPublicGpgKey); - await utils.exec("sudo", ["apt-key", "add", keyFilePath]); + await utils.exec("sudo", [ + "bash", + "-c", + "wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg" + ]); } /** @@ -111,7 +70,9 @@ async function addAptRepo(ubuntuCodename: string): Promise { await utils.exec("sudo", [ "bash", "-c", - `echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" > /etc/apt/sources.list.d/gazebo-stable.list`, + `echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] + http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | + sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null`, ]); await utils.exec("sudo", ["apt-get", "update"]); From ca92b7168981ff7577190fbe52651cfab4e6ec15 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 15:26:00 +0800 Subject: [PATCH 06/23] Added no cert check in wget of gazebo gpg key Signed-off-by: Saurabh Kamat --- dist/index.js | 3 ++- src/setup-gazebo-linux.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 86069db..29bbeec 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26311,7 +26311,8 @@ function addAptRepoKey() { yield utils.exec("sudo", [ "bash", "-c", - "wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg" + `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O + /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg` ]); }); } diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index 1e786cd..429ff5c 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -57,7 +57,8 @@ async function addAptRepoKey(): Promise { await utils.exec("sudo", [ "bash", "-c", - "wget https://packages.osrfoundation.org/gazebo.gpg -O /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg" + `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O + /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg` ]); } From d03611c8566d1bd05419e56576e199f29cf8ef87 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 15:29:23 +0800 Subject: [PATCH 07/23] Missing backslashes Signed-off-by: Saurabh Kamat --- dist/index.js | 8 ++++---- src/setup-gazebo-linux.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/dist/index.js b/dist/index.js index 29bbeec..390eaa5 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26311,8 +26311,8 @@ function addAptRepoKey() { yield utils.exec("sudo", [ "bash", "-c", - `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O - /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg` + `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O \ + /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg`, ]); }); } @@ -26326,8 +26326,8 @@ function addAptRepo(ubuntuCodename) { yield utils.exec("sudo", [ "bash", "-c", - `echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] - http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | + `echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] \ + http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | \ sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null`, ]); yield utils.exec("sudo", ["apt-get", "update"]); diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index 429ff5c..d1dbd13 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -57,8 +57,8 @@ async function addAptRepoKey(): Promise { await utils.exec("sudo", [ "bash", "-c", - `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O - /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg` + `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O \ + /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg`, ]); } @@ -71,8 +71,8 @@ async function addAptRepo(ubuntuCodename: string): Promise { await utils.exec("sudo", [ "bash", "-c", - `echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] - http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | + `echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] \ + http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | \ sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null`, ]); From 1996322c67cffd39ab5a8180d267a36ec2abc962 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sat, 1 Jun 2024 15:33:27 +0800 Subject: [PATCH 08/23] Changed to a non interactive install command Signed-off-by: Saurabh Kamat --- dist/index.js | 2 +- src/setup-gazebo-linux.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 390eaa5..8837cf2 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26343,7 +26343,7 @@ function runLinux() { const ubuntuCodename = yield utils.determineDistribCodename(); yield addAptRepo(ubuntuCodename); // Only there to test the installation of a gazebo. To be removed later - yield utils.exec("sudo", ["apt-get", "install", "gz-garden"]); + yield apt.runAptGetInstall(['gz-garden',]); }); } exports.runLinux = runLinux; diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index d1dbd13..c8335a7 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -90,6 +90,6 @@ export async function runLinux(): Promise { await addAptRepo(ubuntuCodename); // Only there to test the installation of a gazebo. To be removed later - await utils.exec("sudo", ["apt-get", "install", "gz-garden"]); + await apt.runAptGetInstall(['gz-garden',]); } From 56dd9f62e887d3bee23efa66e29f54a268ea2a57 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 01:29:25 +0800 Subject: [PATCH 09/23] Added gz distro input functionality Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 6 ++++-- action.yml | 13 +++++++++++ dist/index.js | 38 +++++++++++++++++++++++++++++++- src/setup-gazebo-linux.ts | 4 ---- src/utils.ts | 44 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 98 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 08fe604..4876e30 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,5 +14,7 @@ jobs: - ubuntu:22.04 steps: - uses: actions/checkout@v4 - - name: 'Linux setup' - uses: ./ \ No newline at end of file + - uses: ./ + # with: + # required-gazebo-distributions: garden + - run: gz sim --versions \ No newline at end of file diff --git a/action.yml b/action.yml index 99c9be3..612c3c0 100644 --- a/action.yml +++ b/action.yml @@ -1,6 +1,19 @@ name: 'Setup Gazebo release' description: | Install a Gazebo release on a Linux system +required-gazebo-distributions: + description: | + List of Gazebo distributions to be installed. + + Allowed Gazebo distributions + - citadel + - fortress + - garden + - harmonic + + Multiple values can be passed using a whitespace delimited list + "fortress garden". + required: true runs: using: node20 main: dist/index.js diff --git a/dist/index.js b/dist/index.js index 8837cf2..18d7b4b 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26448,7 +26448,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.determineDistribCodename = exports.exec = void 0; +exports.getRequiredGazeboDistributions = exports.validateDistro = exports.determineDistribCodename = exports.exec = void 0; const actions_exec = __importStar(__nccwpck_require__(1514)); const core = __importStar(__nccwpck_require__(2186)); /** @@ -26492,6 +26492,42 @@ function determineDistribCodename() { }); } exports.determineDistribCodename = determineDistribCodename; +// List of valid Gazebo distributions +const validDistro = ["citadel", "fortress", "garden", "humble"]; +//. +/** + * Validate all Gazebo input distribution names + * + * @param requiredGazeboDistributionsList + * @returns boolean + */ +function validateDistro(requiredGazeboDistributionsList) { + for (const gazeboDistro of requiredGazeboDistributionsList) { + if (validDistro.indexOf(gazeboDistro) <= -1) { + return false; + } + } + return true; +} +exports.validateDistro = validateDistro; +/** + * Gets the input of the Gazebo distributions to be installed and + * validates them + * + * @returns string[] List of validated Gazebo distributions + */ +function getRequiredGazeboDistributions() { + let requiredGazeboDistributionsList = []; + const requiredGazeboDistributions = core.getInput("required-gazebo-distributions"); + if (requiredGazeboDistributions) { + requiredGazeboDistributionsList = requiredGazeboDistributions.split(RegExp("\\s")); + } + if (!validateDistro(requiredGazeboDistributionsList)) { + throw new Error("Input has invalid distribution names."); + } + return requiredGazeboDistributionsList; +} +exports.getRequiredGazeboDistributions = getRequiredGazeboDistributions; /***/ }), diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index c8335a7..a4859e3 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -4,9 +4,6 @@ import * as io from "@actions/io"; import * as apt from "./package_manager/apt"; import * as utils from "./utils"; -import * as path from "path"; -import fs from "fs"; - /** * Configure basic OS stuff. */ @@ -91,5 +88,4 @@ export async function runLinux(): Promise { // Only there to test the installation of a gazebo. To be removed later await apt.runAptGetInstall(['gz-garden',]); - } diff --git a/src/utils.ts b/src/utils.ts index e99a37d..808c82c 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -46,4 +46,48 @@ export async function determineDistribCodename(): Promise { options, ); return distribCodename; +} + +// List of valid Gazebo distributions +const validDistro: string[] = ["citadel", "fortress", "garden", "humble"]; + +//. +/** + * Validate all Gazebo input distribution names + * + * @param requiredGazeboDistributionsList + * @returns boolean + */ +export function validateDistro( + requiredGazeboDistributionsList: string[], +): boolean { + for (const gazeboDistro of requiredGazeboDistributionsList) { + if (validDistro.indexOf(gazeboDistro) <= -1) { + return false; + } + } + + return true; +} + +/** + * Gets the input of the Gazebo distributions to be installed and + * validates them + * + * @returns string[] List of validated Gazebo distributions + */ +export function getRequiredGazeboDistributions(): string[] { + let requiredGazeboDistributionsList: string[] = []; + const requiredGazeboDistributions = core.getInput("required-gazebo-distributions"); + if (requiredGazeboDistributions) { + requiredGazeboDistributionsList = requiredGazeboDistributions.split( + RegExp("\\s"), + ); + } + + if (!validateDistro(requiredGazeboDistributionsList)) { + throw new Error("Input has invalid distribution names."); + } + + return requiredGazeboDistributionsList; } \ No newline at end of file From 02de3a41bcfa2f3599f10ad5a1b4db44ed57bc91 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 01:50:26 +0800 Subject: [PATCH 10/23] Installing gz distro from user input Signed-off-by: Saurabh Kamat --- dist/index.js | 9 +++++---- src/setup-gazebo-linux.ts | 7 ++++--- src/utils.ts | 6 +----- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/dist/index.js b/dist/index.js index 18d7b4b..0d3ba92 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26340,10 +26340,12 @@ function runLinux() { return __awaiter(this, void 0, void 0, function* () { yield configOs(); yield addAptRepoKey(); + // Add repo according to Ubuntu version const ubuntuCodename = yield utils.determineDistribCodename(); yield addAptRepo(ubuntuCodename); - // Only there to test the installation of a gazebo. To be removed later - yield apt.runAptGetInstall(['gz-garden',]); + for (const gazeboDistro of utils.getRequiredGazeboDistributions()) { + yield apt.runAptGetInstall([`gz-${gazeboDistro}`]); + } }); } exports.runLinux = runLinux; @@ -26494,12 +26496,11 @@ function determineDistribCodename() { exports.determineDistribCodename = determineDistribCodename; // List of valid Gazebo distributions const validDistro = ["citadel", "fortress", "garden", "humble"]; -//. /** * Validate all Gazebo input distribution names * * @param requiredGazeboDistributionsList - * @returns boolean + * @returns boolean Validity of Gazebo distribution */ function validateDistro(requiredGazeboDistributionsList) { for (const gazeboDistro of requiredGazeboDistributionsList) { diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index a4859e3..862a69e 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -72,7 +72,6 @@ async function addAptRepo(ubuntuCodename: string): Promise { http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | \ sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null`, ]); - await utils.exec("sudo", ["apt-get", "update"]); } @@ -83,9 +82,11 @@ export async function runLinux(): Promise { await configOs(); await addAptRepoKey(); + // Add repo according to Ubuntu version const ubuntuCodename = await utils.determineDistribCodename(); await addAptRepo(ubuntuCodename); - // Only there to test the installation of a gazebo. To be removed later - await apt.runAptGetInstall(['gz-garden',]); + for (const gazeboDistro of utils.getRequiredGazeboDistributions()) { + await apt.runAptGetInstall([`gz-${gazeboDistro}`]); + } } diff --git a/src/utils.ts b/src/utils.ts index 808c82c..4819139 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -51,12 +51,11 @@ export async function determineDistribCodename(): Promise { // List of valid Gazebo distributions const validDistro: string[] = ["citadel", "fortress", "garden", "humble"]; -//. /** * Validate all Gazebo input distribution names * * @param requiredGazeboDistributionsList - * @returns boolean + * @returns boolean Validity of Gazebo distribution */ export function validateDistro( requiredGazeboDistributionsList: string[], @@ -66,7 +65,6 @@ export function validateDistro( return false; } } - return true; } @@ -84,10 +82,8 @@ export function getRequiredGazeboDistributions(): string[] { RegExp("\\s"), ); } - if (!validateDistro(requiredGazeboDistributionsList)) { throw new Error("Input has invalid distribution names."); } - return requiredGazeboDistributionsList; } \ No newline at end of file From fa6e479e4e49d85cb22c99e56f67fff18f953d34 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 02:28:19 +0800 Subject: [PATCH 11/23] Added exception in case no gz distro is specified Signed-off-by: Saurabh Kamat --- dist/index.js | 3 +++ src/utils.ts | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/dist/index.js b/dist/index.js index 0d3ba92..379555c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26523,6 +26523,9 @@ function getRequiredGazeboDistributions() { if (requiredGazeboDistributions) { requiredGazeboDistributionsList = requiredGazeboDistributions.split(RegExp("\\s")); } + else { + throw new Error("Input cannot be empty."); + } if (!validateDistro(requiredGazeboDistributionsList)) { throw new Error("Input has invalid distribution names."); } diff --git a/src/utils.ts b/src/utils.ts index 4819139..823bcad 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -81,7 +81,9 @@ export function getRequiredGazeboDistributions(): string[] { requiredGazeboDistributionsList = requiredGazeboDistributions.split( RegExp("\\s"), ); - } + } else { + throw new Error("Input cannot be empty."); + } if (!validateDistro(requiredGazeboDistributionsList)) { throw new Error("Input has invalid distribution names."); } From ce3973aa3e2e062b28bf2779591c9789668a854c Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 02:33:10 +0800 Subject: [PATCH 12/23] Updated test workflow with inputs Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4876e30..6d9a849 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -14,7 +14,8 @@ jobs: - ubuntu:22.04 steps: - uses: actions/checkout@v4 - - uses: ./ - # with: - # required-gazebo-distributions: garden + - name: 'Install Gazebo in Linux runner' + uses: ./ + with: + required-gazebo-distributions: garden - run: gz sim --versions \ No newline at end of file From 1c7d49981b4340e242440bd169f9d264f6f17b18 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 02:46:29 +0800 Subject: [PATCH 13/23] Updated test workflow with multiple cases Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 41 ++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6d9a849..ec1401a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,7 +2,39 @@ name: 'Test setup-gazebo' on: workflow_dispatch: jobs: - test_linux: + test_linux_citadel: + runs-on: ubuntu-latest + container: + image: ubuntu:20.04 + strategy: + fail-fast: false + steps: + - uses: actions/checkout@v4 + - name: 'Install Gazebo Citadel in Linux runner' + uses: ./ + with: + required-gazebo-distributions: citadel + - name: 'Check Gazebo installation' + run: gz sim --versions + test_linux_fortress_garden: + runs-on: ubuntu-latest + container: + image: ubuntu:20.04 + strategy: + fail-fast: false + matrix: + gazebo_distribution: + - fortress + - garden + steps: + - uses: actions/checkout@v4 + - name: 'Install Gazebo in Linux runner' + uses: ./ + with: + required-gazebo-distributions: ${{ matrix.gazebo_distribution }} + - name: 'Check Gazebo installation' + run: gz sim --versions + test_linux_harmonic: runs-on: ubuntu-latest container: image: ${{ matrix.docker_image }} @@ -14,8 +46,9 @@ jobs: - ubuntu:22.04 steps: - uses: actions/checkout@v4 - - name: 'Install Gazebo in Linux runner' + - name: 'Install Gazebo Harmonic in Linux runners' uses: ./ with: - required-gazebo-distributions: garden - - run: gz sim --versions \ No newline at end of file + required-gazebo-distributions: harmonic + - name: 'Check Gazebo installation' + run: gz sim --versions \ No newline at end of file From 9290cea742264f1fa3d27c76f52104fef6852727 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 02:53:13 +0800 Subject: [PATCH 14/23] Resolved job errors Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 10 +++++----- dist/index.js | 2 +- src/utils.ts | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ec1401a..b7d639c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,10 +10,10 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v4 - - name: 'Install Gazebo Citadel in Linux runner' + - name: 'Install Gazebo Garden in Linux runner' uses: ./ with: - required-gazebo-distributions: citadel + required-gazebo-distributions: garden - name: 'Check Gazebo installation' run: gz sim --versions test_linux_fortress_garden: @@ -24,16 +24,16 @@ jobs: fail-fast: false matrix: gazebo_distribution: + - citadel - fortress - - garden steps: - uses: actions/checkout@v4 - - name: 'Install Gazebo in Linux runner' + - name: 'Install Gazebo in Linux runners' uses: ./ with: required-gazebo-distributions: ${{ matrix.gazebo_distribution }} - name: 'Check Gazebo installation' - run: gz sim --versions + run: ign gazebo --versions test_linux_harmonic: runs-on: ubuntu-latest container: diff --git a/dist/index.js b/dist/index.js index 379555c..84c24b4 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26495,7 +26495,7 @@ function determineDistribCodename() { } exports.determineDistribCodename = determineDistribCodename; // List of valid Gazebo distributions -const validDistro = ["citadel", "fortress", "garden", "humble"]; +const validDistro = ["citadel", "fortress", "garden", "harmonic"]; /** * Validate all Gazebo input distribution names * diff --git a/src/utils.ts b/src/utils.ts index 823bcad..cfd5672 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -49,7 +49,7 @@ export async function determineDistribCodename(): Promise { } // List of valid Gazebo distributions -const validDistro: string[] = ["citadel", "fortress", "garden", "humble"]; +const validDistro: string[] = ["citadel", "fortress", "garden", "harmonic"]; /** * Validate all Gazebo input distribution names From 41fcded122d4adbfbd27ead448a9d08b090c6cee Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 02:57:36 +0800 Subject: [PATCH 15/23] Changed images for harmonic and garden in test workflow Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b7d639c..19a6e0a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,10 +10,10 @@ jobs: fail-fast: false steps: - uses: actions/checkout@v4 - - name: 'Install Gazebo Garden in Linux runner' + - name: 'Install Gazebo Harmonic in Linux runner' uses: ./ with: - required-gazebo-distributions: garden + required-gazebo-distributions: harmonic - name: 'Check Gazebo installation' run: gz sim --versions test_linux_fortress_garden: @@ -46,9 +46,9 @@ jobs: - ubuntu:22.04 steps: - uses: actions/checkout@v4 - - name: 'Install Gazebo Harmonic in Linux runners' + - name: 'Install Gazebo Garden in Linux runners' uses: ./ with: - required-gazebo-distributions: harmonic + required-gazebo-distributions: garden - name: 'Check Gazebo installation' run: gz sim --versions \ No newline at end of file From edd283ce530649112182f9599c0da4c0a39f627e Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 03:00:01 +0800 Subject: [PATCH 16/23] Changed job names for better visibility Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 19a6e0a..5dec6d8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,10 +2,10 @@ name: 'Test setup-gazebo' on: workflow_dispatch: jobs: - test_linux_citadel: + test_linux_harmonic: runs-on: ubuntu-latest container: - image: ubuntu:20.04 + image: ubuntu:22.04 strategy: fail-fast: false steps: @@ -16,7 +16,7 @@ jobs: required-gazebo-distributions: harmonic - name: 'Check Gazebo installation' run: gz sim --versions - test_linux_fortress_garden: + test_linux_citadel_fortress: runs-on: ubuntu-latest container: image: ubuntu:20.04 @@ -34,7 +34,7 @@ jobs: required-gazebo-distributions: ${{ matrix.gazebo_distribution }} - name: 'Check Gazebo installation' run: ign gazebo --versions - test_linux_harmonic: + test_linux_garden: runs-on: ubuntu-latest container: image: ${{ matrix.docker_image }} From aef0570432c4a619135b86351dcae19ca66c022f Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Sun, 2 Jun 2024 12:48:32 +0800 Subject: [PATCH 17/23] Changed testing to use matrix combinations Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 71 ++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5dec6d8..509f8dd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,53 +2,48 @@ name: 'Test setup-gazebo' on: workflow_dispatch: jobs: - test_linux_harmonic: + test_gazebo_install_ubuntu: + name: 'Check installation of Gazebo on Ubuntu' runs-on: ubuntu-latest container: - image: ubuntu:22.04 - strategy: - fail-fast: false - steps: - - uses: actions/checkout@v4 - - name: 'Install Gazebo Harmonic in Linux runner' - uses: ./ - with: - required-gazebo-distributions: harmonic - - name: 'Check Gazebo installation' - run: gz sim --versions - test_linux_citadel_fortress: - runs-on: ubuntu-latest - container: - image: ubuntu:20.04 + image: ${{ matrix.docker_image }} strategy: fail-fast: false matrix: gazebo_distribution: - citadel - fortress + - garden + - harmonic + include: + # Gazebo Citadel (Dec 2019 - Dec 2024) + - docker_image: ubuntu:focal + gazebo_distribution: citadel + gazebo_version: ign + + # Gazebo Fortress (Sep 2021 - Sep 2026) + - docker_image: ubuntu:focal + gazebo_distribution: fortress + gazebo_version: ign + + # Gazebo Garden (Sep 2022 - Nov 2024) + - docker_image: ubuntu:focal + gazebo_distribution: garden + gazebo_version: gz + + # Gazebo Harmonic (Sep 2023 - Sep 2028) + - docker_image: ubuntu:jammy + gazebo_distribution: harmonic + gazebo_version: gz steps: - uses: actions/checkout@v4 - - name: 'Install Gazebo in Linux runners' - uses: ./ + - uses: actions/setup-node@v4.0.2 with: - required-gazebo-distributions: ${{ matrix.gazebo_distribution }} - - name: 'Check Gazebo installation' - run: ign gazebo --versions - test_linux_garden: - runs-on: ubuntu-latest - container: - image: ${{ matrix.docker_image }} - strategy: - fail-fast: false - matrix: - docker_image: - - ubuntu:20.04 - - ubuntu:22.04 - steps: - - uses: actions/checkout@v4 - - name: 'Install Gazebo Garden in Linux runners' - uses: ./ + node-version: "20.x" + - uses: ./ with: - required-gazebo-distributions: garden - - name: 'Check Gazebo installation' - run: gz sim --versions \ No newline at end of file + required-gazebo-distributions: ${{ matrix.gazebo_distribution }} + - run: ign gazebo --versions + if: matrix.gazebo_version == 'ign' + - run: gz sim --versions + if: matrix.gazebo_version == 'gz' From d273ff5c7c6f71ff401539f51dbc044862b91446 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Mon, 3 Jun 2024 20:19:57 +0800 Subject: [PATCH 18/23] Changed the test command to run in a single line Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 509f8dd..66c81ad 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,31 +19,34 @@ jobs: # Gazebo Citadel (Dec 2019 - Dec 2024) - docker_image: ubuntu:focal gazebo_distribution: citadel - gazebo_version: ign # Gazebo Fortress (Sep 2021 - Sep 2026) - docker_image: ubuntu:focal gazebo_distribution: fortress - gazebo_version: ign # Gazebo Garden (Sep 2022 - Nov 2024) - docker_image: ubuntu:focal gazebo_distribution: garden - gazebo_version: gz # Gazebo Harmonic (Sep 2023 - Sep 2028) - docker_image: ubuntu:jammy gazebo_distribution: harmonic - gazebo_version: gz steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4.0.2 with: node-version: "20.x" - - uses: ./ + - name: 'Check Gazebo installation on Ubuntu runner' + uses: ./ with: required-gazebo-distributions: ${{ matrix.gazebo_distribution }} - - run: ign gazebo --versions - if: matrix.gazebo_version == 'ign' - - run: gz sim --versions - if: matrix.gazebo_version == 'gz' + - name: 'Test Gazebo installation' + run: | + if command -v ign > /dev/null; then + ign gazebo --versions + elif command -v gz > /dev/null; then + gz sim --versions + else + echo "Neither ign nor gz command found" + exit 1 + fi From 1e3888d0ff2083a30e65b06853306a4563738c92 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Mon, 3 Jun 2024 20:27:12 +0800 Subject: [PATCH 19/23] Added default value to action input to prevent warning Signed-off-by: Saurabh Kamat --- action.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 612c3c0..877158f 100644 --- a/action.yml +++ b/action.yml @@ -13,7 +13,8 @@ required-gazebo-distributions: Multiple values can be passed using a whitespace delimited list "fortress garden". - required: true + required: false + default: '' runs: using: node20 main: dist/index.js From 084ee97cb3561f8152708b38e2c6007aa4c1ee29 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Mon, 3 Jun 2024 23:42:57 +0800 Subject: [PATCH 20/23] Fixed indentation. Added ca certificate check while getting gz key Signed-off-by: Saurabh Kamat --- src/package_manager/apt.ts | 16 ++++---- src/setup-gazebo-linux.ts | 78 ++++++++++++++++++------------------- src/setup-gazebo.ts | 8 ++-- src/utils.ts | 80 +++++++++++++++++++------------------- 4 files changed, 91 insertions(+), 91 deletions(-) diff --git a/src/package_manager/apt.ts b/src/package_manager/apt.ts index ea96257..57dd6ca 100644 --- a/src/package_manager/apt.ts +++ b/src/package_manager/apt.ts @@ -1,13 +1,13 @@ import * as utils from "../utils"; const aptCommandLine: string[] = [ - "DEBIAN_FRONTEND=noninteractive", - "RTI_NC_LICENSE_ACCEPTED=yes", - "apt-get", - "install", - "--no-install-recommends", - "--quiet", - "--yes", + "DEBIAN_FRONTEND=noninteractive", + "RTI_NC_LICENSE_ACCEPTED=yes", + "apt-get", + "install", + "--no-install-recommends", + "--quiet", + "--yes", ]; /** @@ -24,5 +24,5 @@ const aptCommandLine: string[] = [ * @returns Promise exit code */ export async function runAptGetInstall(packages: string[]): Promise { - return utils.exec("sudo", aptCommandLine.concat(packages)); + return utils.exec("sudo", aptCommandLine.concat(packages)); } \ No newline at end of file diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index 862a69e..bcd560a 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -8,41 +8,41 @@ import * as utils from "./utils"; * Configure basic OS stuff. */ async function configOs(): Promise { - // When this action runs in a Docker image, sudo may be missing. - // This installs sudo to avoid having to handle both cases (action runs as - // root, action does not run as root) everywhere in the action. - try { - await io.which("sudo", true); - } catch (err) { - await utils.exec("apt-get", ["update"]); - await utils.exec("apt-get", [ - "install", - "--no-install-recommends", - "--quiet", - "--yes", - "sudo", - ]); - } + // When this action runs in a Docker image, sudo may be missing. + // This installs sudo to avoid having to handle both cases (action runs as + // root, action does not run as root) everywhere in the action. + try { + await io.which("sudo", true); + } catch (err) { + await utils.exec("apt-get", ["update"]); + await utils.exec("apt-get", [ + "install", + "--no-install-recommends", + "--quiet", + "--yes", + "sudo", + ]); + } - await utils.exec("sudo", ["bash", "-c", "echo 'Etc/UTC' > /etc/timezone"]); - await utils.exec("sudo", ["apt-get", "update"]); + await utils.exec("sudo", ["bash", "-c", "echo 'Etc/UTC' > /etc/timezone"]); + await utils.exec("sudo", ["apt-get", "update"]); - // Install tools required to configure the worker system. - await apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release"]); + // Install tools required to configure the worker system. + await apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release"]); - // Select a locale supporting Unicode. - await utils.exec("sudo", ["locale-gen", "en_US", "en_US.UTF-8"]); - core.exportVariable("LANG", "en_US.UTF-8"); + // Select a locale supporting Unicode. + await utils.exec("sudo", ["locale-gen", "en_US", "en_US.UTF-8"]); + core.exportVariable("LANG", "en_US.UTF-8"); - // Enforce UTC time for consistency. - await utils.exec("sudo", ["bash", "-c", "echo 'Etc/UTC' > /etc/timezone"]); - await utils.exec("sudo", [ - "ln", - "-sf", - "/usr/share/zoneinfo/Etc/UTC", - "/etc/localtime", - ]); - await apt.runAptGetInstall(["tzdata"]); + // Enforce UTC time for consistency. + await utils.exec("sudo", ["bash", "-c", "echo 'Etc/UTC' > /etc/timezone"]); + await utils.exec("sudo", [ + "ln", + "-sf", + "/usr/share/zoneinfo/Etc/UTC", + "/etc/localtime", + ]); + await apt.runAptGetInstall(["tzdata"]); } /** @@ -51,10 +51,10 @@ async function configOs(): Promise { * This is necessary even when building from source to install colcon, vcs, etc. */ async function addAptRepoKey(): Promise { - await utils.exec("sudo", [ + await utils.exec("sudo", [ "bash", "-c", - `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O \ + `wget https://packages.osrfoundation.org/gazebo.gpg -O \ /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg`, ]); } @@ -72,21 +72,21 @@ async function addAptRepo(ubuntuCodename: string): Promise { http://packages.osrfoundation.org/gazebo/ubuntu-stable ${ubuntuCodename} main" | \ sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null`, ]); - await utils.exec("sudo", ["apt-get", "update"]); + await utils.exec("sudo", ["apt-get", "update"]); } /** * Install Gazebo on a Linux worker. */ export async function runLinux(): Promise { - await configOs(); + await configOs(); await addAptRepoKey(); // Add repo according to Ubuntu version - const ubuntuCodename = await utils.determineDistribCodename(); - await addAptRepo(ubuntuCodename); + const ubuntuCodename = await utils.determineDistribCodename(); + await addAptRepo(ubuntuCodename); for (const gazeboDistro of utils.getRequiredGazeboDistributions()) { - await apt.runAptGetInstall([`gz-${gazeboDistro}`]); - } + await apt.runAptGetInstall([`gz-${gazeboDistro}`]); + } } diff --git a/src/setup-gazebo.ts b/src/setup-gazebo.ts index 361d43f..d4d00a7 100644 --- a/src/setup-gazebo.ts +++ b/src/setup-gazebo.ts @@ -7,10 +7,10 @@ async function run() { } catch (error) { let errorMessage = "Unknown error"; - if (error instanceof Error) { - errorMessage = error.message; - } - core.setFailed(errorMessage); + if (error instanceof Error) { + errorMessage = error.message; + } + core.setFailed(errorMessage); } } diff --git a/src/utils.ts b/src/utils.ts index cfd5672..234449a 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -12,16 +12,16 @@ import * as im from "@actions/exec/lib/interfaces"; * @returns Promise exit code */ export async function exec( - commandLine: string, - args?: string[], - options?: im.ExecOptions, - log_message?: string, + commandLine: string, + args?: string[], + options?: im.ExecOptions, + log_message?: string, ): Promise { - const argsAsString = (args || []).join(" "); - const message = log_message || `Invoking "${commandLine} ${argsAsString}"`; - return core.group(message, () => { - return actions_exec.exec(commandLine, args, options); - }); + const argsAsString = (args || []).join(" "); + const message = log_message || `Invoking "${commandLine} ${argsAsString}"`; + return core.group(message, () => { + return actions_exec.exec(commandLine, args, options); + }); } /** @@ -33,19 +33,19 @@ export async function exec( * @returns Promise Ubuntu distribution codename (e.g. "focal") */ export async function determineDistribCodename(): Promise { - let distribCodename = ""; - const options: im.ExecOptions = {}; - options.listeners = { - stdout: (data: Buffer) => { - distribCodename += data.toString(); - }, - }; - await exec( - "bash", - ["-c", 'source /etc/lsb-release ; echo -n "$DISTRIB_CODENAME"'], - options, - ); - return distribCodename; + let distribCodename = ""; + const options: im.ExecOptions = {}; + options.listeners = { + stdout: (data: Buffer) => { + distribCodename += data.toString(); + }, + }; + await exec( + "bash", + ["-c", 'source /etc/lsb-release ; echo -n "$DISTRIB_CODENAME"'], + options, + ); + return distribCodename; } // List of valid Gazebo distributions @@ -58,14 +58,14 @@ const validDistro: string[] = ["citadel", "fortress", "garden", "harmonic"]; * @returns boolean Validity of Gazebo distribution */ export function validateDistro( - requiredGazeboDistributionsList: string[], + requiredGazeboDistributionsList: string[], ): boolean { - for (const gazeboDistro of requiredGazeboDistributionsList) { - if (validDistro.indexOf(gazeboDistro) <= -1) { - return false; - } - } - return true; + for (const gazeboDistro of requiredGazeboDistributionsList) { + if (validDistro.indexOf(gazeboDistro) <= -1) { + return false; + } + } + return true; } /** @@ -75,17 +75,17 @@ export function validateDistro( * @returns string[] List of validated Gazebo distributions */ export function getRequiredGazeboDistributions(): string[] { - let requiredGazeboDistributionsList: string[] = []; - const requiredGazeboDistributions = core.getInput("required-gazebo-distributions"); - if (requiredGazeboDistributions) { - requiredGazeboDistributionsList = requiredGazeboDistributions.split( - RegExp("\\s"), - ); - } else { + let requiredGazeboDistributionsList: string[] = []; + const requiredGazeboDistributions = core.getInput("required-gazebo-distributions"); + if (requiredGazeboDistributions) { + requiredGazeboDistributionsList = requiredGazeboDistributions.split( + RegExp("\\s"), + ); + } else { throw new Error("Input cannot be empty."); } - if (!validateDistro(requiredGazeboDistributionsList)) { - throw new Error("Input has invalid distribution names."); - } - return requiredGazeboDistributionsList; + if (!validateDistro(requiredGazeboDistributionsList)) { + throw new Error("Input has invalid distribution names."); + } + return requiredGazeboDistributionsList; } \ No newline at end of file From e525dc33743ce8378c5df31a4ad7b27c23c1247d Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Tue, 4 Jun 2024 20:52:57 +0800 Subject: [PATCH 21/23] Configured workflow to run on PRs/push Signed-off-by: Saurabh Kamat --- .github/workflows/test.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 66c81ad..c6b2adc 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,6 +1,13 @@ name: 'Test setup-gazebo' on: - workflow_dispatch: + pull_request: + push: + branches: + - main + - "releases/*" + schedule: + # Run the CI automatically twice per day to look for flakyness. + - cron: "0 */12 * * *" jobs: test_gazebo_install_ubuntu: name: 'Check installation of Gazebo on Ubuntu' From 66b9d4bcf3cd2246723f2110ef6598336d3a2e07 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Tue, 4 Jun 2024 23:08:02 +0800 Subject: [PATCH 22/23] Removed ROS related variable in apt install script Signed-off-by: Saurabh Kamat --- dist/index.js | 3 +-- src/package_manager/apt.ts | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/dist/index.js b/dist/index.js index 84c24b4..5789662 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26189,7 +26189,6 @@ exports.runAptGetInstall = void 0; const utils = __importStar(__nccwpck_require__(1314)); const aptCommandLine = [ "DEBIAN_FRONTEND=noninteractive", - "RTI_NC_LICENSE_ACCEPTED=yes", "apt-get", "install", "--no-install-recommends", @@ -26311,7 +26310,7 @@ function addAptRepoKey() { yield utils.exec("sudo", [ "bash", "-c", - `wget --no-check-certificate https://packages.osrfoundation.org/gazebo.gpg -O \ + `wget https://packages.osrfoundation.org/gazebo.gpg -O \ /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg`, ]); }); diff --git a/src/package_manager/apt.ts b/src/package_manager/apt.ts index 57dd6ca..91a3ba1 100644 --- a/src/package_manager/apt.ts +++ b/src/package_manager/apt.ts @@ -2,7 +2,6 @@ import * as utils from "../utils"; const aptCommandLine: string[] = [ "DEBIAN_FRONTEND=noninteractive", - "RTI_NC_LICENSE_ACCEPTED=yes", "apt-get", "install", "--no-install-recommends", From f4691218df0925b3727a8b2e1d413c33d9dff607 Mon Sep 17 00:00:00 2001 From: Saurabh Kamat Date: Tue, 4 Jun 2024 23:23:44 +0800 Subject: [PATCH 23/23] Installing ca certificates to resolve wget error Signed-off-by: Saurabh Kamat --- dist/index.js | 2 +- src/setup-gazebo-linux.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 5789662..402546c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -26285,7 +26285,7 @@ function configOs() { yield utils.exec("sudo", ["bash", "-c", "echo 'Etc/UTC' > /etc/timezone"]); yield utils.exec("sudo", ["apt-get", "update"]); // Install tools required to configure the worker system. - yield apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release"]); + yield apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release", "ca-certificates"]); // Select a locale supporting Unicode. yield utils.exec("sudo", ["locale-gen", "en_US", "en_US.UTF-8"]); core.exportVariable("LANG", "en_US.UTF-8"); diff --git a/src/setup-gazebo-linux.ts b/src/setup-gazebo-linux.ts index bcd560a..05acb33 100644 --- a/src/setup-gazebo-linux.ts +++ b/src/setup-gazebo-linux.ts @@ -28,7 +28,7 @@ async function configOs(): Promise { await utils.exec("sudo", ["apt-get", "update"]); // Install tools required to configure the worker system. - await apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release"]); + await apt.runAptGetInstall(["wget", "curl", "gnupg2", "locales", "lsb-release", "ca-certificates"]); // Select a locale supporting Unicode. await utils.exec("sudo", ["locale-gen", "en_US", "en_US.UTF-8"]);