是否可以在我的 shell 文件中使用 GitHub 机密?

2024-04-28

这是我在 GitHub 存储库上的简单操作:

name: CI

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Get /my_account/my_infra
        run: |
          sudo mkdir /my_account
          sudo chmod -R 777 /my_account
          cd /my_account
          git clone https://github.com/my_account/my_infra

      - name: Get /my_account/my_repo
        run: |
          cd /my_account
          git clone https://github.com/my_account/my_repo

      - name: Run my build script
        run: |
          cd /my_account/my_infra
          ./build.sh /my_account/my_repo

由于 GitHub 不提供跨多个类似存储库重用操作的方法,因此我提出了创建一个基本存储库的想法,然后将该基本存储库与当前存储库一起下载,然后从该基本存储库运行自定义 shell 脚本,传递我当前的repo 作为参数。

这很完美。这样我就可以在许多类似的存储库中重复使用我的基础存储库。我可以重用近 500 行构建脚本,而不是为 50 个存储库重复自己(这意味着 25000 行 CI/CD 代码)。

但是,现在我需要访问一些资源(例如登录我的 docker hub 帐户)来拉取和推送内容。

是否可以在我的应用程序中使用 GitHub 机密build.sh?


当你设置env在您的工作流程中,doc here https://docs.github.com/en/actions/reference/environment-variables,它们被设置为容器化工作流程中的环境变量。

这意味着如果您在存储库中设置了秘密,可以在下面找到settings=> secrets然后将其分配给env在您的工作流程中,然后可以在您的build.sh

example:

name: CI

on:
  push:
    branches: [ main ]

env:
  super_secret: ${{ secrets.my_secret }}

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Get /my_account/my_infra
        run: |
          sudo mkdir /my_account
          sudo chmod -R 777 /my_account
          cd /my_account
          git clone https://github.com/my_account/my_infra

      - name: Get /my_account/my_repo
        run: |
          cd /my_account
          git clone https://github.com/my_account/my_repo

      - name: Run my build script
        run: |
          cd /my_account/my_infra
          ./build.sh /my_account/my_repo

在这种情况下你的build.sh可以做类似的事情:

#!/bin/bash

npm run build $super_secret

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在我的 shell 文件中使用 GitHub 机密? 的相关文章

  • 图表贡献者为空

    我在 github 上有几个项目 但其中一些项目的贡献者图是空的 即使我的 gitconfig 设置了名称和电子邮件 https github com jlengrand batchWaterMarking graphs contribut
  • 使用与后期步骤中的 Shell 脚本中的克隆相同的 http git 凭据

    我想要自动化我们的发布过程 并且我有一个 Maven 项目的以下 Jenkins 构建作业 使用配置的 Jenkins 凭证 用户名 密码 克隆 Git 存储库 执行一些 Maven 命令以进行构建 配置一个后步骤来执行一些额外的 Git
  • 在开始工作之前忘记在 GitHub 上进行 fork

    假设我将 C 公司的 X 项目存储库从 github 克隆到我的本地计算机 我在本地为自己创建一个分支 对其进行一些工作并在本地提交到我的分支 现在我想向 C 公司发出拉取请求 但我意识到我应该在 gitub 上进行分叉以创建我自己的项目
  • git推送错误“致命:无法找到'https'的远程帮助程序”

    我添加了远程源 例如 git remote add origin https github com username repo git 当我推送 git 存储库时 出现以下错误 git push u origin master fatal
  • Bash 'printf' 相当于命令提示符?

    我希望在 Windows 命令提示符下将一些字符串输入通过管道传输到一个小型 C 程序 在 bash 中我可以使用 printf AAAAA x86 x08 x04 xed program 本质上 我需要一些东西来转义命令提示符中的那些十六
  • Bash 完成脚本在某些参数选项后完成文件路径

    我正在为命令行工具编写 bash 完成脚本 plink local cur prev opts COMPREPLY cur COMP WORDS COMP CWORD prev COMP WORDS COMP CWORD 1 opts 1
  • 如何使用 Github Pages 分支正确提交到存储库中

    我有一个问题 情况基于gh pages https pages github com 我的项目使用预处理器和其他困难的人员 因此 我的项目结构如下所示 主分支 src node modules public js css etc index
  • 使用 ssh 身份验证的 IntelliJ 设置存储库

    我正在尝试使用设置存储库Intellij 2017 1 中的功能 但我想使用 ssh url 作为存储库而不是 https 我不喜欢处理那些在第一次创建后无法复制的个人访问令牌 所以我尝试使用 ssh 但当我单击 覆盖本地 时 出现以下错误
  • 使用 sed 将 old-link-url 替换为 new-link-url

    我正在 bash 中编写一个脚本 将 old link url 替换为 new link url 我的问题是 sed 由于斜杠而无法替换 url 如果我只输入一些文字就可以了 my code sed e s old link new lin
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 使用 cURL 从 shell 发布 4GB 文件

    我尝试将文件大小为 4GB 的文件发布到 REST API cURL 不会上传此大小的文件 而是 POST 内容长度为 0 的文件 curl v i d work large png H Transfer Encoding chunked
  • 错误:GitHub 目前无法显示这么大的文件 - 但该文件只有 1.06 MB [已关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我通过两种不同的方式将 HTML 文件上传到 GitHub 存储库 拖放以及使用终端上的 Git 添加 提交 推送 在这两种情况下
  • 如何仅将整个嵌套目录中的头文件复制到另一个目录,在复制到新文件夹后保持相同的层次结构

    我有一个目录 其中有很多头文件 h 和其他 o 和 c 文件以及其他文件 这个目录里面有很多嵌套的目录 我只想将头文件复制到一个单独的目录 并在新目录中保留相同的结构 cp rf oldDirectory newDirectory将复制所有
  • 从 bash 脚本运行节点

    很简单 我正在尝试使用 cron 自动运行 nodejs 脚本 但是脚本本身似乎无法运行该文件 我的脚本很简单 usr bin env node node var node assets js update js 但是 在运行此命令时 它返
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端
  • 是否有可能在linux中找到包含特定文本的文件?

    考虑这种情况 我在文件夹 Example 下有很多文件 如果我需要找到一个包含特定短语 如 Class Example 的文件 我该如何使用 Linux shell 来做到这一点 linux中有类似 定位 的函数可以做到这一点吗 Thank
  • 如何在fish shell脚本中获取程序名称?

    在 bash 中 与在 ruby 中一样 程序名称由 0 给出 鱼里有什么 如果有必要 我可以执行以下操作 set PROGRAM ps no header o args p self egrep o S 2 但我确信程序名称必须已经在某个
  • 如何在environment.yml中安装CRAN包

    我正在使用 miniconda 来管理数据科学包的安装 这是我现在已经建立的工作流程 所以我希望它也能在这种情况下工作 我也认为它可以工作 因为它应该在这样的情况下有所帮助 比纯 python 需要更多的依赖项 我想安装pythonCDT工
  • 无法在cordova项目中安装插件

    我面临一个大问题 Unable to install the phonegap plugins在我的科尔多瓦项目中 实际上昨天它仍然工作正常 现在 每当我尝试在我的 cordova 项目中使用 CLI 添加任何 cordova 插件时 我收

随机推荐