【发布时间】:2021-01-19 01:10:08
【问题描述】:
我正在尝试创建一个将任何提交推送到 AWS CodeCommit 存储库的 GitHub 操作。为此,我使用带有单个 main.yml 文件的工作流,使用 composite run steps action 方法创建 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 ]
每当更改推送到主分支时...
jobs:
codecommit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
运行一个名为 codecommit 的作业,它首先检查 repo 中的代码并使其在运行程序的文件系统中可用。
- 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
使用一些环境变量CODECOMMIT_URL、HOST_KEY、SSH_CONFIG 和SSH_PRIVATE_KEY 运行一个名为push to codecommit 的步骤。它们是:
CODECOMMIT_URL:CodeCommit 存储库的 ssh url。
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 的文件中,授予系统对该文件的访问权限,然后导航回 repo 的根目录。
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.
我在这个配置中遗漏了什么吗?
【问题讨论】:
-
我有一个类似的用例需要这样做,你能找到解决方案吗?
标签: git github ssh github-actions aws-codecommit