托管的 Runner 现已推出固定 IP 地址的测试版。您可以预留一组 IP 地址,并且只要这些 Runner 每月使用该 IP 地址一次,它们就会保持不变。
请点击此处查看公告:
或者,通过虚拟机上的自托管 Runner 您可以控制 IP 地址。
另请参阅:
或者,您的 GitHub Action 工作流可能可以在运行过程中调整防火墙设置。
或者您可以使用类似于SQL Server LocalDB或SQLLite的工具在运行程序的本地计算机上连接到数据库。或者在云环境中启动一个临时数据库,将其开放给运行程序的计算机,并在使用后将其删除。
或者您可以使用VPN客户端将操作运行程序连接到您的环境中。您可以在运行程序的计算机上安装任何您想要的软件。
您可以在工作流期间使用public-ip action动态检索GitHub Actions runner的IP地址,并在单元测试步骤之前和之后更新RDS实例的安全组入站规则。
这将允许您使用GitHub托管的运行程序来执行工作流,而无需自己进行托管。
注意:您还需要设置AWS凭据在您的runner上并具有更新相关安全组的权限。此外,您需要确保RDS实例位于公共子网中,并附加了Internet网关和安全组。
您的工作流应该类似于以下内容:
deploy:
name: deploy
runs-on: ubuntu-latest
env:
AWS_INSTANCE_SG_ID: <your-rds-subnet-sg-id>
steps:
- name: configure aws credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: <your-ci-aws-access-key>
aws-secret-access-key: <your-ci-aws-secret-key>
aws-region: <your-rds-aws-region>
- name: get runner ip addresses
id: ip
uses: haythem/public-ip@v1.2
- name: whitelist runner ip address
run: |
aws ec2 authorize-security-group-ingress \
--group-id $AWS_INSTANCE_SG_ID \
--protocol tcp \
--port 22 \
--cidr ${{ steps.ip.outputs.ipv4 }}/32
- name: connect to your rds instance and run tests
run: |
...run tests...
- name: revoke runner ip address
run: |
aws ec2 revoke-security-group-ingress \
--group-id $AWS_INSTANCE_SG_ID \
--protocol tcp \
--port 22 \
--cidr ${{ steps.ip.outputs.ipv4 }}/32
固定IP范围可通过允许列表服务提供给Runner访问
仅需勾选复选框即可设置机器的固定IP范围,这提供了一个可在内部系统和GitHub的允许列表中列出的IP范围,使您在使用Actions时保持GitHub环境更安全。
更多详细信息请参见 此处
如果你的数据库恰好是Redis或PostgreSQL,GitHub Actions包含一个名为Service Containers的内置功能,用于在CI中为测试目的启动短暂的数据库。
这些数据库是短暂的:在使用它的作业完成后,托管数据库的服务容器将被销毁。如果需要,您可以在容器中或直接在虚拟机上运行数据库。
有关更多信息,请参见GitHub Actions文档中的Creating PostgreSQL service containers。
如果你使用的是另一个数据库,你可以手动安装和运行它。