如何在 GitHub Actions 时使用 secretKey

hefunghefung
3 分钟阅读
#开发笔记
如何在 GitHub Actions 时使用 secretKey

如何在 GitHub Actions 时使用 secretKey

问题

当我参考这篇,使用 Github Action 自动部署的时候发现要使用 Secret Key 去使用 VSSUE 评论功能,我就犯愁了。

直接写在 config 里虽说并没有谁会盗用(吧 😃),但显然不太安全。这是原 workflow 文件中下面这段启发了我。其他的变量难道也可以这样传到服务器上?

yaml
<span class="token key atrule">with</span><span class="token punctuation">:</span>
  <span class="token key atrule">ACCESS_TOKEN</span><span class="token punctuation">:</span> $<span class="token punctuation">{</span><span class="token punctuation">{</span> secrets.ACCESS_TOKEN <span class="token punctuation">}</span><span class="token punctuation">}</span>

解决方法

果然 Github 早就帮我们想好了解决办法。

简单说就是在对应 repo 的 Secrets 区域里输入。

Screenshot 2020-03-23 13.08.05.png

注意⚠️:上图中画圈的位置的 A, 正确的英语语法是 AN, 不过这篇教程统一用 A, 和下面的

text
${{ secrets.THIS_IS_A_EXAMPLE }}

也得一致!

英语好的朋友别嘲讽在下 😵

再在 actions 里用

text
${{ secrets.YOURKEY }}

去取,通过 env 存入服务器的环境变量。就可以用啦 👻。

做个实验。main.yaml 里加上这样一段。

yaml{2,3,4}
- name: Pass Variables
  env:
    EXAMPLE: ${{ secrets.THIS_IS_A_EXAMPLE }}
    NOTEXIST: ${{ secrets.NOT_EXIST }}
  run: echo 'try to show secret 😉' && echo EXAMPLE && echo NOT_EXIST

输出下图这样的结果。github 把结果加密了,不过可以发现,有设置的 THIS_IS_A_EXAMPLE 和没有设置的 NOT_EXISTecho 出来是不一样的。由此可见,已经设置成功了。

Screenshot 2020-03-23 13.11.39.png

实施

直接试试吧。

yaml
<span class="token punctuation">-</span> <span class="token key atrule">name</span><span class="token punctuation">:</span> Build
  <span class="token key atrule">env</span><span class="token punctuation">:</span>
    <span class="token key atrule">VSSUEID</span><span class="token punctuation">:</span> $<span class="token punctuation">{</span><span class="token punctuation">{</span> secrets.VSSUEID <span class="token punctuation">}</span><span class="token punctuation">}</span>
    <span class="token key atrule">VSSUESECRET</span><span class="token punctuation">:</span> $<span class="token punctuation">{</span><span class="token punctuation">{</span> secrets.VSSUESECRET <span class="token punctuation">}</span><span class="token punctuation">}</span>
  <span class="token key atrule">run</span><span class="token punctuation">:</span> npm install <span class="token important">&amp;&amp;</span> npm run build

npm run build 之前加上环境参数那一段。

js
  <span class="token literal-property property">vssueConfig</span><span class="token operator">:</span> <span class="token punctuation">{</span>
    <span class="token literal-property property">platform</span><span class="token operator">:</span> <span class="token string">'github'</span><span class="token punctuation">,</span>
    <span class="token literal-property property">owner</span><span class="token operator">:</span> <span class="token string">'xyyolab'</span><span class="token punctuation">,</span>
    <span class="token literal-property property">repo</span><span class="token operator">:</span> <span class="token string">'blog'</span><span class="token punctuation">,</span>
    <span class="token literal-property property">clientId</span><span class="token operator">:</span> process<span class="token punctuation">.</span>env<span class="token punctuation">.</span><span class="token constant">VSSUEID</span><span class="token punctuation">,</span>
    <span class="token literal-property property">clientSecret</span><span class="token operator">:</span> process<span class="token punctuation">.</span>env<span class="token punctuation">.</span><span class="token constant">VSSUESECRET</span>
  <span class="token punctuation">}</span>

再在 config 内用 node 的语法去环境参数取就 OK 啦!

结果是评论功能可以使用了呀 😍。

Screenshot 2020-03-23 13.36.35.png

  • 完整的 main.yaml 请参考我的 Github

看起来一个小步骤但解决了大问题呢 💃。


:::tip
本文作者 hefung 🐸
:::

评论

暂无评论。

欢迎到原文中评论及订阅。