美文网首页
github action中Deploy keys和secret

github action中Deploy keys和secret

作者: 吉凶以情迁 | 来源:发表于2023-04-18 10:07 被阅读0次

deploy key是针对指定仓库
secreet可以用于所有仓库
优先级
使用的是具有deploy_key和secret_key的代码存储库,并且这两个密钥的名称相同,那么在访问该存储库时,应该先使用deploy_key进行访问。这是因为deploy_key通常只具备只读权限,而secret_key则具有更高级别的权限,例如写入和修改访问受限的资源。

在GitHub Actions中,使用Deploy key访问Git仓库是通过在Actions环境中设置SSH私钥来完成的。具体步骤如下:

1.生成SSH密钥对(公钥和私钥)。

2.将SSH公钥添加到需要访问的Git仓库的Deploy keys中。

3.将SSH私钥添加为GitHub Actions environment secrets。

4.在Actions workflow文件中使用actions/checkout action,并启用SSH agent,在运行操作时自动添加私钥到SSH agent中。

以下是一个示例workflow文件的代码片段,演示如何在GitHub Actions中使用Deploy key:

name: Deploy to production

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          ssh-key: ${{ secrets.DEPLOY_KEY }}
          fetch-depth: 0 # 需要完整的git历史记录才能进行后续的推送操作。
      - name: Install dependencies and build
        run: |
          npm install
          npm run build
      - name: Deploy to production
        env:
          NODE_ENV: production
        run: |
          echo "Deploying to production..."
          # 运行部署脚本或命令等

Secrets
,${{ secrets.DOCKERHUB_USERNAME }} 是一个GitHub Actions中的环境变量,它可以安全地存储和使用敏感数据(如API密钥、密码等)。 Secrets 可以从 GitHub 仓库 Settings 中的 Secrets 部分定义,并且只有具有访问权限的人才能查看和编辑它们。 Deploy key 用于授权将代码推送到另一个Git仓库,而不是用于身份验证或授权使用API密钥等敏感信息。


name: My Workflow

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Build app
        run: |
          npm install
          npm run build
      - name: Deploy to production
        env:
          MY_SECRET: ${{ secrets.MY_SECRET }}
        run: |
          echo "Deploying to production..."
          # 在此处使用MY_SECRET环境变量的值

存储库变量和存储库秘密都可以在同一个存储库内的不同工作流中共享,但是它们默认情况下只能在存储库的本地上下文中使用。

如果要在其他存储库的工作流程中使用这些变量或秘密,则需要将它们作为输出参数传递到当前工作流程,并将其存储在全局环境或其他可用于所有工作流程的存储库设置中。此外,在将存储库秘密添加到其他存储库时,还需要手动将其添加到新存储库中,并确保仅授予需要访问该存储库秘密的人员相关的权限。

请注意,存储库秘密应该仅用于需要保护的敏感信息,并且应遵循安全最佳实践,例如定期更改秘密并为每个特定工作流程分配最小必需的权限。

要在所有 GitHub 仓库中使用同一个全局环境变量,需要将其添加到组织或用户的默认设置中。这样,在所有属于该组织或用户的仓库中,都可以通过 ${{ env.VARIABLE_NAME }} 形式引用它。

以下是如何在 GitHub 组织中添加全局环境变量的步骤:

在 GitHub 中转到您的组织页面。
单击右侧菜单栏中的“Settings”选项卡。
单击“Actions”选项卡。
在“Environment Variables”下单击“New Environment Variable”按钮。
输入变量名称和值,并选择要在其中设置变量的作用域(例如,“All repositories”)。
单击“Add”保存新变量。
请注意,在此示例中,您必须具有管理员访问权限才能更改组织的默认设置。如果您是个人用户,则只能更改自己的默认设置。

一旦您在组织或用户的默认设置中定义了全局环境变量,该变量将对所有仓库生效,包括新创建的仓库。但是,请注意,仅限于具有正确访问权限的工作

内置变量

GitHub 内置了一些用于 Actions 的环境变量和 Secrets,它们以 "GITHUB_" 开头。这些内置变量和 Secrets 可以在 GitHub Actions 中直接使用,而不需要进行额外的设置。

下面是一些常见的内置环境变量:

GITHUB_WORKSPACE:工作空间的路径。
GITHUB_REPOSITORY:仓库名称,格式为 {owner}/{repo}。
GITHUB_SHA:当前提交的 SHA(完整的 Git 提交哈希值)。
GITHUB_REF:Git 引用的名称(例如,分支的名称或标签的名称)。
GITHUB_EVENT_NAME:触发工作流程的事件名称。
GITHUB_HEAD_REF:如果这是一个合并请求,则是源分支的引用名称。
GITHUB_BASE_REF:如果这是一个合并请求,则是目标分支的引用名称。
除此之外,GitHub 还提供了一些内置 Secrets,具体列表如下:

GITHUB_TOKEN:可以用于访问仓库数据的授权令牌。
GITHUB_ACTION:当前运行的 Action 的名称。
GITHUB_ACTOR:触发该 Action 的用户或机器人的登录名。
GITHUB_WORKFLOW:当前运行的工作流程的名称。
GITHUB_RUN_ID:当前运行的工作流程的 ID。
GITHUB_RUN_NUMBER:当前运行的工作流程的编号。
这些内置的环境变量和 Secrets 非常有用,可以帮助您轻松地访问和管理仓库相关的信息。

所以是不允许手动添加以GITHUB_开头的变量

相关文章

网友评论

      本文标题:github action中Deploy keys和secret

      本文链接:https://www.haomeiwen.com/subject/nzyhjdtx.html