Действия Github — как создавать и развертывать при push to master

#github #github-actions

#github #github-действия

Вопрос:

У меня есть репозиторий github, содержащий документацию по api. При слиянии с master я хочу использовать действия github для выполнения двух вещей:

  1. «Сборка» — обновите index.html файл с использованием скрипта python
  2. «Развернуть» — синхронизировать содержимое репозитория с 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 на другой и повторить попытку, какова цель этой части