问题描述
我正在尝试创建一个GitHub Action来将任何提交推送到AWS CodeCommit存储库。为此,我使用带有composite run steps action方法的单个main.yml
文件创建一个GitHub Action的工作流。这是该操作的外观:
name: CI
on:
push:
branches: [ master ]
jobs:
codecommit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: pushes to codecommit
env:
CODECOMMIT_URL: ${{ secrets.CODECOMMIT_URL }}
HOST_KEY: ${{ secrets.HOST_KEY }}
SSH_CONFIG: ${{ secrets.SSH_CONFIG }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
shell: bash
run: |
mkdir .ssh && cd .ssh && echo "$SSH_PRIVATE_KEY" > id_rsa && chmod 600 id_rsa
echo "$SSH_CONFIG" > config && chmod 600 config
echo "$HOST_KEY" > known_hosts && chmod 600 known_hosts && cd ..
git remote add codecommit "$CODECOMMIT_URL"
git push codecommit master --force
打破这一点:
on:
push:
branches: [ master ]
每当将更改推送到master分支...
jobs:
codecommit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
运行一个名为codecommit
的作业,该作业首先检出存储库中的代码并将其提供给运行者的文件系统。
- name: push to codecommit
env:
CODECOMMIT_URL: ${{ secrets.CODECOMMIT_URL }}
HOST_KEY: ${{ secrets.HOST_KEY }}
SSH_CONFIG: ${{ secrets.SSH_CONFIG }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
shell: bash
使用一些环境变量push to codecommit
,CODECOMMIT_URL
,HOST_KEY
和SSH_CONFIG
运行名为SSH_PRIVATE_KEY
的单个步骤。这些是:
CODECOMMIT_URL
:CodeCommit存储库的ssh网址。
HOST_KEY
:运行ssh-keyscan -t rsa github.com
以获取GitHub存储库的主机密钥的结果。
SSH_CONFIG
:这是用于git的git配置:
Host git-codecommit.*.amazonaws.com
User {SSH Username here}
IdentityFile .ssh/id_rsa
StrictHostKeyChecking no
SSH_PRIVATE_KEY
:位于id_rsa
中的私钥。
run: |
mkdir .ssh && cd .ssh && echo "$SSH_PRIVATE_KEY" > id_rsa && chmod 600 id_rsa
运行一系列命令,首先创建一个名为.ssh
的目录,输入该目录,然后创建一个系统可以访问的文件id_rsa
。该文件包含SSH私钥。
echo "$SSH_CONFIG" > config && chmod 600 config
将SSH配置保存到名为config
的文件中,并赋予该文件系统访问权限。
echo "$HOST_KEY" > known_hosts && chmod 600 known_hosts && cd ..
将主机密钥保存到名为known_hosts
的文件中,授予系统对该文件的访问权限,然后导航回该存储库的根目录。
git remote add codecommit "$CODECOMMIT_URL"
git push codecommit master --force
将CodeCommit URL添加为git的远程,然后尝试推送到该远程。
看起来CodeCommit仍未将GitHub识别为已验证。我从运行此操作得到此响应:
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我在此配置中缺少什么吗?
解决方法
你不是应该做的事吗
$ ssh-keyscan -H git-codecommit.<region>.amazonaws.com
...,然后将结果添加到:
~/.ssh/known_hosts