#github #github-actions
#github #github-действия
Вопрос:
У меня есть репозиторий github, содержащий документацию по api. При слиянии с master я хочу использовать действия github для выполнения двух вещей:
- «Сборка» — обновите index.html файл с использованием скрипта python
- «Развернуть» — синхронизировать содержимое репозитория с S3
Вот (упрощенная) структура репозитория:
.github/
|-- workflows/
|-- main.yml
|-- build.py
dist/
|-- index.html
build.py является ли скрипт python, который будет «строить» шаблон, заменяя некоторые переменные из dist/index.html . Затем содержимое папки dist синхронизируется с AWS S3 с помощью этого действия github:
name: Upload Website
on:
push:
branches:
- master
jobs:
# updates index.html:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Run a one-line script
run: python ./.github/workflows/build.py
...
- name: commit changed files
run: git commit -m "Auto adding config files"
- name: fetch from master
run: git fetch origin master
- name: push code to master
run: git push origin HEAD:master
# deploys latest version to s3:
deploy:
runs-on: ubuntu-latest
steps:
uses: actions/checkout@v1
- name: Deploy static site to S3 bucket
run: aws s3 sync ./dist <BUCKET DESTINATION>
Часть развертывания отлично работает сама по себе, но у меня возникли проблемы с частью сборки. Приведет ли это к бесконечному циклу? Действие настроено на запуск при push to master, но действие также отправляет обновленный шаблон в master. Если да, как я могу этого избежать?
Я следую этому примеру для части сборки.
Комментарии:
1. какова цель части сборки для вас?
Ответ №1:
При наличии ветки push to master произойдет бесконечный цикл. И будет запущена часть сборки.
В части сборки он снова нажмет на мастер, так что произойдет бесконечный цикл.
Удалите эту часть со стадии сборки:
- name: commit changed files
run: git commit -m "Auto adding config files"
- name: fetch from master
run: git fetch origin master
- name: push code to master
run: git push origin HEAD:master
Комментарии:
1. Я вижу — значит, это все равно обновит файл в главной ветке? Будет ли это отражено на github?
2. Я не вижу изменений в ветке master — может быть, хорошим подходом является использование второй ветки для развертывания?
3. вы можете перейти
HEAD:master
на другой и повторить попытку, какова цель этой части