【问题标题】:Is it possible to use GitHub secrets inside my shell file?是否可以在我的 shell 文件中使用 GitHub 机密?
【发布时间】:2021-07-19 22:55:35
【问题描述】:

这是我在 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 帐户)来拉取和推送内容。

是否可以在我的build.sh 中使用 GitHub secrects?

【问题讨论】:

    标签: shell github github-actions


    【解决方案1】:

    是的,你只需要将它们分配给一个变量,比如

    env:
          ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
    run: build.sh
    

    然后你可以在shell脚本中引用ACCESS_TOKEN变量。

    【讨论】:

      【解决方案2】:

      当您在工作流程中设置 env doc here 时,它们会在您的容器化工作流程中设置为环境变量。

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

      示例:

      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
      
      

      【讨论】:

        猜你喜欢
        • 2020-04-28
        • 2015-07-23
        • 1970-01-01
        • 2013-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-17
        • 1970-01-01
        相关资源
        最近更新 更多