#github #continuous-integration #github-actions
#github #непрерывная интеграция #github-действия
Вопрос:
Я использую составные действия GitHub, где я хочу проверить текущее имя ветки в некоторых шагах составного действия и принять решение по этому условию.
например
name: main
on:
push:
repository_dispatch:
types:
- manual-trigger
jobs:
build:
runs-on: windows-latest
steps:
- name: Checkout project
uses: actions/checkout@v2
- name: Fetch full project
run: git fetch --prune --unshallow
- name: Restore packages
run: nuget restore -ConfigFile "../Build/Nuget.config"
working-directory: Projects
env:
# ARTIFACTORY_PASSWORD is read by the nuget.config credentials section
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
- name: Composite Action - To build solution and execute SonarScanner
uses: ./Build/build-and-sonarscanner-execution
Где в составном действии — у меня есть проверка, что Sonar-Scanner должен выполняться только для ветки разработки, иначе будет выполняться только сборка проекта.
name: build-and-sonarscanner-execution
description: "Build the solution using msbuild and SonarScanner execution"
inputs:
# Set of parameters
runs:
using: "composite"
steps:
- name: Restore packages
run: nuget restore -ConfigFile "../Build/Nuget.config"
working-directory: ${{ inputs.solution-directory }}
env:
# ARTIFACTORY_PASSWORD is read by the nuget.config credentials section
ARTIFACTORY_PASSWORD: ${{ inputs.artifactory-password }}
shell: pwsh
- name: Install dotnet-sonarscanner package
if: {{ github.ref == 'ref/head/develop' }} This is the line where it is throwing syntax error as 'if' is not allowed under steps
run: dotnet tool install --global dotnet-sonarscanner --version 4.10.0
shell: pwsh
Здесь и здесь приведены ссылки, которые я искал, прежде чем применять это условие if здесь. И это работает совершенно нормально, если я применяю этот main.yml, но в файле составного действия yaml это не работает.
Может кто-нибудь, пожалуйста, поделиться тем, чего мне здесь не хватает?
Комментарии:
1.
if
не поддерживается в действиях composite run steps, толькоrun
,shell
,name
,id
,env
иworking-directory
, см. Документацию , и эта проблема GitHub , в которой упоминается «мы не поддерживаем настройку условий».2. Спасибо @BenjaminW. В случае, если это правильный канал, не могли бы вы сообщить мне, есть ли какой-либо другой подход, который я могу использовать для достижения того, что я объяснил?
3. Вы можете сделать это условием на
run
шаге; Я не знаю PowerShell, но в Bash это будет что-то вродеrun: "[[ $GITHUB_REF == 'ref/head/develop' ]] amp;amp; <your command>"
Ответ №1:
Приведенный выше синтаксис if: ${{ ... }}
должен быть в порядке, но кажется, что составные действия пока не поддерживают условия: https://github.com/actions/runner/blob/main/docs/adrs/0549-composite-run-steps.md
Обходной путь, предложенный Бенджамином, работает для меня:
run: |
if [[ "${{inputs.myVar}}" != "" ]]; then
aws ...
fi
exit 0
shell: bash
Комментарии:
1. Теперь это поддерживается: docs.github.com/en/actions/creating-actions /…
Ответ №2:
Попробуйте следующий синтаксис:
if: ${{ github.ref == 'refs/heads/xxxx' }}