From ae5262e007bbd99f4820f24cf0bcb57b0bc53405 Mon Sep 17 00:00:00 2001 From: SamKirkland Date: Sun, 17 May 2020 16:57:25 -0500 Subject: [PATCH] using act for local debugging Added act library for local debugging Attempting to use exec argument escaping --- README.md | 16 +++++++++++----- debug/local-debug-deployment.yaml | 18 ++++++++++++++++++ dist/index.js | 12 ++++++++++-- package.json | 7 +++---- src/main.ts | 17 ++++++++++++++--- src/types.ts | 2 +- 6 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 debug/local-debug-deployment.yaml diff --git a/README.md b/README.md index b753c19..b2cfe9c 100644 --- a/README.md +++ b/README.md @@ -420,10 +420,13 @@ jobs: ## Debugging locally ##### Instructions for debugging Windows - [Install docker](https://docs.docker.com/get-docker/) -- Open powershell +- Open powershell **as Administrator** +- Install [act-cli](https://github.com/nektos/act#installation) by running `choco install act-cli` - Navigate to the repo folder -- Run `docker build --tag action .` -- Run `docker run action` +- Run `npm install` - this will install all dependencies to build this project +- Run `npm build` - this will build the action javascript and watch/rebuild when files change +- Run `npm run build-docker` - this will build the docker container (only needs to be done once) +- Run `npm run run-docker` - this will spin up a local copy of the action defined in `/debug/local-debug-deployment.yaml`. Update package.json to set any secret values #### Instructions for debugging on Linux - [Install docker](https://docs.docker.com/get-docker/) @@ -432,8 +435,11 @@ On Linux you can install docker using your package manager, for example, on a De sudo apt install docker docker.io ``` - Open the terminal +- Install [act-cli](https://github.com/nektos/act#installation) - Navigate to the repo folder -- Run `docker build --tag action .` -- Run `docker run action` +- Run `npm install` - this will install all dependencies to build this project +- Run `npm build` - this will build the action javascript and watch/rebuild when files change +- Run `npm run build-docker` - this will build the docker container (only needs to be done once) +- Run `npm run run-docker` - this will spin up a local copy of the action defined in `/debug/local-debug-deployment.yaml`. Update package.json to set any secret values #### Pull Requests Welcome! diff --git a/debug/local-debug-deployment.yaml b/debug/local-debug-deployment.yaml new file mode 100644 index 0000000..3cc8326 --- /dev/null +++ b/debug/local-debug-deployment.yaml @@ -0,0 +1,18 @@ +on: push +name: Local Debug Deployment +jobs: + Local-Debug-Deployment: + name: Local-Debug-Deployment + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2.1.0 + with: + fetch-depth: 2 + + - name: FTP-Deploy-Action + uses: ./ + with: + ftp-server: ftp://ftp.samkirkland.com/ + ftp-username: ${{ secrets.username }} + ftp-password: ${{ secrets.password }} + git-ftp-args: --dry-run \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 5102726..2a48788 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1049,11 +1049,19 @@ function syncFiles(args) { return __awaiter(this, void 0, void 0, function* () { try { yield core.group("Uploading files", () => __awaiter(this, void 0, void 0, function* () { - return yield exec.exec(`git ftp push --force --auto-init --verbose --syncroot ${args.local_dir} --user ${args.ftp_username} --passwd ${args.ftp_password} ${args.gitFtpArgs} ${args.ftp_server}`); + return yield exec.exec("git ftp push", [ + "--force", + "--auto-init", + "--verbose", + `--syncroot=${args.local_dir}`, + `--user=${args.ftp_username}`, + `--passwd=${args.ftp_password}`, + args.gitFtpArgs, + args.ftp_server + ]); })); } catch (error) { - console.error("⚠️ Failed to upload files"); core.setFailed(error.message); } }); diff --git a/package.json b/package.json index 063fb99..fd1da19 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,9 @@ "node": ">=12.0.0" }, "scripts": { - "build:dev": "tsc", - "build:production": "ncc build src/main.ts -o dist", - "build:docker": "docker build --tag action .", - "run:docker": "docker run action --build-arg FTP_SERVER=example.com FTP_USERNAME=test@example.com FTP_PASSWORD=passwordExample" + "build": "ncc build src/main.ts -o dist --watch", + "build-docker": "docker build --tag action .", + "run-docker": "act --workflows ./debug/ --secret username=UserNameHere --secret password=PasswordHere" }, "repository": { "type": "git", diff --git a/src/main.ts b/src/main.ts index a7efb0a..3d6ecc9 100644 --- a/src/main.ts +++ b/src/main.ts @@ -70,11 +70,22 @@ function withDefault(value: string, defaultValue: string) { async function syncFiles(args: IActionArguments) { try { await core.group("Uploading files", async () => { - return await exec.exec(`git ftp push --force --auto-init --verbose --syncroot ${args.local_dir} --user ${args.ftp_username} --passwd ${args.ftp_password} ${args.gitFtpArgs} ${args.ftp_server}`); + return await exec.exec( + "git ftp push", + [ + "--force", + "--auto-init", + "--verbose", + `--syncroot=${args.local_dir}`, + `--user=${args.ftp_username}`, + `--passwd=${args.ftp_password}`, + args.gitFtpArgs!, + args.ftp_server! + ] + ); }); } catch (error) { - console.error("⚠️ Failed to upload files"); core.setFailed(error.message); } -} +} \ No newline at end of file diff --git a/src/types.ts b/src/types.ts index 9110ddc..1526791 100644 --- a/src/types.ts +++ b/src/types.ts @@ -25,7 +25,7 @@ export enum gitFTPExitCode { ErrorWhileDownloading = 5, UnknownProtocol = 6, RemoteLocked = 7, - NotAGitProject = 8, + GitRelatedError = 8, PreFTPPushHookFailed = 9, LocalFileOperationFailed = 10 }