diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cace0c9..e7e594e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,13 +14,13 @@ jobs: strategy: matrix: os: [ubuntu-latest] - node-version: [20.x] + node-version: [16.x] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 - name: Setup Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} - name: Install dependencies diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 6c93953..781156d 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -31,11 +31,11 @@ jobs: language: [ 'javascript' ] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} @@ -44,4 +44,4 @@ jobs: npm run build --if-present - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v2 diff --git a/.github/workflows/e2e-manual.yml b/.github/workflows/e2e-manual.yml index 11fb9f6..bd4762f 100644 --- a/.github/workflows/e2e-manual.yml +++ b/.github/workflows/e2e-manual.yml @@ -27,7 +27,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 # ---------------------------------------------------------------- # START E2E Test Specific - steps diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 09bf162..c0c2aa8 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 # : --------------------------------------------------------------- # : START E2E Test Specific - steps @@ -111,7 +111,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 # : --------------------------------------------------------------- # : START E2E Test Specific - steps @@ -169,7 +169,7 @@ jobs: # ---------------------------------------------------------------- - name: e2e Test ssh-deploy action - Target 1 - uses: easingthemes/ssh-deploy@main + uses: easingthemes/ssh-deploy@v3 env: # Shared ENV Vars created in previous steps REMOTE_USER: ${{ env.TEST_USER }} diff --git a/.github/workflows/manual-release.yml b/.github/workflows/manual-release.yml index 6545a29..2215220 100644 --- a/.github/workflows/manual-release.yml +++ b/.github/workflows/manual-release.yml @@ -49,9 +49,9 @@ jobs: steps: - name: Checkout repo - uses: actions/checkout@v4 + uses: actions/checkout@v3 - name: Setup Node.js ${{ matrix.NODE_VERSION }} - uses: actions/setup-node@v4 + uses: actions/setup-node@v3 with: node-version: ${{ matrix.NODE_VERSION }} - name: Commit trigger @@ -64,7 +64,7 @@ jobs: - name: Run Tests run: npm test --if-present - name: Create a release - ${{ github.event.inputs.version }} - uses: cycjimmy/semantic-release-action@v4 + uses: cycjimmy/semantic-release-action@v3 with: dry_run: ${{ github.event.inputs.dryRun == 'true' }} extra_plugins: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0999d40..b658860 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,13 +12,13 @@ jobs: strategy: matrix: os: [ ubuntu-latest ] - node-version: [ 20.x ] + node-version: [ 16.x ] steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v3 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v3 with: node-version: ${{ matrix['node-version'] }} - name: Install dependencies @@ -28,7 +28,7 @@ jobs: - name: Run Tests run: npm test --if-present - name: Release - uses: cycjimmy/semantic-release-action@v4 + uses: cycjimmy/semantic-release-action@v3 with: dry_run: false extra_plugins: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 43ecafd..0a768d3 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -17,10 +17,10 @@ jobs: issues: write steps: - - uses: actions/stale@v9 + - uses: actions/stale@v7 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' - days-before-stale: 90 - days-before-close: 15 + days-before-stale: 30 + days-before-close: 5 stale-issue-label: 'stale' diff --git a/README.md b/README.md index a52946a..a56b094 100644 --- a/README.md +++ b/README.md @@ -67,27 +67,19 @@ Execution is preformed by storing commands in `.sh` file and executing it via `. If you have issues with `ssh` connection, use this var, eg `SCRIPT_BEFORE: ls`. This will force `known_hosts` update, adding your host via `ssh-keyscan`. -##### 10. `SCRIPT_BEFORE_REQUIRED` (optional, default false) - -If set to `true`, Job will fail if SCRIPT_BEFORE fails. - -##### 11. `SCRIPT_AFTER` (optional, default '') +##### 10. `SCRIPT_AFTER` (optional, default '') Script to run on host machine after rsync. Rsync output is stored in `$RSYNC_STDOUT` env variable. -##### 12. `SCRIPT_AFTER_REQUIRED` (optional, default false) - -If set to `true`, Job will fail if SCRIPT_AFTER fails. - -##### 13. `SSH_CMD_ARGS` (optional, default '-o StrictHostKeyChecking=no') +##### 11. `SSH_CMD_ARGS` (optional, default '-o StrictHostKeyChecking=no') A list of ssh arguments, they must be prefixed with -o and separated by a comma, for example: -o SomeArgument=no, -o SomeOtherArgument=5 # Usage -Use the latest version from Marketplace,eg: ssh-deploy@v5.1.0 +Use the latest version from Marketplace,eg: ssh-deploy@v2 or use the latest version from a branch, eg: ssh-deploy@main ``` @@ -154,9 +146,6 @@ These issues are not related to the action itself. - Check manually your ssh connection from your client before opening a bug report. - Check `rsync` params for your use-case. Default params are not necessarily going to be enough for everyone, it highly depends on your setup. - Check manually your rsync command from your client before opening a bug report. -- `Deployment Failed, Permission denied (publickey,password)`: This issue occures in some cases, it is related to OS and ssh. This action can only provide a workaround: - - Use `SCRIPT_BEFORE` param, eg `SCRIPT_BEFORE: ls`. This will force `known_hosts` update, adding your host via `ssh-keyscan`. - - Or manually add public key to authorized_keys and add a new line to a private key. I've added e2e test for this action. Real example is executed on every PR merge to `main`. diff --git a/action.yml b/action.yml index 1c30b61..e057648 100644 --- a/action.yml +++ b/action.yml @@ -39,23 +39,15 @@ inputs: description: "Script to run on host machine before rsync" required: false default: "" - SCRIPT_BEFORE_REQUIRED: - description: "If not an empty string, the action will fail if the before script fails. Note: The string 'false' will be treated as true" - required: false - default: "" SCRIPT_AFTER: description: "Script to run on host machine after rsync" required: false default: "" - SCRIPT_AFTER_REQUIRED: - description: "If not an empty string, the action will fail if the after script fails. Note: The string 'false' will be treated as true" - required: false - default: "" outputs: status: description: "Status" runs: - using: "node20" + using: "node16" main: "dist/index.js" branding: color: "green" diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 873cbcf..3b23942 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,51 +1,3 @@ -## [5.1.1](https://github.com/easingthemes/ssh-deploy/compare/v5.1.0...v5.1.1) (2024-07-24) - - -### Bug Fixes - -* Update README.md ([f007431](https://github.com/easingthemes/ssh-deploy/commit/f007431332cb2dae49153363ad22fb9f90f4aa75)) - -# [5.1.0](https://github.com/easingthemes/ssh-deploy/compare/v5.0.3...v5.1.0) (2024-07-24) - - -### Features - -* Add deleteFile function to helpers module ([1befdb1](https://github.com/easingthemes/ssh-deploy/commit/1befdb1c6bf3282aa34e6caa431cb2da23d2b17d)) -* apply deleteFile function to remoteCmd ([b82eced](https://github.com/easingthemes/ssh-deploy/commit/b82eced4571cb3f63369d51760a81820ffb1bc7f)) - -## [5.0.3](https://github.com/easingthemes/ssh-deploy/compare/v5.0.2...v5.0.3) (2024-02-27) - - -### Bug Fixes - -* trigger automated release ([4d8bbf0](https://github.com/easingthemes/ssh-deploy/commit/4d8bbf0debaade9fb03b8dc3be3c020955557b12)) - -## [5.0.2](https://github.com/easingthemes/ssh-deploy/compare/v5.0.1...v5.0.2) (2024-02-18) - - -### Bug Fixes - -* added the missing declarations [#177](https://github.com/easingthemes/ssh-deploy/issues/177) ([bb271fe](https://github.com/easingthemes/ssh-deploy/commit/bb271fe4c69eeeacb986a38cdb3347104143c61f)) -* Fix default values used incorrectly. ([a1b383f](https://github.com/easingthemes/ssh-deploy/commit/a1b383f560a7f52a65da3670e61efe6e02f8639a)) - -## [5.0.1](https://github.com/easingthemes/ssh-deploy/compare/v5.0.0...v5.0.1) (2024-01-31) - - -### Bug Fixes - -* Add info for Permission denied issue. ([845b578](https://github.com/easingthemes/ssh-deploy/commit/845b578606c0c5a956c70caf61e00a7d2b13ee37)) - -# [5.0.0](https://github.com/easingthemes/ssh-deploy/compare/v4.1.10...v5.0.0) (2023-12-12) - - -* Merge pull request #173 from jeromelachaud/main ([ac1908e](https://github.com/easingthemes/ssh-deploy/commit/ac1908e5d2dc749496fdbe8a918aa073e3357d85)), closes [#173](https://github.com/easingthemes/ssh-deploy/issues/173) - - -### BREAKING CHANGES - -* update to use nodeJS v20 -* update to use nodeJS v20 - ## [4.1.10](https://github.com/easingthemes/ssh-deploy/compare/v4.1.9...v4.1.10) (2023-09-30) diff --git a/package-lock.json b/package-lock.json index 7cc9222..b868de5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@draganfilipovic/ssh-deploy", - "version": "4.1.10", + "version": "4.1.8", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@draganfilipovic/ssh-deploy", - "version": "4.1.10", + "version": "4.1.8", "license": "MIT", "dependencies": { "rsyncwrapper": "^3.0.1" diff --git a/package.json b/package.json index 22b5373..7a2a705 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@draganfilipovic/ssh-deploy", - "version": "5.1.1", + "version": "4.1.10", "description": "Fast NodeJS action to deploy specific directory from `GITHUB_WORKSPACE` to a server via rsync over ssh.", "main": "dist/index.js", "files": [ diff --git a/src/helpers.js b/src/helpers.js index 78379e1..1c705df 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -1,4 +1,4 @@ -const { existsSync, mkdirSync, writeFileSync, unlink } = require('fs'); +const { existsSync, mkdirSync, writeFileSync } = require('fs'); const { join } = require('path'); const validateDir = (dir) => { @@ -45,29 +45,6 @@ const writeToFile = ({ dir, filename, content, isRequired, mode = '0644' }) => { } }; -const deleteFile = ({ dir, filename, isRequired }) => { - validateDir(dir); - const filePath = join(dir, filename); - - if (existsSync(filePath)) { - const message = `⚠️ [FILE] ${filePath} Required file exist.`; - handleError(message, isRequired); - return; - } - - try { - console.log(`[FILE] Deleting ${filePath} file ...`); - unlink(filePath, (error) => { - if (error) { - throw new Error(error); - } - }); - } catch (error) { - const message = `⚠️[FILE] Deleting file error. filePath: ${filePath}, message: ${error.message}`; - handleError(message, isRequired); - } -}; - const validateRequiredInputs = (inputs) => { const inputKeys = Object.keys(inputs); const validInputs = inputKeys.filter((inputKey) => { @@ -89,7 +66,6 @@ const snakeToCamel = (str) => str.replace(/[^a-zA-Z0-9]+(.)/g, (m, chr) => chr.t module.exports = { writeToFile, - deleteFile, validateRequiredInputs, snakeToCamel }; diff --git a/src/remoteCmd.js b/src/remoteCmd.js index 70f7656..3881b20 100644 --- a/src/remoteCmd.js +++ b/src/remoteCmd.js @@ -1,7 +1,7 @@ const { exec } = require('child_process'); const crypto = require('crypto'); const { sshServer, githubWorkspace, remotePort } = require('./inputs'); -const { writeToFile, deleteFile } = require('./helpers'); +const { writeToFile } = require('./helpers'); const handleError = (message, isRequired, callback) => { if (isRequired) { @@ -30,8 +30,6 @@ const remoteCmd = async (content, privateKeyPath, isRequired, label) => new Prom } else { const limited = data.substring(0, dataLimit); console.log('✅ [CMD] Remote script executed. \n', limited, stderr); - deleteFile({ dir: githubWorkspace, filename }); - console.log('✅ [FILE] Script file deleted.'); resolve(limited); } }