Use different ssh-add command for Windows/!Windows
This commit is contained in:
parent
2bde568a83
commit
7f61bbc4ae
3 changed files with 55 additions and 12 deletions
49
.github/workflows/demo.yml
vendored
49
.github/workflows/demo.yml
vendored
|
@ -1,13 +1,53 @@
|
||||||
on: [push, pull_request]
|
on: [push, pull_request]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
single_key_demo:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Setup key
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
ssh-private-key: |
|
||||||
|
${{ secrets.DEMO_KEY }}
|
||||||
|
${{ secrets.DEMO_KEY_2 }}
|
||||||
|
|
||||||
|
multiple_keys_demo:
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macOS-latest]
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- name: Setup key
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
ssh-private-key: ${{ secrets.DEMO_KEY }}
|
||||||
|
|
||||||
|
docker_demo:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ubuntu:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- run: apt update && apt install -y openssh-client
|
||||||
|
- name: Setup key
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
ssh-private-key: |
|
||||||
|
${{ secrets.DEMO_KEY }}
|
||||||
|
${{ secrets.DEMO_KEY_2 }}
|
||||||
|
|
||||||
deployment_keys_demo:
|
deployment_keys_demo:
|
||||||
env:
|
env:
|
||||||
GIT_SSH_COMMAND: ssh -v
|
GIT_SSH_COMMAND: ssh -v
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os: [windows-latest]
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -17,13 +57,6 @@ jobs:
|
||||||
ssh-private-key: |
|
ssh-private-key: |
|
||||||
${{ secrets.MPDUDE_TEST_1_DEPLOY_KEY }}
|
${{ secrets.MPDUDE_TEST_1_DEPLOY_KEY }}
|
||||||
${{ secrets.MPDUDE_TEST_2_DEPLOY_KEY }}
|
${{ secrets.MPDUDE_TEST_2_DEPLOY_KEY }}
|
||||||
- name: Start SSH session
|
|
||||||
uses: luchihoratiu/debug-via-ssh@main
|
|
||||||
if: ${{ failure() }}
|
|
||||||
with:
|
|
||||||
NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
|
|
||||||
SSH_PASS: ${{ secrets.SSH_PASS }}
|
|
||||||
|
|
||||||
- run: |
|
- run: |
|
||||||
cat ~/.ssh/config
|
cat ~/.ssh/config
|
||||||
ls -alh ~/.ssh
|
ls -alh ~/.ssh
|
||||||
|
|
9
dist/index.js
vendored
9
dist/index.js
vendored
|
@ -120,6 +120,7 @@ const child_process = __webpack_require__(129);
|
||||||
const fs = __webpack_require__(747);
|
const fs = __webpack_require__(747);
|
||||||
const os = __webpack_require__(87);
|
const os = __webpack_require__(87);
|
||||||
const token = __webpack_require__(417).randomBytes(64).toString('hex');
|
const token = __webpack_require__(417).randomBytes(64).toString('hex');
|
||||||
|
const isWindows = (process.env['OS'] == 'Windows_NT');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const privateKey = core.getInput('ssh-private-key');
|
const privateKey = core.getInput('ssh-private-key');
|
||||||
|
@ -132,7 +133,7 @@ try {
|
||||||
|
|
||||||
var home;
|
var home;
|
||||||
|
|
||||||
if (process.env['OS'] == 'Windows_NT') {
|
if (isWindows) {
|
||||||
console.log('Preparing ssh-agent service on Windows');
|
console.log('Preparing ssh-agent service on Windows');
|
||||||
child_process.execSync('sc config ssh-agent start=demand', { stdio: 'inherit' });
|
child_process.execSync('sc config ssh-agent start=demand', { stdio: 'inherit' });
|
||||||
|
|
||||||
|
@ -191,7 +192,11 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load key into agent
|
// Load key into agent
|
||||||
child_process.execFileSync('ssh-add', [keyFile], { env: { ...process.env, ...{ 'DISPLAY': 'fake', 'SSH_PASS': token, 'SSH_ASKPASS': 'D:\\a\\ssh-agent\\ssh-agent\\askpass.exe' } } });
|
if (isWindows) {
|
||||||
|
child_process.execFileSync('ssh-add', [keyFile], { env: { ...process.env, ...{ 'DISPLAY': 'fake', 'SSH_PASS': token, 'SSH_ASKPASS': 'D:\\a\\ssh-agent\\ssh-agent\\askpass.exe' } } });
|
||||||
|
} else {
|
||||||
|
child_process.execFileSync('ssh-add', [keyFile], { input: token });
|
||||||
|
}
|
||||||
|
|
||||||
output.toString().split(/\r?\n/).forEach(function(key) {
|
output.toString().split(/\r?\n/).forEach(function(key) {
|
||||||
let parts = key.match(/^Key has comment '.*\bgithub\.com[:/]([_.a-z0-9-]+\/[_.a-z0-9-]+?)(?=\.git|\s|\')/);
|
let parts = key.match(/^Key has comment '.*\bgithub\.com[:/]([_.a-z0-9-]+\/[_.a-z0-9-]+?)(?=\.git|\s|\')/);
|
||||||
|
|
9
index.js
9
index.js
|
@ -3,6 +3,7 @@ const child_process = require('child_process');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const os = require('os');
|
const os = require('os');
|
||||||
const token = require('crypto').randomBytes(64).toString('hex');
|
const token = require('crypto').randomBytes(64).toString('hex');
|
||||||
|
const isWindows = (process.env['OS'] == 'Windows_NT');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const privateKey = core.getInput('ssh-private-key');
|
const privateKey = core.getInput('ssh-private-key');
|
||||||
|
@ -15,7 +16,7 @@ try {
|
||||||
|
|
||||||
var home;
|
var home;
|
||||||
|
|
||||||
if (process.env['OS'] == 'Windows_NT') {
|
if (isWindows) {
|
||||||
console.log('Preparing ssh-agent service on Windows');
|
console.log('Preparing ssh-agent service on Windows');
|
||||||
child_process.execSync('sc config ssh-agent start=demand', { stdio: 'inherit' });
|
child_process.execSync('sc config ssh-agent start=demand', { stdio: 'inherit' });
|
||||||
|
|
||||||
|
@ -74,7 +75,11 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load key into agent
|
// Load key into agent
|
||||||
child_process.execFileSync('ssh-add', [keyFile], { env: { ...process.env, ...{ 'DISPLAY': 'fake', 'SSH_PASS': token, 'SSH_ASKPASS': 'D:\\a\\ssh-agent\\ssh-agent\\askpass.exe' } } });
|
if (isWindows) {
|
||||||
|
child_process.execFileSync('ssh-add', [keyFile], { env: { ...process.env, ...{ 'DISPLAY': 'fake', 'SSH_PASS': token, 'SSH_ASKPASS': 'D:\\a\\ssh-agent\\ssh-agent\\askpass.exe' } } });
|
||||||
|
} else {
|
||||||
|
child_process.execFileSync('ssh-add', [keyFile], { input: token });
|
||||||
|
}
|
||||||
|
|
||||||
output.toString().split(/\r?\n/).forEach(function(key) {
|
output.toString().split(/\r?\n/).forEach(function(key) {
|
||||||
let parts = key.match(/^Key has comment '.*\bgithub\.com[:/]([_.a-z0-9-]+\/[_.a-z0-9-]+?)(?=\.git|\s|\')/);
|
let parts = key.match(/^Key has comment '.*\bgithub\.com[:/]([_.a-z0-9-]+\/[_.a-z0-9-]+?)(?=\.git|\s|\')/);
|
||||||
|
|
Loading…
Reference in a new issue