Инструменты пользователя

Инструменты сайта


develop:gh_actions

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
develop:gh_actions [2024/02/11 06:45]
admin
develop:gh_actions [2024/02/19 03:46] (текущий)
admin
Строка 140: Строка 140:
  
 ==== Примеры ==== ==== Примеры ====
- 
  
 <details> <details>
Строка 148: Строка 147:
 Настроено несколько окружений, содержащих свой набор переменных, задаются в настройках репозитория\\ Настроено несколько окружений, содержащих свой набор переменных, задаются в настройках репозитория\\
  
-"ci-production.yml"+ 
 + 
 +"ci-production.yml"\\ 
 +Триггеримся на пуш тега с формате "release-"\\ 
 +Нюанс в том что сработает пуш этого тега в любую ветку а выпуск релиза предполагается наверно из мастера\\ 
 <code bash> <code bash>
 name: ci-production name: ci-production
-on: workflow_dispatch +on: 
- +  push: 
-#on: +    tags: 
- push: +      - 'release-*'
-   tags: +
-     - '*-release-*'+
  
 jobs: jobs:
Строка 177: Строка 179:
     secrets: inherit     secrets: inherit
 </code> </code>
 +
 +
 +
 +Для запуска тестов делаем flow с триггером на пуш в любую ветку кроме "master", в него как раз предполагается пуш релизного тега, иначе запускаются оба флоу \\
 +
 +<code bash>
 +name: ci-test
 +on:
 +  push:
 +    branches:
 +      - '**'
 +      - '!master'
 +
 +jobs:
 +  build:
 +    uses: ./.github/workflows/build.yml
 +    secrets: inherit
 +
 +  deploy-stage:
 +    needs: build
 +    uses: ./.github/workflows/deploy.yml
 +    with:
 +      environment: stage
 +    secrets: inherit
 +</code>
 +
 +
  
 "build.yml" "build.yml"
 <code bash> <code bash>
 name: build name: build
- 
 on: on:
   workflow_call:   workflow_call:
Строка 219: Строка 247:
         run: |         run: |
           echo 'DOCKER_TAGS<<EOF' >> $GITHUB_ENV           echo 'DOCKER_TAGS<<EOF' >> $GITHUB_ENV
-          if [ "$GITHUB_REF_SLUG" == "master" ] || [ "$GITHUB_REF_SLUG" ="main" ]; then +          # В этой переменной последний тег, если нет собственного то в нем будет название ветки 
-            echo "registry.myapp.io/myapp:main-$GITHUB_SHA_SHORT" +          if [[ "$GITHUB_REF_SLUG" ="release-".* ]]; then 
-            echo "registry.myapp.io/myapp:latest"+            echo "registry.myapp.ru/myapp:$GITHUB_REF_SLUG-$GITHUB_SHA_SHORT" 
 +            echo "registry.myapp.ru/myapp:latest"
           else           else
-            echo "registry.myapp.io/myapp:branch-$GITHUB_REF_SLUG-$GITHUB_SHA_SHORT"+            echo "registry.myapp.ru/myapp:branch-$GITHUB_REF_SLUG-$GITHUB_SHA_SHORT"
           fi >> $GITHUB_ENV           fi >> $GITHUB_ENV
           echo 'EOF' >> $GITHUB_ENV           echo 'EOF' >> $GITHUB_ENV
Строка 231: Строка 260:
         uses: docker/login-action@v3         uses: docker/login-action@v3
         with:         with:
-          registry: registry.myapp.io+          registry: registry.myapp.ru
           username: ${{ secrets.DOCKER_USERNAME }}           username: ${{ secrets.DOCKER_USERNAME }}
           password: ${{ secrets.DOCKER_PASSWORD }}           password: ${{ secrets.DOCKER_PASSWORD }}
Строка 246: Строка 275:
           tags: ${{ env.DOCKER_TAGS }}           tags: ${{ env.DOCKER_TAGS }}
 </code> </code>
 +
 +
  
 "deploy.yml"\\ "deploy.yml"\\
Строка 252: Строка 283:
 <code bash> <code bash>
 name: deploy name: deploy
- 
 on: on:
   workflow_call:   workflow_call:
Строка 273: Строка 303:
       - uses: actions/checkout@v4       - uses: actions/checkout@v4
  
 +      # Для того чтобы задеплоить именно эту версию образа, чтобы и для тестов тоже работало
 +      # Указываем в докер-компоуз тег образа который мы добавляли на прошлом шаге 
 +      - name: Inject GitHub variables
 +        uses: rlespinasse/github-slug-action@v4
 +
 +      - name: Get docker-image tags
 +        run: |
 +          echo 'DOCKER_TAGS<<EOF' >> $GITHUB_ENV
 +          if [[ "$GITHUB_REF_SLUG" =~ "release-".* ]]; then
 +            echo "$GITHUB_REF_SLUG-$GITHUB_SHA_SHORT"
 +          else
 +            echo "branch-$GITHUB_REF_SLUG-$GITHUB_SHA_SHORT"
 +          fi >> $GITHUB_ENV
 +          echo 'EOF' >> $GITHUB_ENV
 +          cat $GITHUB_ENV
 +
 +      # Далее добавить еще один replace в компоуз
       - name: Set secrets & environment       - name: Set secrets & environment
         run: |         run: |
Строка 306: Строка 353:
 </code> </code>
 </details> </details>
 +
  
  
develop/gh_actions.1707633950.txt.gz · Последнее изменение: 2024/02/11 06:45 — admin