使用 Github 中的 Actions 进行测试时,是不会显示 Secrets 值的,这里提供一些解决思路:

一、使用 base64编码对 Secrets 值加密

保存以下代码为.yml文件,放在这个位置.github/workflows/,然后Actions,选择All workflowS下的Recovering secrets,点击run workflow,如图,复制代码进行base64解码。

name: Recovering secrets 

# Assumption:
# You've created the following GitHub secrets in your repository:
# MY_CLIENT_ID - encode/decode with base64 - useful for private repositories

on:
  push:
  workflow_dispatch:

jobs:
  base64:
    name: Recover With Base64
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v3
      - env:
          DOMAIN: ${{secrets.DOMAIN}}
          USERNAME: ${{secrets.USERNAME1}}
          PASSWD: ${{secrets.PASSWD1}}
          PUSH_KEY: ${{secrets.PUSH_KEY}}
        run: |
          echo "DOMAIN (base64)    = $(echo ${DOMAIN} | base64)"
          echo "PASSWD1 (base64) = $(echo ${PASSWD} | base64)"
          echo "PUSH_KEY (base64) = $(echo ${PUSH_KEY} | base64)"
          echo "USERNAME1 (base64) = $(echo ${USERNAME} | base64)"
          echo "Copy the above value, and then execute locally:"
  

二、输出到当前 Repository 中

保存以下代码为.yml文件,放在这个位置.github/workflows/,然后Actions,选择All workflowS下的KeepActionAlive,点击run workflow,如图。

name: 'KeepActionAlive'

on:
  workflow_dispatch:

jobs:
  auto_renew:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout codes'
        uses: actions/checkout@v2
      
      - name: 'Avoid Github Workflow being suspended'
        run: echo ${{secrets.PASSWD1}} > UUID.txt
      
      - name: 'Commit Files'
        id: commit
        run: |
          git config --local user.email "[email protected]"
          git config --local user.name "GitHub Action"
          git add .
          git diff --quiet && git diff --staged --quiet || git commit -am 'Keep Github Action Alive XD'
          echo ::set-output name=status::success
           
      - name: 'GitHub Push'
        if: steps.commit.output.status != 'success'
        uses: ad-m/[email protected]
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          branch: ${{ github.ref }}

三、通过第三方推送服务

保存以下代码为.sh文件,写一个workflow来执行该shell文件,查看第三方推送服务。

#!/bin/bash
PATH="/usr/local/bin:/usr/bin:/bin"

date=$(date '+%Y-%m-%d %H:%M:%S')
if [ "${PUSH_KEY}" == "" ]; then
    push_status='"未配置推送 PUSH_KEY"'
else
    text="签到结果"
    desp="站点: ${DOMAIN}"+$'\n\n'+"用户名: ${USERNAME}"+$'\n\n'+"${login_text}"+$'\n\n'+"${checkin_text}"+$'\n\n'
    push=$(curl -s -X POST "http://www.pushplus.plus/send" -d token=${PUSH_KEY} -d title="${text}" -d content="${desp}")
    push_code=$(echo ${push} | jq '.code')

    if [ ${push_code} == 200 ]; then
        push_status='"签到结果推送成功"'
    else
        push_status='"签到结果推送失败"'
    fi
fi

参考文档

  1. 利用 openssl 安全地恢复出 GitHub Actions 中的 secrets 原始明文值
  2. 如何从 GitHub Actions 中恢复 Secret

本文标签:笔记GitHub日常随笔