API Github для шифрования нового токена и обновления секрета с помощью зашифрованного токена в yaml-скрипте рабочего проPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 API Github для шифрования нового токена и обновления секрета с помощью зашифрованного токена в yaml-скрипте рабочего про

Сообщение Anonymous »

Я пытаюсь заменить токен доступа, хранящийся как секрет в секретах и ​​переменных Github, с помощью действий Github, но не смог найти способ зашифровать новый токен доступа с помощью libsodium (https://docs.github.com/ en/rest/actions/secrets?apiVersion=2022-11-28#create-or-update-an-organization-secret). Ниже приведен сценарий рабочего процесса, который я создал, и в настоящее время я застрял в точке, где id — encrypt_access_token. Я создал сценарий для обработки шифрования, но не нашел способа разработать сценарий на Python. Ссылку на использование Javascript можно найти в секретном шифровании API GitHub с помощью libsodium в Node.js: UnhandledPromiseRejectionWarning: Ошибка: неправильный размер открытого ключа. У кого-нибудь есть опыт в этом?

Код: Выделить всё

on:
workflow_dispatch:
schedule:
- cron: '0 0 * * *'

jobs:
refresh-token:
runs-on: [self-hosted, 2-core]

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Set Up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'

- name: Refresh OAuth Token
run: |
curl --request POST \
--url https://xxxx/oauth/token \
--header "Content-Type: application/x-www-form-urlencoded" \
--data "client_id=${{ secrets.CLIENT_ID }}" \
--data "client_secret=${{ secrets.CLIENT_SECRET }}" \
--data "refresh_token=${{ secrets.REFRESH_TOKEN }}" \
--data "grant_type=client_credentials" \
--output response.json

echo "NEW_ACCESS_TOKEN=$(cat response.json | jq -r '.access_token')" >> $GITHUB_ENV

- name: Get GitHub Repository Public Key (for secret encryption)
id: get_public_key
run: |
curl -s -H "Authorization: token ${{ secrets.GH_PAT }}" \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${{ github.repository }}/actions/secrets/public-key \
> public_key.json
echo "KEY_ID=$(cat public_key.json | jq -r '.key_id')" >> $GITHUB_ENV
echo "PUBLIC_KEY=$(cat public_key.json | jq -r '.key')" >> $GITHUB_ENV

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pynacl

- name: Encrypt the New Access Token
id: encrypt_access_token
run: |
echo "ENCRYPTED_ACCESS_TOKEN=$(python secret_encryptor.py)" >> $GITHUB_ENV

- name: Update the Access Token Secret Using GitHub API
run: |
curl -X PUT -H "Authorization: token ${{ secrets.GH_PAT }}" \
-H "Content-Type: application/json" \
-d '{"encrypted_value":"'"${{ env.ENCRYPTED_ACCESS_TOKEN }}"'","key_id":"'"${{ env.KEY_ID }}"'"}' \
https://api.github.com/repos/${{ github.repository }}/actions/secrets/ACCESS_TOKEN
скрипт Python, использующий libsodium для шифрования нового токена и обновления секрета, хранящегося в Github

Подробнее здесь: https://stackoverflow.com/questions/790 ... en-in-gith
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»