Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/raojinlin/env-from-mr
🐧 从GitLab Merge Request描述中提取环境变量
https://github.com/raojinlin/env-from-mr
gitlab gitlab-auto-devops gitlab-ci gitlab-ci-cd gitlab-ci-pipeline go
Last synced: 26 days ago
JSON representation
🐧 从GitLab Merge Request描述中提取环境变量
- Host: GitHub
- URL: https://github.com/raojinlin/env-from-mr
- Owner: raojinlin
- Created: 2023-10-26T06:52:24.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2023-10-26T13:22:58.000Z (about 1 year ago)
- Last Synced: 2024-06-20T20:39:00.939Z (6 months ago)
- Topics: gitlab, gitlab-auto-devops, gitlab-ci, gitlab-ci-cd, gitlab-ci-pipeline, go
- Language: Go
- Homepage:
- Size: 12.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# env-from-mr
`env-from-mr`是一个命令行工具,用于从GitLab Merge Request的描述中提取`env`代码块并其打印为导出环境变量的格式。可以在Merge Request中为Pipeline脚本动态地提供环境变量。
## 安装
你可以通过以下方式获取`env-from-mr`:
```shell
go install github.com/raojinlin/env-from-mr
```## 使用
env-from-mr 接受以下参数:- `mr-iid`:Merge Request的内部ID(如果没有指定,取CI_MERGE_REQUEST_IID环境变量)。
- `pid`:GitLab项目的ID(必需)。
- `token`:GitLab访问令牌(必需)。
- `url`:GitLab的地址(必需)。示例:
打印描述中的环境变量
```bash
$ env-from-mr -mr-iid 123 -pid 456 -token yourtoken -url yourgitlaburl
export ENV_A='a'
export SVC_A_HOST='localhost'
```将描述中的环境变量导出
```bash
$ eval $(env-from-mr -mr-iid 123 -pid 456 -token yourtoken -url yourgitlaburl)
$ echo $ENV_A
a
$ echo $SVC_A_HOST
localhost
```在Pipeline中使用
```yaml
pages-job:
stage: deploy
script:
- eval $(env-from-mr -mr-iid $CI_MERGE_REQUEST_IID -pid $CI_PROJECT_ID -url $CI_SERVER_URL -token yourtoken)
- echo $ENV_A
- echo $SVC_A_HOST
```## 工作流程
1. 获取指定Merge Request的描述。
2. 在描述中查找env代码块并提取其中的环境变量内容。
3. 使用eval命令导出提取的环境变量,可以在后续Pipeline步骤中使用。## 注意事项
- 请确保你的GitLab访问令牌具有足够的权限来访问项目和Merge Request信息。
- 该工具需要连接到GitLab的API,因此需要网络连接。