Hos*_*lah 10 shell github github-actions
这是我在 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
Run Code Online (Sandbox Code Playgroud)
由于 GitHub 不提供跨多个类似存储库重用操作的方法,因此我提出了创建一个基本存储库的想法,然后将该基本存储库与当前存储库一起下载,然后从该基本存储库运行自定义 shell 脚本,传递我当前的repo 作为参数。
这很完美。这样我就可以在许多类似的存储库中重复使用我的基础存储库。我可以重用近 500 行构建脚本,而不是为 50 个存储库重复自己(这意味着 25000 行 CI/CD 代码)。
但是,现在我需要访问一些资源(例如登录我的 docker hub 帐户)来拉取和推送内容。
是否可以在我的 中使用 GitHub secrets build.sh?
Ber*_*nho 10
当您env在工作流程中进行设置时,请在此处进行设置,它们将被设置为容器化工作流程中的环境变量。
这意味着,如果您在存储库中设置了一个秘密,可以在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
Run Code Online (Sandbox Code Playgroud)
在这种情况下你build.sh可以这样做:
#!/bin/bash
npm run build $super_secret
Run Code Online (Sandbox Code Playgroud)
是的,你只需要把它们分配给一个变量,比如
env:
ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
run: build.sh
Run Code Online (Sandbox Code Playgroud)
然后你可以在shell脚本中引用ACCESS_TOKEN变量。
| 归档时间: |
|
| 查看次数: |
8839 次 |
| 最近记录: |