From 88fb14d1137c0ddd80e8812d059d9ee048444ece Mon Sep 17 00:00:00 2001 From: shimataro Date: Thu, 18 Mar 2021 20:57:28 +0900 Subject: [PATCH 1/4] add "if_key_exists" (#179) * add "if_key_exists" * add test * fix flag * fix SSH connection commands * add test for if_key_exists=ignore * add test for if_key_exists=fail * add tests to Windows / macOS * update CHANGELOG * update badges * update README * fix README * update README * add tests for Docker containers --- .../workflows/verify-on-container-centos.yml | 199 ++++++++++++++ .../workflows/verify-on-container-ubuntu.yml | 211 ++++++++++++++ .github/workflows/verify-on-macos-1015.yml | 74 ----- .github/workflows/verify-on-macos.yml | 239 ++++++++++++++++ .github/workflows/verify-on-ubuntu-1604.yml | 74 ----- .github/workflows/verify-on-ubuntu-1804.yml | 74 ----- .github/workflows/verify-on-ubuntu-2004.yml | 74 ----- .github/workflows/verify-on-ubuntu.yml | 259 ++++++++++++++++++ .../verify-on-windows-server-2019.yml | 74 ----- .github/workflows/verify-on-windows.yml | 239 ++++++++++++++++ CHANGELOG.md | 4 + README.md | 33 ++- action.yml | 4 + lib/index.js | 75 +++-- src/main.ts | 86 ++++-- 15 files changed, 1291 insertions(+), 428 deletions(-) delete mode 100644 .github/workflows/verify-on-macos-1015.yml create mode 100644 .github/workflows/verify-on-macos.yml delete mode 100644 .github/workflows/verify-on-ubuntu-1604.yml delete mode 100644 .github/workflows/verify-on-ubuntu-1804.yml delete mode 100644 .github/workflows/verify-on-ubuntu-2004.yml create mode 100644 .github/workflows/verify-on-ubuntu.yml delete mode 100644 .github/workflows/verify-on-windows-server-2019.yml create mode 100644 .github/workflows/verify-on-windows.yml diff --git a/.github/workflows/verify-on-container-centos.yml b/.github/workflows/verify-on-container-centos.yml index 6163c8a0..d008cb85 100644 --- a/.github/workflows/verify-on-container-centos.yml +++ b/.github/workflows/verify-on-container-centos.yml @@ -93,3 +93,202 @@ jobs: run: ls -l /root/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_replace-key_exists: + name: if_key_exists=replace / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - centos:7 + - centos:8 + steps: + - name: Install packages + run: | + yum install -y git openssh-clients + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: "dummy" # replaced + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_replace-key_doesnt_exist: + name: if_key_exists=replace / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - centos:7 + - centos:8 + steps: + - name: Install packages + run: | + yum install -y git openssh-clients + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_ignore-key_exists: + name: if_key_exists=ignore / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - centos:7 + - centos:8 + steps: + - name: Install packages + run: | + yum install -y git openssh-clients + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_ignore-key_doesnt_exist: + name: if_key_exists=ignore / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - centos:7 + - centos:8 + steps: + - name: Install packages + run: | + yum install -y git openssh-clients + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_fail-key_exists: + name: if_key_exists=fail / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - centos:7 + - centos:8 + steps: + - name: Install packages + run: | + yum install -y git openssh-clients + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + continue-on-error: true + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_fail-key_doesnt_exist: + name: if_key_exists=fail / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - centos:7 + - centos:8 + steps: + - name: Install packages + run: | + yum install -y git openssh-clients + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-container-ubuntu.yml b/.github/workflows/verify-on-container-ubuntu.yml index d290bbaa..e6f13fb2 100644 --- a/.github/workflows/verify-on-container-ubuntu.yml +++ b/.github/workflows/verify-on-container-ubuntu.yml @@ -99,3 +99,214 @@ jobs: run: ls -l /root/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_replace-key_exists: + name: if_key_exists=replace / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - ubuntu:16.04 + - ubuntu:18.04 + - ubuntu:20.04 + steps: + - name: Install packages + run: | + apt update + apt -y install openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: "dummy" # replaced + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_replace-key_doesnt_exist: + name: if_key_exists=replace / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - ubuntu:16.04 + - ubuntu:18.04 + - ubuntu:20.04 + steps: + - name: Install packages + run: | + apt update + apt -y install openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_ignore-key_exists: + name: if_key_exists=ignore / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - ubuntu:16.04 + - ubuntu:18.04 + - ubuntu:20.04 + steps: + - name: Install packages + run: | + apt update + apt -y install openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_ignore-key_doesnt_exist: + name: if_key_exists=ignore / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - ubuntu:16.04 + - ubuntu:18.04 + - ubuntu:20.04 + steps: + - name: Install packages + run: | + apt update + apt -y install openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_fail-key_exists: + name: if_key_exists=fail / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - ubuntu:16.04 + - ubuntu:18.04 + - ubuntu:20.04 + steps: + - name: Install packages + run: | + apt update + apt -y install openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + continue-on-error: true + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_fail-key_doesnt_exist: + name: if_key_exists=fail / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - ubuntu:16.04 + - ubuntu:18.04 + - ubuntu:20.04 + steps: + - name: Install packages + run: | + apt update + apt -y install openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-macos-1015.yml b/.github/workflows/verify-on-macos-1015.yml deleted file mode 100644 index d84eb554..00000000 --- a/.github/workflows/verify-on-macos-1015.yml +++ /dev/null @@ -1,74 +0,0 @@ -# https://help.github.com/en/articles/workflow-syntax-for-github-actions - -name: macOS Catalina - -on: -- push - -jobs: - ssh-pem: - name: Connect to github.com (PEM format) - runs-on: macos-10.15 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-pkcs8: - name: Connect to github.com (PKCS8 format) - runs-on: macos-10.15 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PKCS8 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-rfc4716: - name: Connect to github.com (RFC4716 format) - runs-on: macos-10.15 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_RFC4716 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-with-name: - name: Connect to github.com with name and config - runs-on: macos-10.15 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - name: ssh_key_name # optional - config: | # optional - Host github - Hostname github.com - User git - IdentityFile ~/.ssh/ssh_key_name - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone github:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-macos.yml b/.github/workflows/verify-on-macos.yml new file mode 100644 index 00000000..87b836f3 --- /dev/null +++ b/.github/workflows/verify-on-macos.yml @@ -0,0 +1,239 @@ +# https://help.github.com/en/articles/workflow-syntax-for-github-actions + +name: macOS + +on: +- push + +jobs: + ssh-pem: + name: Connect to github.com (PEM format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-pkcs8: + name: Connect to github.com (PKCS8 format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PKCS8 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-rfc4716: + name: Connect to github.com (RFC4716 format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_RFC4716 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-with-name: + name: Connect to github.com with name and config + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + name: ssh_key_name # optional + config: | # optional + Host github + Hostname github.com + User git + IdentityFile ~/.ssh/ssh_key_name + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone github:shimataro/ssh-key-action.git tmp + + key_if_exists_replace-key_exists: + name: if_key_exists=replace / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: "dummy" # replaced + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_replace-key_doesnt_exist: + name: if_key_exists=replace / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_ignore-key_exists: + name: if_key_exists=ignore / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_ignore-key_doesnt_exist: + name: if_key_exists=ignore / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_fail-key_exists: + name: if_key_exists=fail / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + continue-on-error: true + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_fail-key_doesnt_exist: + name: if_key_exists=fail / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - macos-10.15 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-ubuntu-1604.yml b/.github/workflows/verify-on-ubuntu-1604.yml deleted file mode 100644 index 00e39fc2..00000000 --- a/.github/workflows/verify-on-ubuntu-1604.yml +++ /dev/null @@ -1,74 +0,0 @@ -# https://help.github.com/en/articles/workflow-syntax-for-github-actions - -name: Ubuntu 16.04 - -on: -- push - -jobs: - ssh-pem: - name: Connect to github.com (PEM format) - runs-on: ubuntu-16.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-pkcs8: - name: Connect to github.com (PKCS8 format) - runs-on: ubuntu-16.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PKCS8 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-rfc4716: - name: Connect to github.com (RFC4716 format) - runs-on: ubuntu-16.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_RFC4716 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-with-name: - name: Connect to github.com with name and config - runs-on: ubuntu-16.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - name: ssh_key_name # optional - config: | # optional - Host github - Hostname github.com - User git - IdentityFile ~/.ssh/ssh_key_name - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone github:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-ubuntu-1804.yml b/.github/workflows/verify-on-ubuntu-1804.yml deleted file mode 100644 index 9aafc72d..00000000 --- a/.github/workflows/verify-on-ubuntu-1804.yml +++ /dev/null @@ -1,74 +0,0 @@ -# https://help.github.com/en/articles/workflow-syntax-for-github-actions - -name: Ubuntu 18.04 - -on: -- push - -jobs: - ssh-pem: - name: Connect to github.com (PEM format) - runs-on: ubuntu-18.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-pkcs8: - name: Connect to github.com (PKCS8 format) - runs-on: ubuntu-18.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PKCS8 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-rfc4716: - name: Connect to github.com (RFC4716 format) - runs-on: ubuntu-18.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_RFC4716 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-with-name: - name: Connect to github.com with name and config - runs-on: ubuntu-18.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - name: ssh_key_name # optional - config: | # optional - Host github - Hostname github.com - User git - IdentityFile ~/.ssh/ssh_key_name - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone github:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-ubuntu-2004.yml b/.github/workflows/verify-on-ubuntu-2004.yml deleted file mode 100644 index 2ea1aee1..00000000 --- a/.github/workflows/verify-on-ubuntu-2004.yml +++ /dev/null @@ -1,74 +0,0 @@ -# https://help.github.com/en/articles/workflow-syntax-for-github-actions - -name: Ubuntu 20.04 - -on: -- push - -jobs: - ssh-pem: - name: Connect to github.com (PEM format) - runs-on: ubuntu-20.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-pkcs8: - name: Connect to github.com (PKCS8 format) - runs-on: ubuntu-20.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PKCS8 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-rfc4716: - name: Connect to github.com (RFC4716 format) - runs-on: ubuntu-20.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_RFC4716 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-with-name: - name: Connect to github.com with name and config - runs-on: ubuntu-20.04 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - name: ssh_key_name # optional - config: | # optional - Host github - Hostname github.com - User git - IdentityFile ~/.ssh/ssh_key_name - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone github:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-ubuntu.yml b/.github/workflows/verify-on-ubuntu.yml new file mode 100644 index 00000000..7117eaf5 --- /dev/null +++ b/.github/workflows/verify-on-ubuntu.yml @@ -0,0 +1,259 @@ +# https://help.github.com/en/articles/workflow-syntax-for-github-actions + +name: Ubuntu + +on: +- push + +jobs: + ssh-pem: + name: Connect to github.com (PEM format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-pkcs8: + name: Connect to github.com (PKCS8 format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PKCS8 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-rfc4716: + name: Connect to github.com (RFC4716 format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_RFC4716 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-with-name: + name: Connect to github.com with name and config + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + name: ssh_key_name # optional + config: | # optional + Host github + Hostname github.com + User git + IdentityFile ~/.ssh/ssh_key_name + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone github:shimataro/ssh-key-action.git tmp + + key_if_exists_replace-key_exists: + name: if_key_exists=replace / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: "dummy" # replaced + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_replace-key_doesnt_exist: + name: if_key_exists=replace / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_ignore-key_exists: + name: if_key_exists=ignore / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_ignore-key_doesnt_exist: + name: if_key_exists=ignore / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_fail-key_exists: + name: if_key_exists=fail / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + continue-on-error: true + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_fail-key_doesnt_exist: + name: if_key_exists=fail / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-windows-server-2019.yml b/.github/workflows/verify-on-windows-server-2019.yml deleted file mode 100644 index 98ae64e3..00000000 --- a/.github/workflows/verify-on-windows-server-2019.yml +++ /dev/null @@ -1,74 +0,0 @@ -# https://help.github.com/en/articles/workflow-syntax-for-github-actions - -name: Windows Server 2019 - -on: -- push - -jobs: - ssh-pem: - name: Connect to github.com (PEM format) - runs-on: windows-2019 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-pkcs8: - name: Connect to github.com (PKCS8 format) - runs-on: windows-2019 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PKCS8 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-rfc4716: - name: Connect to github.com (RFC4716 format) - runs-on: windows-2019 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_RFC4716 }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - - name: print created files - run: ls ~/.ssh - - name: git clone through SSH - run: git clone git@github.com:shimataro/ssh-key-action.git tmp - ssh-with-name: - name: Connect to github.com with name and config - runs-on: windows-2019 - steps: - - name: Checkout source codes - uses: actions/checkout@v2 - - name: Install SSH key - uses: ./. - with: - key: ${{ secrets.SSH_KEY_PEM }} - known_hosts: ${{ secrets.KNOWN_HOSTS }} - name: ssh_key_name # optional - config: | # optional - Host github - Hostname github.com - User git - IdentityFile ~/.ssh/ssh_key_name - - name: print created files - run: ls -l ~/.ssh - - name: git clone through SSH - run: git clone github:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-windows.yml b/.github/workflows/verify-on-windows.yml new file mode 100644 index 00000000..9a155bb8 --- /dev/null +++ b/.github/workflows/verify-on-windows.yml @@ -0,0 +1,239 @@ +# https://help.github.com/en/articles/workflow-syntax-for-github-actions + +name: Windows + +on: +- push + +jobs: + ssh-pem: + name: Connect to github.com (PEM format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-pkcs8: + name: Connect to github.com (PKCS8 format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PKCS8 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-rfc4716: + name: Connect to github.com (RFC4716 format) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_RFC4716 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-with-name: + name: Connect to github.com with name and config + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + name: ssh_key_name # optional + config: | # optional + Host github + Hostname github.com + User git + IdentityFile ~/.ssh/ssh_key_name + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone github:shimataro/ssh-key-action.git tmp + + key_if_exists_replace-key_exists: + name: if_key_exists=replace / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: "dummy" # replaced + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_replace-key_doesnt_exist: + name: if_key_exists=replace / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_ignore-key_exists: + name: if_key_exists=ignore / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_ignore-key_doesnt_exist: + name: if_key_exists=ignore / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_fail-key_exists: + name: if_key_exists=fail / key exists + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + continue-on-error: true + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_fail-key_doesnt_exist: + name: if_key_exists=fail / key doesn't exist + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - windows-2019 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + - name: print created files + run: ls -l ~/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp diff --git a/CHANGELOG.md b/CHANGELOG.md index e9f29355..a0faf1e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +### Added + +* `if_key_exists` parameter + ## [2.2.0] - 2021-02-27 ### Added diff --git a/README.md b/README.md index 79868db8..7541c3ee 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,9 @@ # Install SSH Key [![Build][image-build]][link-build] -[![Windows Server 2019][image-verify-windows-2019]][link-verify-windows-2019] -[![macOS Catalina][image-verify-macos-1015]][link-verify-macos-1015] -[![Ubuntu 20.04][image-verify-ubuntu-2004]][link-verify-ubuntu-2004] -[![Ubuntu 18.04][image-verify-ubuntu-1804]][link-verify-ubuntu-1804] -[![Ubuntu 16.04][image-verify-ubuntu-1604]][link-verify-ubuntu-1604] +[![Windows][image-verify-windows]][link-verify-windows] +[![macOS][image-verify-macos]][link-verify-macos] +[![Ubuntu][image-verify-ubuntu]][link-verify-ubuntu] [![Docker container (Ubuntu)][image-verify-docker-container-ubuntu]][link-verify-docker-container-ubuntu] [![Docker container (CentOS)][image-verify-docker-container-centos]][link-verify-docker-container-centos] [![Release][image-release]][link-release] @@ -38,6 +36,7 @@ steps: name: id_rsa # optional known_hosts: ${{ secrets.KNOWN_HOSTS }} config: ${{ secrets.CONFIG }} # ssh_config; optional + if_key_exists: fail # replace / ignore / fail; optional (defaults to fail) - name: rsync over ssh run: rsync ./foo/ user@remote:bar/ ``` @@ -90,6 +89,14 @@ Check below: * `Host key verification failed.`: * Set `known_hosts` parameter correctly (use `ssh-keyscan` command). +### I want to replace/ignore key if exists. + +Use `if_key_exists` parameter. + +* `replace`: replaces key +* `ignore`: does nothing +* `fail`: fails (default) + ### How do I use encrypted SSH key? This action doesn't support encrypted key directly. @@ -134,16 +141,12 @@ See [CHANGELOG.md](CHANGELOG.md). [image-build]: https://github.com/shimataro/ssh-key-action/workflows/Build/badge.svg?event=push&branch=v2 [link-build]: https://github.com/shimataro/ssh-key-action/actions/workflows/build.yml -[image-verify-windows-2019]: https://github.com/shimataro/ssh-key-action/workflows/Windows%20Server%202019/badge.svg?event=push&branch=v2 -[link-verify-windows-2019]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-windows-server-2019.yml -[image-verify-macos-1015]: https://github.com/shimataro/ssh-key-action/workflows/macOS%20Catalina/badge.svg?event=push&branch=v2 -[link-verify-macos-1015]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-macos-1015.yml -[image-verify-ubuntu-2004]: https://github.com/shimataro/ssh-key-action/workflows/Ubuntu%2020.04/badge.svg?event=push&branch=v2 -[link-verify-ubuntu-2004]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-ubuntu-2004.yml -[image-verify-ubuntu-1804]: https://github.com/shimataro/ssh-key-action/workflows/Ubuntu%2018.04/badge.svg?event=push&branch=v2 -[link-verify-ubuntu-1804]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-ubuntu-1804.yml -[image-verify-ubuntu-1604]: https://github.com/shimataro/ssh-key-action/workflows/Ubuntu%2016.04/badge.svg?event=push&branch=v2 -[link-verify-ubuntu-1604]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-ubuntu-1604.yml +[image-verify-windows]: https://github.com/shimataro/ssh-key-action/workflows/Windows/badge.svg?event=push&branch=v2 +[link-verify-windows]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-windows.yml +[image-verify-macos]: https://github.com/shimataro/ssh-key-action/workflows/macOS/badge.svg?event=push&branch=v2 +[link-verify-macos]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-macos.yml +[image-verify-ubuntu]: https://github.com/shimataro/ssh-key-action/workflows/Ubuntu/badge.svg?event=push&branch=v2 +[link-verify-ubuntu]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-ubuntu.yml [image-verify-docker-container-ubuntu]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-ubuntu.yml/badge.svg?event=push&branch=v2 [link-verify-docker-container-ubuntu]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-ubuntu.yml [image-verify-docker-container-centos]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-centos.yml/badge.svg?event=push&branch=v2 diff --git a/action.yml b/action.yml index a7eb1ae0..6fab2b16 100644 --- a/action.yml +++ b/action.yml @@ -21,6 +21,10 @@ inputs: description: "SSH config" required: false default: "" + if_key_exists: + description: "replace / ignore / fail" + required: false + default: "fail" runs: using: "node12" main: "lib/index.js" diff --git a/lib/index.js b/lib/index.js index fe1c7105..88179863 100644 --- a/lib/index.js +++ b/lib/index.js @@ -427,22 +427,28 @@ const core = __importStar(__nccwpck_require__(186)); */ function main() { try { + // parameters + const key = core.getInput("key", { + required: true, + }); + const name = core.getInput("name"); + const knownHosts = core.getInput("known_hosts", { + required: true, + }); + const config = core.getInput("config"); + const ifKeyExists = core.getInput("if_key_exists"); + // create ".ssh" directory + const home = getHomeDirectory(); + const dirName = path_1.default.resolve(home, ".ssh"); + fs_1.default.mkdirSync(dirName, { + recursive: true, + mode: 0o700, + }); + // files to be created const files = [ - { - name: core.getInput("name"), - contents: insertLf(core.getInput("key", { - required: true, - }), false, true), - options: { - mode: 0o400, - flag: "ax", - }, - }, { name: "known_hosts", - contents: insertLf(core.getInput("known_hosts", { - required: true, - }), true, true), + contents: insertLf(knownHosts, true, true), options: { mode: 0o644, flag: "a", @@ -450,20 +456,23 @@ function main() { }, { name: "config", - contents: insertLf(core.getInput("config"), true, true), + contents: insertLf(config, true, true), options: { mode: 0o644, flag: "a", }, }, ]; - // create ".ssh" directory - const home = getHomeDirectory(); - const dirName = path_1.default.resolve(home, ".ssh"); - fs_1.default.mkdirSync(dirName, { - recursive: true, - mode: 0o700, - }); + if (shouldCreateKeyFile(path_1.default.join(dirName, name), ifKeyExists)) { + files.push({ + name: name, + contents: insertLf(key, false, true), + options: { + mode: 0o400, + flag: "wx", + }, + }); + } // create files for (const file of files) { const fileName = path_1.default.join(dirName, file.name); @@ -524,6 +533,30 @@ function insertLf(value, prepend, append) { } return affectedValue; } +/** + * should create SSH key file? + * @param keyFilePath path of key file + * @param ifKeyExists action if SSH key exists + * @returns Yes/No + */ +function shouldCreateKeyFile(keyFilePath, ifKeyExists) { + if (!fs_1.default.existsSync(keyFilePath)) { + // should create if file does not exist + return true; + } + switch (ifKeyExists) { + case "replace": + // remove file and should create if replace + fs_1.default.unlinkSync(keyFilePath); + return true; + case "ignore": + // should NOT create if ignore + return false; + default: + // error otherwise + throw new Error(`SSH key is already installed. Set "if_key_exists" to "replace" or "ignore" in order to avoid this error.`); + } +} main(); diff --git a/src/main.ts b/src/main.ts index d44005ed..0764350d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -17,22 +17,30 @@ function main(): void { try { + // parameters + const key = core.getInput("key", { + required: true, + }); + const name = core.getInput("name"); + const knownHosts = core.getInput("known_hosts", { + required: true, + }); + const config = core.getInput("config"); + const ifKeyExists = core.getInput("if_key_exists"); + + // create ".ssh" directory + const home = getHomeDirectory(); + const dirName = path.resolve(home, ".ssh"); + fs.mkdirSync(dirName, { + recursive: true, + mode: 0o700, + }); + + // files to be created const files: FileInfo[] = [ - { - name: core.getInput("name"), - contents: insertLf(core.getInput("key", { - required: true, - }), false, true), - options: { - mode: 0o400, - flag: "ax", - }, - }, { name: "known_hosts", - contents: insertLf(core.getInput("known_hosts", { - required: true, - }), true, true), + contents: insertLf(knownHosts, true, true), options: { mode: 0o644, flag: "a", @@ -40,21 +48,24 @@ function main(): void }, { name: "config", - contents: insertLf(core.getInput("config"), true, true), + contents: insertLf(config, true, true), options: { mode: 0o644, flag: "a", }, }, ]; - - // create ".ssh" directory - const home = getHomeDirectory(); - const dirName = path.resolve(home, ".ssh"); - fs.mkdirSync(dirName, { - recursive: true, - mode: 0o700, - }); + if(shouldCreateKeyFile(path.join(dirName, name), ifKeyExists)) + { + files.push({ + name: name, + contents: insertLf(key, false, true), + options: { + mode: 0o400, + flag: "wx", + }, + }); + } // create files for(const file of files) @@ -137,4 +148,35 @@ function insertLf(value: string, prepend: boolean, append: boolean): string return affectedValue; } +/** + * should create SSH key file? + * @param keyFilePath path of key file + * @param ifKeyExists action if SSH key exists + * @returns Yes/No + */ +function shouldCreateKeyFile(keyFilePath: string, ifKeyExists: string): boolean +{ + if(!fs.existsSync(keyFilePath)) + { + // should create if file does not exist + return true; + } + + switch(ifKeyExists) + { + case "replace": + // remove file and should create if replace + fs.unlinkSync(keyFilePath); + return true; + + case "ignore": + // should NOT create if ignore + return false; + + default: + // error otherwise + throw new Error(`SSH key is already installed. Set "if_key_exists" to "replace" or "ignore" in order to avoid this error.`); + } +} + main(); From f8aa6610dea1906e2ffe25763d5e0d49d7d61760 Mon Sep 17 00:00:00 2001 From: shimataro Date: Sun, 21 Mar 2021 14:56:48 +0900 Subject: [PATCH 2/4] Feature/verify on container alpine (#180) * support Alpine Docker container * add Git package * update README * update README; add install commands * update CHANGELOG * fix typo * fix typo --- .../workflows/verify-on-container-alpine.yml | 303 ++++++++++++++++++ .../workflows/verify-on-container-ubuntu.yml | 18 +- CHANGELOG.md | 1 + README.md | 8 +- 4 files changed, 319 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/verify-on-container-alpine.yml diff --git a/.github/workflows/verify-on-container-alpine.yml b/.github/workflows/verify-on-container-alpine.yml new file mode 100644 index 00000000..1dab3481 --- /dev/null +++ b/.github/workflows/verify-on-container-alpine.yml @@ -0,0 +1,303 @@ +# https://help.github.com/en/articles/workflow-syntax-for-github-actions + +name: Docker container (Alpine Linux) + +on: +- push + +jobs: + ssh-pem: + name: Connect to github.com (PEM format) + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + fail-fast: false + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-pkcs8: + name: Connect to github.com (PKCS8 format) + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + fail-fast: false + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PKCS8 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + ssh-rfc4716: + name: Connect to github.com (RFC4716 format) + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + fail-fast: false + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_RFC4716 }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_replace-key_exists: + name: if_key_exists=replace / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: "dummy" # replaced + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_replace-key_doesnt_exist: + name: if_key_exists=replace / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: replace + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_ignore-key_exists: + name: if_key_exists=ignore / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_ignore-key_doesnt_exist: + name: if_key_exists=ignore / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: ignore + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + key_if_exists_fail-key_exists: + name: if_key_exists=fail / key exists + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (dummy) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + - name: Install SSH key (replace) + uses: ./. + with: + key: "dummy" # ignored + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + continue-on-error: true + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp + key_if_exists_fail-key_doesnt_exist: + name: if_key_exists=fail / key doesn't exist + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key (replace) + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: ${{ secrets.KNOWN_HOSTS }} + if_key_exists: fail + - name: print created files + run: ls -l /root/.ssh + - name: git clone through SSH + run: git clone git@github.com:shimataro/ssh-key-action.git tmp diff --git a/.github/workflows/verify-on-container-ubuntu.yml b/.github/workflows/verify-on-container-ubuntu.yml index e6f13fb2..0cae861f 100644 --- a/.github/workflows/verify-on-container-ubuntu.yml +++ b/.github/workflows/verify-on-container-ubuntu.yml @@ -25,7 +25,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key @@ -56,7 +56,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key @@ -87,7 +87,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key @@ -119,7 +119,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key (dummy) @@ -156,7 +156,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key (replace) @@ -189,7 +189,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key (dummy) @@ -226,7 +226,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key (replace) @@ -259,7 +259,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key (dummy) @@ -297,7 +297,7 @@ jobs: - name: Install packages run: | apt update - apt -y install openssh-client git + apt install -y openssh-client git - name: Checkout source codes uses: actions/checkout@v2 - name: Install SSH key (replace) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0faf1e2..d22faa0d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Added * `if_key_exists` parameter +* Support Alpine Linux Docker container ## [2.2.0] - 2021-02-27 diff --git a/README.md b/README.md index 7541c3ee..b5e019c8 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ [![Ubuntu][image-verify-ubuntu]][link-verify-ubuntu] [![Docker container (Ubuntu)][image-verify-docker-container-ubuntu]][link-verify-docker-container-ubuntu] [![Docker container (CentOS)][image-verify-docker-container-centos]][link-verify-docker-container-centos] +[![Docker container (Alpine Linux)][image-verify-docker-container-alpine]][link-verify-docker-container-alpine] [![Release][image-release]][link-release] [![License][image-license]][link-license] [![Stars][image-stars]][link-stars] @@ -17,8 +18,9 @@ Useful for SCP, SFTP, and `rsync` over SSH in deployment script. tested on: * [all available virtual machines](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners#supported-runners-and-hardware-resources) (Windows Server 2019, macOS Catalina, and Ubuntu 20.04/18.04/16.04) -* [Docker container (Ubuntu)](https://hub.docker.com/_/ubuntu) / requires `openssh-client` package -* [Docker container (CentOS)](https://hub.docker.com/_/centos) / requires `openssh-clients` package +* [Docker container (Ubuntu)](https://hub.docker.com/_/ubuntu) / requires `openssh-client` package; `apt install -y openssh-client` +* [Docker container (CentOS)](https://hub.docker.com/_/centos) / requires `openssh-clients` package; `yum install -y openssh-clients` +* [Docker container (Alpine Linux)](https://hub.docker.com/_/alpine) / requires `openssh-client` package; `apk add openssh-client` ## Usage @@ -151,6 +153,8 @@ See [CHANGELOG.md](CHANGELOG.md). [link-verify-docker-container-ubuntu]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-ubuntu.yml [image-verify-docker-container-centos]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-centos.yml/badge.svg?event=push&branch=v2 [link-verify-docker-container-centos]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-centos.yml +[image-verify-docker-container-alpine]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-alpine.yml/badge.svg?event=push&branch=v2 +[link-verify-docker-container-alpine]: https://github.com/shimataro/ssh-key-action/actions/workflows/verify-on-container-alpine.yml [image-release]: https://img.shields.io/github/release/shimataro/ssh-key-action.svg [link-release]: https://github.com/shimataro/ssh-key-action/releases [image-license]: https://img.shields.io/github/license/shimataro/ssh-key-action.svg From 954c620b175ab632ddc1a7956668e706e4f23e8f Mon Sep 17 00:00:00 2001 From: shimataro Date: Sun, 21 Mar 2021 15:43:28 +0900 Subject: [PATCH 3/4] Feature/no known hosts (#181) * add "if_key_exists" * add test * fix flag * fix SSH connection commands * add test for if_key_exists=ignore * add test for if_key_exists=fail * add tests to Windows / macOS * update CHANGELOG * update badges * update README * fix README * update README * test no_known_hosts parameter * implement * ignore known_hosts if no_known_hosts is true * refactor * no_known_hosts is false * Revert "no_known_hosts is false" This reverts commit 206d310c5c4825281c60454081c0599c645ba64d. * test on Windows / macOS * test on Docker containers * add tests for Docker containers * test no_known_hosts parameter * implement * ignore known_hosts if no_known_hosts is true * refactor * no_known_hosts is false * Revert "no_known_hosts is false" This reverts commit 206d310c5c4825281c60454081c0599c645ba64d. * test on Windows / macOS * test on Docker containers * use `known_hosts: no` instead of `no_known_hosts: true` * update README * update README * "known_hosts: no" -> "known_hosts: unnecessary" * update README * update README * update CHANGELOG --- .../workflows/verify-on-container-alpine.yml | 29 +++++++++++++++ .../workflows/verify-on-container-centos.yml | 28 +++++++++++++++ .../workflows/verify-on-container-ubuntu.yml | 30 ++++++++++++++++ .github/workflows/verify-on-macos.yml | 21 +++++++++++ .github/workflows/verify-on-ubuntu.yml | 21 +++++++++++ .github/workflows/verify-on-windows.yml | 21 +++++++++++ CHANGELOG.md | 1 + README.md | 14 +++++++- lib/index.js | 31 ++++++++-------- src/main.ts | 35 +++++++++++-------- 10 files changed, 201 insertions(+), 30 deletions(-) diff --git a/.github/workflows/verify-on-container-alpine.yml b/.github/workflows/verify-on-container-alpine.yml index 1dab3481..c3c2f809 100644 --- a/.github/workflows/verify-on-container-alpine.yml +++ b/.github/workflows/verify-on-container-alpine.yml @@ -301,3 +301,32 @@ jobs: run: ls -l /root/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + known_hosts-unnecessary: + name: without known_hosts file + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - alpine:3.10 + - alpine:3.11 + - alpine:3.12 + - alpine:3.13 + steps: + - name: Install packages + run: apk add openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: unnecessary + - name: print created files + run: ls -l /root/.ssh diff --git a/.github/workflows/verify-on-container-centos.yml b/.github/workflows/verify-on-container-centos.yml index d008cb85..384740c1 100644 --- a/.github/workflows/verify-on-container-centos.yml +++ b/.github/workflows/verify-on-container-centos.yml @@ -292,3 +292,31 @@ jobs: run: ls -l /root/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + known_hosts-unnecessary: + name: without known_hosts file + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - centos:7 + - centos:8 + steps: + - name: Install packages + run: | + yum install -y git openssh-clients + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: unnecessary + - name: print created files + run: ls -l /root/.ssh diff --git a/.github/workflows/verify-on-container-ubuntu.yml b/.github/workflows/verify-on-container-ubuntu.yml index 0cae861f..4bbf5dee 100644 --- a/.github/workflows/verify-on-container-ubuntu.yml +++ b/.github/workflows/verify-on-container-ubuntu.yml @@ -310,3 +310,33 @@ jobs: run: ls -l /root/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + known_hosts-unnecessary: + name: without known_hosts file + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + container: + - ubuntu:16.04 + - ubuntu:18.04 + - ubuntu:20.04 + steps: + - name: Install packages + run: | + apt update + apt -y install openssh-client git + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: unnecessary + - name: print created files + run: ls -l /root/.ssh diff --git a/.github/workflows/verify-on-macos.yml b/.github/workflows/verify-on-macos.yml index 87b836f3..7ae91c35 100644 --- a/.github/workflows/verify-on-macos.yml +++ b/.github/workflows/verify-on-macos.yml @@ -237,3 +237,24 @@ jobs: run: ls -l ~/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + known_hosts-unnecessary: + name: without known_hosts file + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: unnecessary + - name: print created files + run: ls -l ~/.ssh diff --git a/.github/workflows/verify-on-ubuntu.yml b/.github/workflows/verify-on-ubuntu.yml index 7117eaf5..f07a2312 100644 --- a/.github/workflows/verify-on-ubuntu.yml +++ b/.github/workflows/verify-on-ubuntu.yml @@ -257,3 +257,24 @@ jobs: run: ls -l ~/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + known_hosts-unnecessary: + name: without known_hosts file + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: unnecessary + - name: print created files + run: ls -l ~/.ssh diff --git a/.github/workflows/verify-on-windows.yml b/.github/workflows/verify-on-windows.yml index 9a155bb8..32a4cdc2 100644 --- a/.github/workflows/verify-on-windows.yml +++ b/.github/workflows/verify-on-windows.yml @@ -237,3 +237,24 @@ jobs: run: ls -l ~/.ssh - name: git clone through SSH run: git clone git@github.com:shimataro/ssh-key-action.git tmp + + known_hosts-unnecessary: + name: without known_hosts file + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-16.04 + - ubuntu-18.04 + - ubuntu-20.04 + steps: + - name: Checkout source codes + uses: actions/checkout@v2 + - name: Install SSH key + uses: ./. + with: + key: ${{ secrets.SSH_KEY_PEM }} + known_hosts: unnecessary + - name: print created files + run: ls -l ~/.ssh diff --git a/CHANGELOG.md b/CHANGELOG.md index d22faa0d..a6cad213 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ### Added * `if_key_exists` parameter +* `known_hosts: unnecessary` * Support Alpine Linux Docker container ## [2.2.0] - 2021-02-27 diff --git a/README.md b/README.md index b5e019c8..5f549c54 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ See [Workflow syntax for GitHub Actions](https://help.github.com/en/articles/wor If you want to install multiple keys, call this action multiple times. It is useful for port forwarding. -**NOTE:** When this action is called multiple times, **the contents of `known_hosts` and `config` will be appended**. `key` must be saved as different name, by using `name` option. +**NOTE:** When this action is called multiple times, **the contents of `known_hosts` and `config` will be appended**. `key` must be saved as different name, by using `name` option. ```yaml runs-on: ubuntu-latest @@ -133,6 +133,18 @@ It has some advantages over other methods: * And will be updated continuously. * if security incident ―e.g., private key leaked― occurs, it's OK just to remove `authorized_keys` on bastion. +### I want to omit `known_hosts`. + +First of all, you have to understand that it is NOT secure to SSH with no `known_hosts` and using `StrictHostKeyChecking=no` option. + +Why do you want to omit it? +If the reason is **"I'm not understanding about the function of `known_hosts`"** or **"It's bother to fetch server key"**, you should not omit. +If **"It is hard to prefetch server key because the server will be created dynamically"**, you can use bastion server. + +**"`known_hosts` is unnecessary because I'm using secure method for SSH, such as SSHFP and signed server key."** — OK, here is a special value to omit `known_hosts`. +You should use it ONLY IF you are using secure methods... +It is `known_hosts: unnecessary`. + ## License The scripts and documentation in this project are released under the [MIT License](LICENSE) diff --git a/lib/index.js b/lib/index.js index 88179863..11dbfc55 100644 --- a/lib/index.js +++ b/lib/index.js @@ -445,32 +445,35 @@ function main() { mode: 0o700, }); // files to be created - const files = [ - { + const files = []; + if (shouldCreateKeyFile(path_1.default.join(dirName, name), ifKeyExists)) { + files.push({ + name: name, + contents: insertLf(key, false, true), + options: { + mode: 0o400, + flag: "wx", + }, + }); + } + if (knownHosts !== "unnecessary") { + files.push({ name: "known_hosts", contents: insertLf(knownHosts, true, true), options: { mode: 0o644, flag: "a", }, - }, - { + }); + } + if (config !== "") { + files.push({ name: "config", contents: insertLf(config, true, true), options: { mode: 0o644, flag: "a", }, - }, - ]; - if (shouldCreateKeyFile(path_1.default.join(dirName, name), ifKeyExists)) { - files.push({ - name: name, - contents: insertLf(key, false, true), - options: { - mode: 0o400, - flag: "wx", - }, }); } // create files diff --git a/src/main.ts b/src/main.ts index 0764350d..737ec574 100644 --- a/src/main.ts +++ b/src/main.ts @@ -37,33 +37,38 @@ function main(): void }); // files to be created - const files: FileInfo[] = [ - { + const files: FileInfo[] = []; + if(shouldCreateKeyFile(path.join(dirName, name), ifKeyExists)) + { + files.push({ + name: name, + contents: insertLf(key, false, true), + options: { + mode: 0o400, + flag: "wx", + }, + }); + } + if(knownHosts !== "unnecessary") + { + files.push({ name: "known_hosts", contents: insertLf(knownHosts, true, true), options: { mode: 0o644, flag: "a", }, - }, - { + }); + } + if(config !== "") + { + files.push({ name: "config", contents: insertLf(config, true, true), options: { mode: 0o644, flag: "a", }, - }, - ]; - if(shouldCreateKeyFile(path.join(dirName, name), ifKeyExists)) - { - files.push({ - name: name, - contents: insertLf(key, false, true), - options: { - mode: 0o400, - flag: "wx", - }, }); } From 4dfaf8f393e9815e542894d5eb5123eb7bb3e212 Mon Sep 17 00:00:00 2001 From: shimataro Date: Sun, 21 Mar 2021 16:05:33 +0900 Subject: [PATCH 4/4] version 2.3.0 (#182) --- CHANGELOG.md | 5 +- package-lock.json | 412 ++++++++++++++++++++++++++++------------------ package.json | 16 +- 3 files changed, 266 insertions(+), 167 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6cad213..8120715b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] +## [2.3.0] - 2021-03-21 + ### Added * `if_key_exists` parameter @@ -144,7 +146,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. * First release. -[Unreleased]: https://github.com/shimataro/ssh-key-action/compare/v2.2.0...HEAD +[Unreleased]: https://github.com/shimataro/ssh-key-action/compare/v2.3.0...HEAD +[2.3.0]: https://github.com/shimataro/ssh-key-action/compare/v2.2.0...v2.3.0 [2.2.0]: https://github.com/shimataro/ssh-key-action/compare/v2.1.0...v2.2.0 [2.1.0]: https://github.com/shimataro/ssh-key-action/compare/v2.0.3...v2.1.0 [2.0.3]: https://github.com/shimataro/ssh-key-action/compare/v2.0.2...v2.0.3 diff --git a/package-lock.json b/package-lock.json index 4350fc18..5df601ef 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "install-ssh-key", - "version": "2.2.0", + "version": "2.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -26,9 +26,9 @@ "dev": true }, "@babel/highlight": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", - "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", + "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.12.11", @@ -50,9 +50,9 @@ } }, "@eslint/eslintrc": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.3.0.tgz", - "integrity": "sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.0.tgz", + "integrity": "sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -62,11 +62,19 @@ "ignore": "^4.0.6", "import-fresh": "^3.2.1", "js-yaml": "^3.13.1", - "lodash": "^4.17.20", "minimatch": "^3.0.4", "strip-json-comments": "^3.1.1" }, "dependencies": { + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -160,16 +168,15 @@ } }, "@npmcli/run-script": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.3.tgz", - "integrity": "sha512-ELPGWAVU/xyU+A+H3pEPj0QOvYwLTX71RArXcClFzeiyJ/b/McsZ+d0QxpznvfFtZzxGN/gz/1cvlqICR4/suQ==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.4.tgz", + "integrity": "sha512-Yd9HXTtF1JGDXZw0+SOn+mWLYS0e7bHBHVC/2C8yqs4wUrs/k8rwBSinD7rfk+3WG/MFGRZKxjyoD34Pch2E/A==", "dev": true, "requires": { "@npmcli/node-gyp": "^1.0.2", "@npmcli/promise-spawn": "^1.3.2", "infer-owner": "^1.0.4", "node-gyp": "^7.1.0", - "puka": "^1.0.1", "read-package-json-fast": "^2.0.1" } }, @@ -201,19 +208,19 @@ "dev": true }, "@types/node": { - "version": "14.14.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.31.tgz", - "integrity": "sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==", + "version": "14.14.35", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.35.tgz", + "integrity": "sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==", "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.15.2.tgz", - "integrity": "sha512-uiQQeu9tWl3f1+oK0yoAv9lt/KXO24iafxgQTkIYO/kitruILGx3uH+QtIAHqxFV+yIsdnJH+alel9KuE3J15Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.18.0.tgz", + "integrity": "sha512-Lzkc/2+7EoH7+NjIWLS2lVuKKqbEmJhtXe3rmfA8cyiKnZm3IfLf51irnBcmow8Q/AptVV0XBZmBJKuUJTe6cQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "4.15.2", - "@typescript-eslint/scope-manager": "4.15.2", + "@typescript-eslint/experimental-utils": "4.18.0", + "@typescript-eslint/scope-manager": "4.18.0", "debug": "^4.1.1", "functional-red-black-tree": "^1.0.1", "lodash": "^4.17.15", @@ -223,55 +230,55 @@ } }, "@typescript-eslint/experimental-utils": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.15.2.tgz", - "integrity": "sha512-Fxoshw8+R5X3/Vmqwsjc8nRO/7iTysRtDqx6rlfLZ7HbT8TZhPeQqbPjTyk2RheH3L8afumecTQnUc9EeXxohQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.18.0.tgz", + "integrity": "sha512-92h723Kblt9JcT2RRY3QS2xefFKar4ZQFVs3GityOKWQYgtajxt/tuXIzL7sVCUlM1hgreiV5gkGYyBpdOwO6A==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", + "@typescript-eslint/scope-manager": "4.18.0", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/typescript-estree": "4.18.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.15.2.tgz", - "integrity": "sha512-SHeF8xbsC6z2FKXsaTb1tBCf0QZsjJ94H6Bo51Y1aVEZ4XAefaw5ZAilMoDPlGghe+qtq7XdTiDlGfVTOmvA+Q==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.18.0.tgz", + "integrity": "sha512-W3z5S0ZbecwX3PhJEAnq4mnjK5JJXvXUDBYIYGoweCyWyuvAKfGHvzmpUzgB5L4cRBb+cTu9U/ro66dx7dIimA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "4.15.2", - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/typescript-estree": "4.15.2", + "@typescript-eslint/scope-manager": "4.18.0", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/typescript-estree": "4.18.0", "debug": "^4.1.1" } }, "@typescript-eslint/scope-manager": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.15.2.tgz", - "integrity": "sha512-Zm0tf/MSKuX6aeJmuXexgdVyxT9/oJJhaCkijv0DvJVT3ui4zY6XYd6iwIo/8GEZGy43cd7w1rFMiCLHbRzAPQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.18.0.tgz", + "integrity": "sha512-olX4yN6rvHR2eyFOcb6E4vmhDPsfdMyfQ3qR+oQNkAv8emKKlfxTWUXU5Mqxs2Fwe3Pf1BoPvrwZtwngxDzYzQ==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2" + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/visitor-keys": "4.18.0" } }, "@typescript-eslint/types": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.15.2.tgz", - "integrity": "sha512-r7lW7HFkAarfUylJ2tKndyO9njwSyoy6cpfDKWPX6/ctZA+QyaYscAHXVAfJqtnY6aaTwDYrOhp+ginlbc7HfQ==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.18.0.tgz", + "integrity": "sha512-/BRociARpj5E+9yQ7cwCF/SNOWwXJ3qhjurMuK2hIFUbr9vTuDeu476Zpu+ptxY2kSxUHDGLLKy+qGq2sOg37A==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.15.2.tgz", - "integrity": "sha512-cGR8C2g5SPtHTQvAymEODeqx90pJHadWsgTtx6GbnTWKqsg7yp6Eaya9nFzUd4KrKhxdYTTFBiYeTPQaz/l8bw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.18.0.tgz", + "integrity": "sha512-wt4xvF6vvJI7epz+rEqxmoNQ4ZADArGQO9gDU+cM0U5fdVv7N+IAuVoVAoZSOZxzGHBfvE3XQMLdy+scsqFfeg==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.2", - "@typescript-eslint/visitor-keys": "4.15.2", + "@typescript-eslint/types": "4.18.0", + "@typescript-eslint/visitor-keys": "4.18.0", "debug": "^4.1.1", "globby": "^11.0.1", "is-glob": "^4.0.1", @@ -280,12 +287,12 @@ } }, "@typescript-eslint/visitor-keys": { - "version": "4.15.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.15.2.tgz", - "integrity": "sha512-TME1VgSb7wTwgENN5KVj4Nqg25hP8DisXxNBojM4Nn31rYaNDIocNm5cmjOFfh42n7NVERxWrDFoETO/76ePyg==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.18.0.tgz", + "integrity": "sha512-Q9t90JCvfYaN0OfFUgaLqByOfz8yPeTAdotn/XYNm5q9eHax90gzdb+RJ6E9T5s97Kv/UHWKERTmqA0jTKAEHw==", "dev": true, "requires": { - "@typescript-eslint/types": "4.15.2", + "@typescript-eslint/types": "4.18.0", "eslint-visitor-keys": "^2.0.0" } }, @@ -732,9 +739,9 @@ "dev": true }, "cli-table": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.5.tgz", - "integrity": "sha512-7uo2+RMNQUZ13M199udxqwk1qxTOS53EUak4gmu/aioUpdH5RvBz0JkJslcWz6ABKedZNqXXzikMZgHh+qF16A==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.6.tgz", + "integrity": "sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==", "dev": true, "requires": { "colors": "1.0.3" @@ -844,9 +851,9 @@ } }, "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", "dev": true }, "concat-map": { @@ -1054,15 +1061,15 @@ } }, "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", "dev": true }, "env-paths": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", - "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true }, "err-code": { @@ -1081,25 +1088,27 @@ } }, "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", + "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", "dev": true, "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", + "get-intrinsic": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", + "is-regex": "^1.1.2", + "is-string": "^1.0.5", "object-inspect": "^1.9.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.0" } }, "es-to-primitive": { @@ -1126,13 +1135,13 @@ "dev": true }, "eslint": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.20.0.tgz", - "integrity": "sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.22.0.tgz", + "integrity": "sha512-3VawOtjSJUQiiqac8MQc+w457iGLfuNGLFn8JmF051tTKbh5/x/0vlcEj8OgDCaw7Ysa2Jn8paGshV7x2abKXg==", "dev": true, "requires": { "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.3.0", + "@eslint/eslintrc": "^0.4.0", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -1145,10 +1154,10 @@ "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", - "file-entry-cache": "^6.0.0", + "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.0.0", - "globals": "^12.1.0", + "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -1156,7 +1165,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -1538,9 +1547,9 @@ } }, "glob-parent": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", - "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "requires": { "is-glob": "^4.0.1" @@ -1564,12 +1573,20 @@ } }, "globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.7.0.tgz", + "integrity": "sha512-Aipsz6ZKRxa/xQkZhNg0qIWXT6x6rD46f6x/PCnBomlttdIyAPak4YD9jTmKpZ72uROSMU87qJtcgpgHaVchiA==", "dev": true, "requires": { - "type-fest": "^0.8.1" + "type-fest": "^0.20.2" + }, + "dependencies": { + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + } } }, "globby": { @@ -1653,6 +1670,12 @@ } } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1660,9 +1683,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "has-unicode": { @@ -1678,9 +1701,9 @@ "dev": true }, "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.1.tgz", + "integrity": "sha512-eT7NrxAsppPRQEBSwKSosReE+v8OzABwEScQYk5d4uxaEPlzxTIku7LINXtBGalthkLhJnq5lBI89PfK43zAKg==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -1832,6 +1855,21 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-bigint": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", + "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", + "dev": true + }, + "is-boolean-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", + "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-callable": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", @@ -1917,6 +1955,12 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-number-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", + "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", + "dev": true + }, "is-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", @@ -1924,9 +1968,9 @@ "dev": true }, "is-path-inside": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", - "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, "is-regex": { @@ -1939,6 +1983,12 @@ "has-symbols": "^1.0.1" } }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -2380,13 +2430,13 @@ } }, "markdown-it": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.2.tgz", - "integrity": "sha512-4Lkvjbv2kK+moL9TbeV+6/NHx+1Q+R/NIdUlFlkqkkzUcTod4uiyTJRiBidKR9qXSdkNFkgv+AELY8KN9vSgVA==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.4.tgz", + "integrity": "sha512-34RwOXZT8kyuOJy25oJNJoulO8L0bTHYWXcdZBYZqFnjIy3NgjeoM3FmPXIOFQ26/lSHYMr8oc62B6adxXcb3Q==", "dev": true, "requires": { "argparse": "^2.0.1", - "entities": "~2.0.0", + "entities": "~2.1.0", "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" @@ -2401,40 +2451,57 @@ } }, "markdownlint": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.22.0.tgz", - "integrity": "sha512-J4B+iMc12pOdp/wfYi03W2qfAfEyiZzq3qvQh/8vOMNU8vXYY6Jg440EY7dWTBCqROhb1i4nAn3BTByJ5kdx1w==", + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.23.1.tgz", + "integrity": "sha512-iOEwhDfNmq2IJlaA8mzEkHYUi/Hwoa6Ss+HO5jkwUR6wQ4quFr0WzSx+Z9rsWZKUaPbyirIdL1zGmJRkWawr4Q==", "dev": true, "requires": { - "markdown-it": "12.0.2" + "markdown-it": "12.0.4" } }, "markdownlint-cli": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.26.0.tgz", - "integrity": "sha512-biLfeGNZG9nw0yJbtFBzRlew2/P5w7JSseKwolSox3zejs7dLpGvPgqbC+iqJnqqGWcWLtXaXh8bBEKWmfl10A==", + "version": "0.27.1", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.27.1.tgz", + "integrity": "sha512-p1VV6aSbGrDlpUWzHizAnSNEQAweVR3qUI/AIUubxW7BGPXziSXkIED+uRtSohUlRS/jmqp3Wi4es5j6fIrdeQ==", "dev": true, "requires": { - "commander": "~6.2.1", + "commander": "~7.1.0", "deep-extend": "~0.6.0", "get-stdin": "~8.0.0", "glob": "~7.1.6", "ignore": "~5.1.8", - "js-yaml": "~3.14.1", + "js-yaml": "^4.0.0", "jsonc-parser": "~3.0.0", "lodash.differencewith": "~4.5.0", "lodash.flatten": "~4.4.0", - "markdownlint": "~0.22.0", - "markdownlint-rule-helpers": "~0.13.0", + "markdownlint": "~0.23.1", + "markdownlint-rule-helpers": "~0.14.0", "minimatch": "~3.0.4", "minimist": "~1.2.5", "rc": "~1.2.8" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", + "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + } } }, "markdownlint-rule-helpers": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.13.0.tgz", - "integrity": "sha512-rRY0itbcHG4e+ntz0bbY3AIceSJMKS0TafEMgEtKVHRZ54/JUSy6/4ypCL618RlJvYRej+xMLxX5nkJqIeTZaQ==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/markdownlint-rule-helpers/-/markdownlint-rule-helpers-0.14.0.tgz", + "integrity": "sha512-vRTPqSU4JK8vVXmjICHSBhwXUvbfh/VJo+j7hvxqe15tLJyomv3FLgFdFgb8kpj0Fe8SsJa/TZUAXv7/sN+N7A==", "dev": true }, "mdurl": { @@ -2444,9 +2511,9 @@ "dev": true }, "mem": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-8.0.0.tgz", - "integrity": "sha512-qrcJOe6uD+EW8Wrci1Vdiua/15Xw3n/QnaNXE7varnB6InxSk7nu3/i5jfy3S6kWxr8WYJ6R1o0afMUtvorTsA==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-8.1.0.tgz", + "integrity": "sha512-FIkgXo0kTi3XpvaznV5Muk6Y6w8SkdmRXcY7ZLonQesuYezp59UooLxAVBcGuN6PH2tXN84mR3vyzSc6oSMUfA==", "dev": true, "requires": { "map-age-cleaner": "^0.1.3", @@ -2699,27 +2766,28 @@ } }, "npm-check-updates": { - "version": "11.1.9", - "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.1.9.tgz", - "integrity": "sha512-Ztl5q785Hw+yiUUnlhN/lmrYdzDpH6Mopr0xtijb9t6ltS4RwkIU9qZXuYlOJtPyEXNdmEdmSc2NpfFFs/Nreg==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/npm-check-updates/-/npm-check-updates-11.3.0.tgz", + "integrity": "sha512-7GMDj40cWw/nRn3BsN+20ca3T6CvHqIiFhooVa5a3VybrS7TNBdbR3/BIi9dw4vFORgFZw/OsW3ZtRTFamnPDQ==", "dev": true, "requires": { "chalk": "^4.1.0", "cint": "^8.2.1", - "cli-table": "^0.3.4", + "cli-table": "^0.3.5", "commander": "^6.2.1", "find-up": "5.0.0", "fp-and-or": "^0.1.3", "get-stdin": "^8.0.0", "globby": "^11.0.2", - "hosted-git-info": "^3.0.8", + "hosted-git-info": "^4.0.0", "json-parse-helpfulerror": "^1.0.3", "jsonlines": "^0.1.1", "libnpmconfig": "^1.2.1", - "lodash": "^4.17.20", + "lodash": "^4.17.21", "mem": "^8.0.0", + "minimatch": "^3.0.4", "p-map": "^4.0.0", - "pacote": "^11.2.3", + "pacote": "^11.3.0", "parse-github-url": "^1.0.2", "progress": "^2.0.3", "prompts": "^2.4.0", @@ -2730,6 +2798,14 @@ "semver-utils": "^1.1.4", "spawn-please": "^1.0.0", "update-notifier": "^5.1.0" + }, + "dependencies": { + "commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true + } } }, "npm-install-checks": { @@ -2748,13 +2824,13 @@ "dev": true }, "npm-package-arg": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.1.tgz", - "integrity": "sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.2.tgz", + "integrity": "sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA==", "dev": true, "requires": { - "hosted-git-info": "^3.0.6", - "semver": "^7.0.0", + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", "validate-npm-package-name": "^3.0.0" } }, @@ -2771,14 +2847,15 @@ } }, "npm-pick-manifest": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", - "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", + "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", "dev": true, "requires": { "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.0.0", - "semver": "^7.0.0" + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" } }, "npm-registry-fetch": { @@ -3028,9 +3105,9 @@ } }, "pacote": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.7.tgz", - "integrity": "sha512-ogxPor11v/rnU9ukwLlI2dPx22q9iob1+yZyqSwerKsOvBMhU9e+SJHtxY4y2N0MRH4/5jGsGiRLsZeJWyM4dQ==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.0.tgz", + "integrity": "sha512-cygprcGpEVqvDzpuPMkGVXW/ooc2ibpoosuJ4YHcUXozDs9VJP7Vha+41pYppG2MVNis4t1BB8IygIBh7vVr2Q==", "dev": true, "requires": { "@npmcli/git": "^2.0.1", @@ -3189,12 +3266,6 @@ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", "dev": true }, - "puka": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/puka/-/puka-1.0.1.tgz", - "integrity": "sha512-ssjRZxBd7BT3dte1RR3VoeT2cT/ODH8x+h0rUF1rMqB0srHYf48stSDWfiYakTp5UBZMxroZhB2+ExLDHm7W3g==", - "dev": true - }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -3586,9 +3657,9 @@ "dev": true }, "socks": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.5.1.tgz", - "integrity": "sha512-oZCsJJxapULAYJaEYBSzMcz8m3jqgGrHaGhkmU/o/PQfFWYWxkAaA0UMGImb6s6tEXfKi959X6VJjMMQ3P6TTQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.0.tgz", + "integrity": "sha512-mNmr9owlinMplev0Wd7UHFlqI4ofnBnNzFuzrm63PPaHgbkqCFe4T5LzwKmtQ/f2tX0NTpcdVLyD/FHxFBstYw==", "dev": true, "requires": { "ip": "^1.1.5", @@ -3677,9 +3748,9 @@ } }, "string-width": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.1.tgz", - "integrity": "sha512-LL0OLyN6AnfV9xqGQpDBwedT2Rt63737LxvsRxbcwpa2aIeynBApG2Sm//F3TaLHIR1aJBN52DWklc06b94o5Q==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", + "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", "dev": true, "requires": { "emoji-regex": "^8.0.0", @@ -3770,9 +3841,9 @@ }, "dependencies": { "ajv": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz", - "integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-7.2.3.tgz", + "integrity": "sha512-idv5WZvKVXDqKralOImQgPM9v6WOdLNa0IY3B3doOjw/YxRGT8I+allIJ6kd7Uaj+SF1xZUSU+nPM5aDNBVtnw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -3841,9 +3912,9 @@ "dev": true }, "tsutils": { - "version": "3.20.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.20.0.tgz", - "integrity": "sha512-RYbuQuvkhuqVeXweWT3tJLKOEJ/UUw9GjNEZGWdrLLlM+611o1gwLHBpxoFJKKl25fLprp2eVthtKs5JOrNeXg==", + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, "requires": { "tslib": "^1.8.1" @@ -3889,9 +3960,9 @@ } }, "typescript": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.2.tgz", - "integrity": "sha512-tbb+NVrLfnsJy3M59lsDgrzWIflR4d4TIUjz+heUnHZwdF7YsrMTKoRERiIvI2lvBG95dfpLxB21WZhys1bgaQ==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.3.tgz", + "integrity": "sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw==", "dev": true }, "uc.micro": { @@ -3900,6 +3971,18 @@ "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, + "unbox-primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.0.tgz", + "integrity": "sha512-P/51NX+JXyxK/aigg1/ZgyccdAxm5K1+n8+tvqSntjOivPt19gvm1VC49RWYetsiub8WViUchdxl/KWHHB0kzA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.0", + "has-symbols": "^1.0.0", + "which-boxed-primitive": "^1.0.1" + } + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -3980,9 +4063,9 @@ "dev": true }, "v8-compile-cache": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", - "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, "validate-npm-package-license": { @@ -4024,6 +4107,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", diff --git a/package.json b/package.json index 95636f32..dd32f0dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "install-ssh-key", - "version": "2.2.0", + "version": "2.3.0", "private": true, "description": "Install SSH key in .ssh", "main": "lib/index.js", @@ -32,15 +32,15 @@ "license": "MIT", "devDependencies": { "@actions/core": "1.2.6", - "@types/node": "14.14.31", - "@typescript-eslint/eslint-plugin": "4.15.2", - "@typescript-eslint/parser": "4.15.2", + "@types/node": "14.14.35", + "@typescript-eslint/eslint-plugin": "4.18.0", + "@typescript-eslint/parser": "4.18.0", "@vercel/ncc": "0.27.0", - "eslint": "7.20.0", - "markdownlint-cli": "0.26.0", - "npm-check-updates": "11.1.9", + "eslint": "7.22.0", + "markdownlint-cli": "0.27.1", + "npm-check-updates": "11.3.0", "npm-run-all": "4.1.5", - "typescript": "4.2.2", + "typescript": "4.2.3", "yaml-lint": "1.2.4" } }