{"id":15018463,"url":"https://github.com/nativescript/nativescript-remote-builds","last_synced_at":"2025-10-19T16:31:04.355Z","repository":{"id":42046363,"uuid":"233543846","full_name":"NativeScript/nativescript-remote-builds","owner":"NativeScript","description":"A NativeScript plugin for remote builds when running and publishing NativeScript apps without env setup.","archived":false,"fork":false,"pushed_at":"2022-04-15T18:18:11.000Z","size":1674,"stargazers_count":26,"open_issues_count":13,"forks_count":9,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-10-29T15:51:54.853Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NativeScript.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-13T08:11:13.000Z","updated_at":"2023-10-13T08:03:48.000Z","dependencies_parsed_at":"2022-08-12T03:20:25.289Z","dependency_job_id":null,"html_url":"https://github.com/NativeScript/nativescript-remote-builds","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NativeScript%2Fnativescript-remote-builds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NativeScript%2Fnativescript-remote-builds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NativeScript%2Fnativescript-remote-builds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NativeScript%2Fnativescript-remote-builds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NativeScript","download_url":"https://codeload.github.com/NativeScript/nativescript-remote-builds/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237163221,"owners_count":19265229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-24T19:51:59.876Z","updated_at":"2025-10-19T16:30:58.957Z","avatar_url":"https://github.com/NativeScript.png","language":"JavaScript","readme":"# nativescript-remote-builds\n\n[![Build Status](https://travis-ci.com/NativeScript/nativescript-remote-builds.svg?branch=master)](https://travis-ci.com/NativeScript/nativescript-remote-builds)\n\nHave you ever been wondering how to:\n* build **NativeScript apps for iOS on Windows or Linux**?\n* setup a **stable CI** for your NativeScript apps?\n* avoid the **iOS code signing management**?\n\nIf so, the **NativeScript Remote Plugins** is just for you! :rocket:\n\n## How does it work?\n\nThe plugin is using several **NativeScript CLI hooks** and modifying its behavior by:\n* **Skipping** the local **[native tooling\u003csup\u003e[1]\u003c/sup\u003e](#tooling) requirements**.\n* **Skipping the native resources** handling during the CLI **prepare phase** - they will be handled in the remote.\n* **Replacing the CLI local build** with the build method of the selected remote.\n\nThe **rest of the CLI logic is working as usual**, for example, the *tns debug* command is preparing the JavaScript, uploading it to the connected devices, showing logs, opening debug sockets, showing an URL for debugging and so on.\n\n## How does it differ from the NaticeScript CLI Cloud extension?\n\nComparing the cloud builds part of the [NativeScript Cloud extension](https://github.com/NativeScript/nativescript-cloud) and the [NativeScript Remote Builds plugin](https://github.com/NativeScript/nativescript-remote-builds), they look similar.\n\nThe main differences come from the fact that **the NativeScript Remote Builds plugin enables the existing NativeScript CLI commands on environments without any [native tooling\u003csup\u003e[1]\u003c/sup\u003e](#tooling) requirements** instead of providing additional commands like the `tns cloud` ones. The Remote Builds plugin is also **designed to be stable and reliable in a CI environement**.\n\nHere's a comparison table between the NativeScript Cloud Extension and the NativeScript Remote Builds plugin:\n\n|                                                                        |                 Cloud Extension               | Remote Builds Plugin |\n| :---                                                                   |                      :---:                    |         :---:        |\n| Build, Run and Publish without [native tooling\u003csup\u003e[1]\u003c/sup\u003e](#tooling)|               ![](https://i.imgur.com/v9VEBbf.png)              |  ![](https://i.imgur.com/v9VEBbf.png)  |\n| Debug without [native tooling\u003csup\u003e[1]\u003c/sup\u003e](#tooling)                 |\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![](https://i.imgur.com/88WLiNS.png)[\u003csup\u003e[2]\u003c/sup\u003e](#cloudDebug)|  ![](https://i.imgur.com/v9VEBbf.png)  |\n| Run Unit Tests without [native tooling\u003csup\u003e[1]\u003c/sup\u003e](#tooling)                  |                       ![](https://i.imgur.com/JcfimjC.png)                     |  ![](https://i.imgur.com/v9VEBbf.png)  |\n| [Automatic iOS Signing Management\u003csup\u003e[3]\u003c/sup\u003e](#signing)                       |                       ![](https://i.imgur.com/JcfimjC.png)                     |  ![](https://i.imgur.com/v9VEBbf.png)  |\n| [Full CI Support\u003csup\u003e[4]\u003c/sup\u003e](#ci)                              |                       ![](https://i.imgur.com/JcfimjC.png)                     |  ![](https://i.imgur.com/v9VEBbf.png)  |\n| [Full Environment Information\u003csup\u003e[5]\u003c/sup\u003e](#envInfo)                 |                       ![](https://i.imgur.com/JcfimjC.png)                     |  ![](https://i.imgur.com/v9VEBbf.png)  |\n| [Full Environment Control\u003csup\u003e[6]\u003c/sup\u003e](#envControl)                     |                       ![](https://i.imgur.com/JcfimjC.png)                     |  ![](https://i.imgur.com/v9VEBbf.png)  |\n| Just the default NativeScript CLI commands                 |                       ![](https://i.imgur.com/JcfimjC.png)                     |  ![](https://i.imgur.com/v9VEBbf.png)  |\n| Free                                                       |\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![](https://i.imgur.com/88WLiNS.png)[\u003csup\u003e[7]\u003c/sup\u003e](#cloudPrice)|\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;![](https://i.imgur.com/88WLiNS.png)[\u003csup\u003e[8]\u003c/sup\u003e](#pluginPrice)|\n\n\u003e *The comparison is based on the CircleCI remote of the NativeScript Remote Builds Plugin*\n\n\u003cdl\u003e\n  \u003cdt\u003e\u003cspan id=\"tooling\"\u003enative tooling\u003csup\u003e[1]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eAny native environment requirements like Java, Android SDK, Android Studio, macOS, Xcode, Cocoapods, Docker and so on.\u003c/dd\u003e\n\n  \u003cdt\u003e\u003cspan id=\"cloudDebug\"\u003ecloud extension debug support\u003csup\u003e[2]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eIt is available only through NativeScript Sidekick.\u003c/dd\u003e\n\n  \u003cdt\u003e\u003cspan id=\"signing\"\u003eiOS signing management\u003csup\u003e[3]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eIf the end-user is responsible for passing the `--provision` flag and picking the proper certificate based on the current build configuration. In the Remote Builds plugin, this is handled out of the box by the \u003ca href=\"https://docs.fastlane.tools/actions/match/\"\u003eFastlane Match service\u003c/a\u003e.\u003c/dd\u003e\n\n  \u003cdt\u003e\u003cspan id=\"ci\"\u003efull CI support\u003csup\u003e[4]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eIf the user can build and run tests on pull requests or commits. In other words, if it is supported to build multiple versions of the same app in parallel.\u003c/dd\u003e\n\n  \u003cdt\u003e\u003cspan id=\"envInfo\"\u003efull environment information\u003csup\u003e[5]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eIf the full environment information is available to the users (e.g. the versions of the OS and the \u003ca href=\"#tooling\"\u003enative tooling\u003csup\u003e[1]\u003c/sup\u003e\u003c/a\u003e.\u003c/dd\u003e\n\n  \u003cdt\u003e\u003cspan id=\"envControl\"\u003efull environment control\u003csup\u003e[6]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eIf the environment setup can be controlled by the user (e.g. change the versions of the os and the \u003ca href=\"#tooling\"\u003enative tooling\u003csup\u003e[1]\u003c/sup\u003e\u003c/a\u003e.\u003c/dd\u003e\n\n  \u003cdt\u003e\u003cspan id=\"cloudPrice\"\u003ecloud extension price\u003csup\u003e[7]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eThe NativeScript Cloud extensions is providing a limited number of free builds.\u003c/dd\u003e\n\n  \u003cdt\u003e\u003cspan id=\"pluginPrice\"\u003eremote builds plugin price\u003csup\u003e[8]\u003c/sup\u003e\u003c/span\u003e\u003c/dt\u003e\n  \u003cdd\u003eThe Circle CI provider of the NativeScript Remote Builds plugin is just depending on the \u003ca href=\"https://circleci.com/pricing/\"\u003eCircle CI pricing\u003c/a\u003e. It provides a limited number of free Android Builds for everyone and a limited number of \u003ca href=\"https://circleci.com/open-source/\"\u003efree iOS builds for open-source projects\u003c/a\u003e.\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n## Installation\n\nIt's just a regular NativeScript plugin and could be installed from npm:\n1) `cd {{yourNativeScriptAppRoot}}`\n2) `npm i nativescript-remote-builds`\n\nIn addition, as the plugin is written in JavaScript, it allows a direct GitHub installation:\n1) `cd {{yourNativeScriptAppRoot}}`\n2) `npm i https://github.com/NativeScript/nativescript-remote-builds/tarball/master`\n\n\u003e IMPORTANT: The plugin depends on NativeScript CLI hooks even before the CLI installs the node packages. If you delete your `node_modules` folder, ensure that `npm i` is called before the `tns` commands, otherwise you could get unexpected exceptions. \n\n## Setup\n\nThe plugin supports two configuration files expected in your **NativeScript app root directory**:\n\n* `.nsremote.config.json` - the main plugin config where you have to select a `remote`, follow the [remote setup section](#remote-setup) for further details.\n* `.nsremote.env.json` - an **optional file** allowing you to override the local and remote **environment variables**, most of them contain **sensitive** information and it's highly recommended to **ignore it from your source control**. \n\n\u003e NOTE: Both of the files are used only locally and replaced with an empty file when the plugin sends your app to the remote.\n\n## Remote Setup\n\n* [Circle CI Setup](docs/CIRCLECI.md)\n\n## Usage\n\nJust use the NativeScript CLI commands as usual. The plugin hooks to the NativeScript CLI build process and replaces it with remote builds. In addition, the `tns publish android` command is now working and publishing the app from the remote.\n\n## Local Builds\n\nYou can always use your local machine instead of the remote builds by providing the `--env.local` argument to your CLI commands. For example:\n\n`$ tns run android --env.local`","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnativescript%2Fnativescript-remote-builds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnativescript%2Fnativescript-remote-builds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnativescript%2Fnativescript-remote-builds/lists"}