Я новичок в действиях GitHub, я хочу использовать PowerShell и сохранять вывод команды в файл в моем репозитории, но я не знаю, как это сделать правильно.
name: get hash
on: [workflow_dispatch]
jobs:
build:
name: Run Script
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- name: Script
run: ./script.ps1
shell: pwsh
и с помощью команды get-filehash я пытаюсь научиться создавать простой рабочий процесс Github, который сохраняет хэш файла в текстовый файл в моем репозитории.
это содержимое файла script.ps1
$wc = [System.Net.WebClient]::new()
$pkgurl = 'File on the web'
$FileHashSHA512 = Get-FileHash -Algorithm SHA512 -InputStream ($wc.OpenRead($pkgurl))
$FileHashSHA512.Hash > .\sss.txt
Я знаю, что это непрактично, но я хочу изучить основы рабочих процессов. команда работает на моем компьютере, но я просто не понимаю, как работают рабочие процессы Github, когда дело доходит до сохранения файлов в моем репозитории.
Я также хочу, чтобы эта команда работала в том же рабочем процессе:
Invoke-WebRequest -Uri $pkgurl -OutFile .\file.zip
но опять же не знаю как заставить рабочий процесс сохранять файл в корень репозитория.
поскольку они очень простые, я пытаюсь создать/записать файлы рабочего процесса самостоятельно, а не использовать готовые действия других людей.
Средство запуска действий — это просто ПК, который клонирует репозиторий и запускает в нем несколько команд. Поэтому, когда вы создаете новый файл в runner, вы должны добавить его в репозиторий в runner, создать коммит и отправить его в репозиторий на GitHub.
Это может помочь понять, что репозиторий в GitHub и бегун в действиях GitHub — это две совершенно разные вещи. Это не похоже на то, что средство запуска действий каким-то образом запускается «внутри» вашего репо.
Таким образом, один из способов сохранить файл — запустить:
git add fileyoujustcreated.txt
git commit -m "updating file"
git push
Вот пример действия GitHub, которое я использую для обновления файла в своем репозитории каждый раз при изменении содержимого:
Кроме того, вы можете редактировать файлы в GitHub с помощью REST API, чтобы вы могли вызывать:
curl \
-X PUT \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>"\
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/contents/PATH \
-d '{"message":"my commit message","committer":{"name":"Monalisa Octocat","email":"[email protected]"},"content":"bXkgbmV3IGZpbGUgY29udGVudHM = "}'
Или аналог в PowerRhell.
Вы можете использовать переменную ${{ GitHub.token }}
для аутентификации.
Видеть:
Конечно. Хотя, если вы изменяете только файлы, вы можете просто использовать git add .
для рекурсивного добавления всех измененных файлов. В этом случае вы должны убедиться, что у вас есть хороший файл .gitignore
.
Ваш рабочий процесс очень помог мне понять кучу вещей, спасибо за это, я использовал тот же шаблон для своего собственного рабочего процесса, и он был успешным. но мне интересно, как это на самом деле работает. потому что вы используете $readme = Get-Content -raw -path "README.md"
без использования - uses: actions/checkout@v3
. так что, если эти действия Github сначала не проверяют ваш репозиторий, как бегущая виртуальная машина, выполняющая ваше действие, узнает, что нужно получить содержимое файла Readme.md
из вашего репозитория? как вы сказали, это две разные вещи (виртуальная машина бегуна и репозиторий GitHub)
Файл, на который вы смотрите, представляет собой составное действие, а не полный рабочий процесс. Это называется здесь: github.com/jessehouwing/jessehouwing/blob/…
Спасибо, команда
git add fileyoujustcreated.txt
работает, только если я сохраню файл из скрипта PowerShell в корневую папку, верно? вот так$FileHashSHA512.Hash > .\sss.txt
, если бы я например сделал это$FileHashSHA512.Hash > .\folder1\folder2\sss.txt
то я должен был бы сделать этоgit add \folder1\folder2\fileyoujustcreated.txt
?