mirror of
https://github.com/webfactory/ssh-agent.git
synced 2024-11-21 16:50:50 +00:00
Support container-based workflows and Windows (#17)
This commit is contained in:
parent
79096d29b0
commit
edc2fe4f2e
3 changed files with 47 additions and 9 deletions
16
.github/workflows/demo.yml
vendored
16
.github/workflows/demo.yml
vendored
|
@ -4,7 +4,7 @@ jobs:
|
||||||
single_key_demo:
|
single_key_demo:
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macOS-latest]
|
os: [ubuntu-latest, macOS-latest, windows-latest]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
|
@ -26,3 +26,17 @@ jobs:
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
ssh-private-key: ${{ secrets.DEMO_KEY }}
|
ssh-private-key: ${{ secrets.DEMO_KEY }}
|
||||||
|
|
||||||
|
docker_demo:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: ubuntu:latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- run: apt update && apt install -y openssh-client
|
||||||
|
- name: Setup key
|
||||||
|
uses: ./
|
||||||
|
with:
|
||||||
|
ssh-private-key: |
|
||||||
|
${{ secrets.DEMO_KEY }}
|
||||||
|
${{ secrets.DEMO_KEY_2 }}
|
||||||
|
|
20
dist/index.js
vendored
20
dist/index.js
vendored
|
@ -118,12 +118,9 @@ exports.issueCommand = issueCommand;
|
||||||
const core = __webpack_require__(470);
|
const core = __webpack_require__(470);
|
||||||
const child_process = __webpack_require__(129);
|
const child_process = __webpack_require__(129);
|
||||||
const fs = __webpack_require__(747);
|
const fs = __webpack_require__(747);
|
||||||
|
const os = __webpack_require__(87);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
const home = process.env['HOME'];
|
|
||||||
const homeSsh = home + '/.ssh';
|
|
||||||
|
|
||||||
const privateKey = core.getInput('ssh-private-key');
|
const privateKey = core.getInput('ssh-private-key');
|
||||||
|
|
||||||
if (!privateKey) {
|
if (!privateKey) {
|
||||||
|
@ -132,6 +129,21 @@ try {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var home;
|
||||||
|
|
||||||
|
if (process.env['OS'] == 'Windows_NT') {
|
||||||
|
console.log('Preparing ssh-agent service on Windows');
|
||||||
|
child_process.execSync('sc config ssh-agent start=demand', { stdio: 'inherit' });
|
||||||
|
|
||||||
|
home = os.homedir();
|
||||||
|
} else {
|
||||||
|
// Use getent() system call, since this is what ssh does; makes a difference in Docker-based
|
||||||
|
// Action runs, where $HOME is different from the pwent
|
||||||
|
var { homedir: home } = os.userInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
const homeSsh = home + '/.ssh';
|
||||||
|
|
||||||
console.log(`Adding GitHub.com keys to ${homeSsh}/known_hosts`);
|
console.log(`Adding GitHub.com keys to ${homeSsh}/known_hosts`);
|
||||||
fs.mkdirSync(homeSsh, { recursive: true });
|
fs.mkdirSync(homeSsh, { recursive: true });
|
||||||
fs.appendFileSync(`${homeSsh}/known_hosts`, '\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n');
|
fs.appendFileSync(`${homeSsh}/known_hosts`, '\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n');
|
||||||
|
|
20
index.js
20
index.js
|
@ -1,12 +1,9 @@
|
||||||
const core = require('@actions/core');
|
const core = require('@actions/core');
|
||||||
const child_process = require('child_process');
|
const child_process = require('child_process');
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
|
const os = require('os');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
const home = process.env['HOME'];
|
|
||||||
const homeSsh = home + '/.ssh';
|
|
||||||
|
|
||||||
const privateKey = core.getInput('ssh-private-key');
|
const privateKey = core.getInput('ssh-private-key');
|
||||||
|
|
||||||
if (!privateKey) {
|
if (!privateKey) {
|
||||||
|
@ -15,6 +12,21 @@ try {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var home;
|
||||||
|
|
||||||
|
if (process.env['OS'] == 'Windows_NT') {
|
||||||
|
console.log('Preparing ssh-agent service on Windows');
|
||||||
|
child_process.execSync('sc config ssh-agent start=demand', { stdio: 'inherit' });
|
||||||
|
|
||||||
|
home = os.homedir();
|
||||||
|
} else {
|
||||||
|
// Use getent() system call, since this is what ssh does; makes a difference in Docker-based
|
||||||
|
// Action runs, where $HOME is different from the pwent
|
||||||
|
var { homedir: home } = os.userInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
const homeSsh = home + '/.ssh';
|
||||||
|
|
||||||
console.log(`Adding GitHub.com keys to ${homeSsh}/known_hosts`);
|
console.log(`Adding GitHub.com keys to ${homeSsh}/known_hosts`);
|
||||||
fs.mkdirSync(homeSsh, { recursive: true });
|
fs.mkdirSync(homeSsh, { recursive: true });
|
||||||
fs.appendFileSync(`${homeSsh}/known_hosts`, '\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n');
|
fs.appendFileSync(`${homeSsh}/known_hosts`, '\ngithub.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==\n');
|
||||||
|
|
Loading…
Reference in a new issue