我正在尝试将其从GitHub操作推送到mysql> SELECT COUNT(*) FROM transaction;
+----------+
| COUNT(*) |
+----------+
| 4569880 |
+----------+
1 row in set (1 min 37.88 sec)
mysql> SELECT COUNT(*) FROM transaction;
+----------+
| count(*) |
+----------+
| 4569880 |
+----------+
1 row in set (1.44 sec)
mysql> SELECT COUNT(*) FROM communication;
+----------+
| count(*) |
+----------+
| 2821486 |
+----------+
1 row in set (2 min 19.28 sec)
远程。我的行动逻辑是:
origin
事件并按评论消息进行过滤pull_request_review
脚本为:
origin
我正在从if [[ "${GITHUB_EVENT_NAME}" != "pull_request_review" ]]; then
echo "unsupported event: ${GITHUB_EVENT_NAME}"
exit 1
fi
user=$(jq -r .review.user.login ${GITHUB_EVENT_PATH})
cmd=$(jq -r .review.body ${GITHUB_EVENT_PATH})
echo "reviewer is ${user}, command is ${cmd}"
if [[ "${cmd}" == "merge" ]]; then
head=$(jq -r .pull_request.head.ref ${GITHUB_EVENT_PATH})
git config user.email test@test.com
git config user.name test
git checkout -B _tmp origin/${head}
git checkout -B master origin/master
git merge --no-ff _tmp
git push origin master
fi
Docker容器运行此脚本:
alpine:3.10
第一步工作正常(检出和合并),但是由于错误,操作未能将合并推送到FROM alpine:3.10
LABEL "com.github.actions.name"="Hello world action"
LABEL "com.github.actions.icon"="shield"
LABEL "com.github.actions.color"="green"
WORKDIR /app
COPY action.sh action.sh
RUN apk --update add bash git jq
CMD ["bash", "/app/action.sh"]
:
+ git push origin master
致命:无法读取“ https://github.com”的用户名:没有这样的设备或地址
似乎GitHub动作Docker容器未配置为推送到GitHub。如何配置?是否可以使用GitHub提供的某些env veraibles或某些挂载的文件(如origin
路径中的文件)?
答案 0 :(得分:6)
您可以在存储库URL上使用secrets.GITHUB_TOKEN
作为密码。因此,您可以将其添加到git push
行之前:
git remote set-url --push origin https://your_username:$GITHUB_TOKEN@github.com/your/repo
这假定您已经将GITHUB_TOKEN机密作为环境变量传递给脚本。如果不是,则添加:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
进入工作流程步骤。
答案 1 :(得分:4)
actions / checkout @ v2
结帐的版本2解决了已分离的HEAD状态问题,并简化了向原点的推送。
name: Push commit
on: push
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create report file
run: date +%s > report.txt
- name: Commit report
run: |
git config --global user.name 'Your Name'
git config --global user.email 'your-username@users.noreply.github.com'
git commit -am "Automated report"
git push
如果您需要push事件来触发其他工作流,请使用范围为Personal Access Token的repo
。
- uses: actions/checkout@v2
with:
token: ${{ secrets.PAT }}
actions / checkout @ v1(原始答案)
为@rmunn的出色回答添加更多细节。问题在于,actions/checkout@v1
操作使git存储库处于分离的HEAD状态。有关更多详细信息,请参见此问题:https://github.com/actions/checkout/issues/6
这是一个完整的示例,用于演示如何使已检出的存储库进入可用状态并推送到远程服务器。
name: Push commit
on: push
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Create report file
run: date +%s > report.txt
- name: Commit report
run: |
git config --global user.name 'Your Name'
git config --global user.email 'your-username@users.noreply.github.com'
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY
git checkout "${GITHUB_REF:11}"
git commit -am "Automated report"
git push
要包含未跟踪的(新)文件,请将工作流更改为使用以下内容。
git add -A
git commit -m "Automated report"
上述工作流程应适用于大多数事件。对于on: pull_request
工作流,应检出合并分支(GITHUB_HEAD_REF
)以替换默认的合并提交。
重要:如果除了以下工作流程之外还进行其他拉取请求检查,则必须使用Personal Access Token而不是默认的GITHUB_TOKEN
。
这是由于GitHub Actions故意施加的限制,即工作流程(例如push
)引发的事件无法触发进一步的工作流程运行。
这是为了防止意外的“无限循环”情况,并且是一种防止滥用的措施。
使用repo
范围为Personal Access Token的this GitHub issue是一种公认的解决方法。有关解决方法的更多详细信息,请参见GitHub Actions: How to Automate Code Formatting in Pull Requests。
name: Push commit on pull request
on: pull_request
jobs:
report:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
with:
ref: ${{ github.head_ref }}
- name: Create report file
run: date +%s > report.txt
- name: Commit report
run: |
git config --global user.name 'Your Name'
git config --global user.email 'your-username@users.noreply.github.com'
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
git commit -am "Automated report"
git push
有关在on: pull_request
工作流程中推入来源的更多示例,请参阅此博客文章{{3}}。