diff --git a/.github/ISSUE_TEMPLATE/qa-task.yml b/.github/ISSUE_TEMPLATE/qa-task.yml new file mode 100644 index 00000000..7ef59707 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/qa-task.yml @@ -0,0 +1,41 @@ +name: QA Task +description: QA용 이슈 템플릿입니다.(기존 JIRA의 이슈와 연동됩니다) +title: "qa] " +labels: ["🛠️ qa"] +body: + - type: input + id: parentKey + attributes: + label: '🎟️ 작업 (Ticket Number)' + description: '연동할 작업의 Ticket Number를 기입해주세요' + placeholder: 'BOOK-00' + validations: + required: true + + - type: input + id: description + attributes: + label: "🛠️ qa 설명" + description: "어떤 qa 항목에 대한 수정사항인지 명확히 작성해주세요" + validations: + required: true + + - type: textarea + id: tasks + attributes: + label: "🔧 수정할 작업 목록" + description: "수정해야 할 항목들을 체크리스트로 작성해주세요" + value: | + - [ ] .. + validations: + required: true + + - type: input + id: links + attributes: + label: "🔗 참고 링크" + description: "관련 문서, 스크린샷, 로그 등이 있다면 첨부해주세요 (선택)" + placeholder: "https://..." + validations: + required: false + diff --git a/.github/workflows/PR_Label_Assign.yml b/.github/workflows/PR_Label_Assign.yml index 1b6e15d6..3677810c 100644 --- a/.github/workflows/PR_Label_Assign.yml +++ b/.github/workflows/PR_Label_Assign.yml @@ -10,43 +10,49 @@ on: jobs: label-pr: runs-on: ubuntu-latest - - # 기본 GITHUB_TOKEN 대신 PAT을 쓰기 때문에 permissions 블록은 생략 가능 steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - token: ${{ secrets.PAT_TOKEN }} - - name: Label PR based on title - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: github-token: ${{ secrets.PAT_TOKEN }} script: | const title = context.payload.pull_request.title || ""; + + console.log(`📋 PR Title: ${title}`); const labelMap = [ { pattern: /^feat:/i, label: '✨ feat' }, { pattern: /^fix:/i, label: '🐞 fix' }, { pattern: /^refactor:/i, label: '🔨 refactor' }, { pattern: /^docs:/i, label: '📃 docs' }, - { pattern: /^chore:/i, label: '⚙️ chore' }, + { pattern: /^chore:/i, label: '⚙️ chore' }, { pattern: /^test:/i, label: '✅ test' }, - { pattern: /^style:/i, label: '🎨 style' } + { pattern: /^style:/i, label: '🎨 style' }, + { pattern: /^qa:/i, label: '🛠️ qa' } ]; + // 매칭되는 라벨 찾기 const labelsToAdd = labelMap .filter(entry => entry.pattern.test(title)) .map(entry => entry.label); if (labelsToAdd.length > 0) { - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - labels: labelsToAdd - }); - core.info(`Added labels: ${labelsToAdd.join(', ')}`); + console.log(`✅ Adding labels: ${labelsToAdd.join(', ')}`); + + try { + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + labels: labelsToAdd + }); + + console.log(`✅ Successfully added labels: ${labelsToAdd.join(', ')}`); + } catch (error) { + console.error(`❌ Failed to add labels: ${error.message}`); + core.setFailed(`Failed to add labels: ${error.message}`); + } } else { - core.info('No matching labels found for PR title.'); + console.log('⚠️ No matching labels found for PR title.'); + console.log('💡 Tip: Use prefixes like "feat:", "fix:", "qa:", etc.'); } diff --git a/.github/workflows/close-jira-issue.yml b/.github/workflows/close-jira-issue.yml index a72b0cb1..3b09372e 100644 --- a/.github/workflows/close-jira-issue.yml +++ b/.github/workflows/close-jira-issue.yml @@ -1,4 +1,4 @@ -name: Close Jira issue +name: Close Jira Issue on: issues: @@ -8,7 +8,6 @@ on: jobs: close-issue: runs-on: ubuntu-latest - steps: - name: Login to Jira uses: atlassian/gajira-login@v3 @@ -20,22 +19,90 @@ jobs: - name: Extract Jira issue key from GitHub issue title id: extract-key run: | - ISSUE_TITLE="${{ github.event.issue.title }}" - JIRA_KEY=$(echo "$ISSUE_TITLE" | grep -oE '[A-Z]+-[0-9]+' || true) - echo "JIRA_KEY=$JIRA_KEY" >> $GITHUB_ENV + ISSUE_TITLE=$(cat <<'EOF' + ${{ github.event.issue.title }} + EOF + ) + + echo "📋 Issue Title: $ISSUE_TITLE" + + # 대괄호 안의 Jira 키 우선 추출 (예: [BOOK-123] 작업명) + JIRA_KEY=$(echo "$ISSUE_TITLE" | grep -oP '(?<=\[)[A-Z]+-\d+(?=\])' | head -1) + + # 없으면 일반 패턴으로 추출 + if [ -z "$JIRA_KEY" ]; then + JIRA_KEY=$(echo "$ISSUE_TITLE" | grep -oP '\b[A-Z]+-\d+\b' | head -1) + fi + + if [ -z "$JIRA_KEY" ]; then + echo "⚠️ No Jira key found in issue title" + echo "JIRA_KEY=" >> $GITHUB_ENV + echo "found=false" >> $GITHUB_OUTPUT + else + echo "✅ Found Jira key: $JIRA_KEY" + echo "JIRA_KEY=$JIRA_KEY" >> $GITHUB_ENV + echo "found=true" >> $GITHUB_OUTPUT + fi + + - name: Stop if no Jira key + if: steps.extract-key.outputs.found == 'false' + run: | + echo "⚠️ No Jira key found. Skipping Jira transition." + exit 0 - name: Get available transitions - if: ${{ env.JIRA_KEY != '' }} + if: steps.extract-key.outputs.found == 'true' + id: transitions + continue-on-error: true run: | - curl -u ${{ secrets.JIRA_USER_EMAIL }}:${{ secrets.JIRA_API_TOKEN }} \ + echo "🔍 Checking available transitions for ${{ env.JIRA_KEY }}" + + RESPONSE=$(curl -s -u ${{ secrets.JIRA_USER_EMAIL }}:${{ secrets.JIRA_API_TOKEN }} \ -X GET \ -H "Content-Type: application/json" \ - "${{ secrets.JIRA_BASE_URL }}/rest/api/3/issue/${{ env.JIRA_KEY }}/transitions" \ - | jq '.transitions[] | {id, name, to: .to.name}' - + "${{ secrets.JIRA_BASE_URL }}/rest/api/3/issue/${{ env.JIRA_KEY }}/transitions") + + echo "$RESPONSE" | jq '.transitions[] | {id, name, to: .to.name}' + + # 개발 완료 transition이 있는지 확인 + HAS_TRANSITION=$(echo "$RESPONSE" | jq -r '.transitions[] | select(.name == "개발 완료") | .id') + + if [ -n "$HAS_TRANSITION" ]; then + echo "transition_available=true" >> $GITHUB_OUTPUT + echo "✅ '개발 완료' transition is available (ID: $HAS_TRANSITION)" + else + echo "transition_available=false" >> $GITHUB_OUTPUT + echo "⚠️ '개발 완료' transition is not available" + echo "Available transitions:" + echo "$RESPONSE" | jq -r '.transitions[] | .name' + fi + - name: Close Jira issue - if: ${{ env.JIRA_KEY != '' }} + if: | + steps.extract-key.outputs.found == 'true' && + steps.transitions.outputs.transition_available == 'true' uses: atlassian/gajira-transition@v3 with: issue: ${{ env.JIRA_KEY }} transition: 개발 완료 + + - name: Add comment to GitHub issue + if: | + steps.extract-key.outputs.found == 'true' && + steps.transitions.outputs.transition_available == 'true' + uses: actions-cool/issues-helper@v3 + with: + actions: 'create-comment' + token: ${{ secrets.GITHUB_TOKEN }} + issue-number: ${{ github.event.issue.number }} + body: | + ✅ **Jira Issue Closed:** [${{ env.JIRA_KEY }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ env.JIRA_KEY }}) + Status transitioned to: **개발 완료** + + - name: Log transition failure + if: | + steps.extract-key.outputs.found == 'true' && + steps.transitions.outputs.transition_available == 'false' + run: | + echo "❌ Failed to transition ${{ env.JIRA_KEY }} to '개발 완료'" + echo "The issue might already be in that state or the transition is not available." diff --git a/.github/workflows/create-jira-issue.yml b/.github/workflows/create-jira-issue.yml index c55994ef..3981360f 100644 --- a/.github/workflows/create-jira-issue.yml +++ b/.github/workflows/create-jira-issue.yml @@ -1,11 +1,146 @@ -name: Create Jira Issue +name: Jira Integration on: issues: types: - opened + jobs: - create-issue: - name: Create Jira issue + # Job 1: 기존 Jira 이슈와 연결 (qa 라벨이 있는 경우) + link-existing-jira: + if: contains(github.event.issue.labels.*.name, '🛠️ qa') + name: Link Existing Jira Issue + runs-on: ubuntu-latest + steps: + - name: Extract Jira Key + id: extract + run: | + title=$(cat <<'EOF' + ${{ github.event.issue.title }} + EOF + ) + body=$(cat <<'EOF' + ${{ github.event.issue.body }} + EOF + ) + + # 제목에서 먼저 Jira 키 찾기 + jira_key=$(echo "$title" | grep -oP '\b[A-Z]+-\d+\b' | head -1) + + # 없으면 본문에서 찾기 + if [ -z "$jira_key" ]; then + jira_key=$(echo "$body" | grep -oP '\b[A-Z]+-\d+\b' | head -1) + fi + + if [ -z "$jira_key" ]; then + echo "❌ Jira key not found in issue title or body." + echo "jira_key=" >> $GITHUB_OUTPUT + else + echo "✅ Found Jira key: $jira_key" + echo "jira_key=$jira_key" >> $GITHUB_OUTPUT + fi + + - name: Stop if no Jira key + if: steps.extract.outputs.jira_key == '' + run: | + echo "⚠️ No Jira key found. Exiting workflow." + exit 0 + + - name: Jira Login + uses: atlassian/gajira-login@v3 + env: + JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} + JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} + JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Switch to develop + run: | + git fetch origin develop + git checkout develop + + - name: Generate Branch Name + id: branch + run: | + issue_number=${{ github.event.issue.number }} + jira_key="${{ steps.extract.outputs.jira_key }}" + branch_name="${jira_key}-fix/#${issue_number}" + echo "branch=${branch_name}" >> $GITHUB_OUTPUT + + - name: Check and create branch + id: create_branch + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + # 브랜치가 이미 존재하는지 확인 + if git ls-remote --heads origin "${{ steps.branch.outputs.branch }}" | grep -q "${{ steps.branch.outputs.branch }}"; then + echo "⚠️ Branch already exists. Skipping creation." + echo "created=false" >> $GITHUB_OUTPUT + else + git checkout -b "${{ steps.branch.outputs.branch }}" + git push origin "${{ steps.branch.outputs.branch }}" + echo "✅ Branch created successfully." + echo "created=true" >> $GITHUB_OUTPUT + fi + + - name: Check if title needs update + id: check_title + run: | + title="${{ github.event.issue.title }}" + jira_key="${{ steps.extract.outputs.jira_key }}" + + if [[ "$title" == *"$jira_key"* ]]; then + echo "skip=true" >> $GITHUB_OUTPUT + echo "⚠️ Jira key already in title. Skipping update." + else + echo "skip=false" >> $GITHUB_OUTPUT + echo "new_title=[$jira_key] $title" >> $GITHUB_OUTPUT + echo "✅ Will update title." + fi + + - name: Update issue title + if: steps.check_title.outputs.skip == 'false' + uses: actions-cool/issues-helper@v3 + with: + actions: 'update-issue' + token: ${{ secrets.PAT_TOKEN }} + title: '${{ steps.check_title.outputs.new_title }}' + + - name: Add Jira link comment + uses: actions-cool/issues-helper@v3 + with: + actions: 'create-comment' + token: ${{ secrets.PAT_TOKEN }} + issue-number: ${{ github.event.issue.number }} + body: | + 🧩 **Linked to Jira Issue:** [${{ steps.extract.outputs.jira_key }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.extract.outputs.jira_key }}) + + - name: Add branch comment + if: steps.create_branch.outputs.created == 'true' + uses: actions-cool/issues-helper@v3 + with: + actions: 'create-comment' + token: ${{ secrets.PAT_TOKEN }} + issue-number: ${{ github.event.issue.number }} + body: | + 🔀 **Branch Created:** `${{ steps.branch.outputs.branch }}` + + - name: Assign issue author + uses: actions-cool/issues-helper@v3 + with: + actions: 'add-assignees' + token: ${{ secrets.PAT_TOKEN }} + issue-number: ${{ github.event.issue.number }} + assignees: ${{ github.event.issue.user.login }} + + # Job 2: 새 Jira 이슈 생성 (qa 라벨이 없는 경우) + create-new-jira: + if: "!contains(github.event.issue.labels.*.name, '🛠️ qa')" + name: Create New Jira Issue runs-on: ubuntu-latest steps: - name: Determine Issue Type @@ -18,43 +153,42 @@ jobs: label_names=$(echo "$LABELS_JSON" | jq -r '.[].name') - # 디버그: 라벨 JSON 전체 출력 echo "=== 라벨 목록 확인 ===" - echo "$label_names" | cat -vet + echo "$label_names" if echo "$label_names" | grep -Fxq '✨ feat'; then - echo "type=feature" >>"$GITHUB_OUTPUT" - echo "template=feature-task.yml" >>"$GITHUB_OUTPUT" + echo "type=feature" >> "$GITHUB_OUTPUT" + echo "template=feature-task.yml" >> "$GITHUB_OUTPUT" elif echo "$label_names" | grep -Fxq '🐞 fix'; then - echo "type=fix" >>"$GITHUB_OUTPUT" - echo "template=fix-task.yml" >>"$GITHUB_OUTPUT" + echo "type=fix" >> "$GITHUB_OUTPUT" + echo "template=fix-task.yml" >> "$GITHUB_OUTPUT" elif echo "$label_names" | grep -Fxq '🔨 refactor'; then - echo "type=refactor" >>"$GITHUB_OUTPUT" - echo "template=refactor-task.yml" >>"$GITHUB_OUTPUT" + echo "type=refactor" >> "$GITHUB_OUTPUT" + echo "template=refactor-task.yml" >> "$GITHUB_OUTPUT" elif echo "$label_names" | grep -Fxq '📃 docs'; then - echo "type=docs" >>"$GITHUB_OUTPUT" - echo "template=docs-task.yml" >>"$GITHUB_OUTPUT" + echo "type=docs" >> "$GITHUB_OUTPUT" + echo "template=docs-task.yml" >> "$GITHUB_OUTPUT" elif echo "$label_names" | grep -Fxq '⚙️ chore'; then - echo "type=chore" >>"$GITHUB_OUTPUT" - echo "template=setting-task.yml" >>"$GITHUB_OUTPUT" + echo "type=chore" >> "$GITHUB_OUTPUT" + echo "template=setting-task.yml" >> "$GITHUB_OUTPUT" elif echo "$label_names" | grep -Fxq '✅ test'; then - echo "type=test" >>"$GITHUB_OUTPUT" - echo "template=test-task.yml" >>"$GITHUB_OUTPUT" + echo "type=test" >> "$GITHUB_OUTPUT" + echo "template=test-task.yml" >> "$GITHUB_OUTPUT" elif echo "$label_names" | grep -Fxq '🎨 style'; then - echo "type=style" >>"$GITHUB_OUTPUT" - echo "template=style-task.yml" >>"$GITHUB_OUTPUT" + echo "type=style" >> "$GITHUB_OUTPUT" + echo "template=style-task.yml" >> "$GITHUB_OUTPUT" else - echo "type=other" >>"$GITHUB_OUTPUT" - echo "template=default.yml" >>"$GITHUB_OUTPUT" + echo "type=other" >> "$GITHUB_OUTPUT" + echo "template=default.yml" >> "$GITHUB_OUTPUT" fi - + - name: Jira Login uses: atlassian/gajira-login@v3 env: @@ -62,24 +196,22 @@ jobs: JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} - - name: Checkout main code + - name: Checkout repository uses: actions/checkout@v4 with: ref: develop - # 📝 이슈 파싱 (템플릿 경로 자동 선택) - name: Parse Issue uses: stefanbuck/github-issue-parser@v3 id: issue-parser with: template-path: .github/ISSUE_TEMPLATE/${{ steps.type.outputs.template }} - - - name: Log Issue Parser + + - name: Log Issue Parser Output run: | - echo '${{ steps.issue-parser.outputs.issueparser_parentKey }}' - echo '${{ steps.issue-parser.outputs.__ticket_number }}' - echo '${{ steps.issue-parser.outputs.jsonString }}' - + echo "Parent Key: ${{ steps.issue-parser.outputs.issueparser_parentKey }}" + echo "Description: ${{ steps.issue-parser.outputs.issueparser_description }}" + - name: Convert markdown to Jira Syntax uses: peter-evans/jira2md@v1 id: md2jira @@ -98,15 +230,7 @@ jobs: ${{ steps.issue-parser.outputs.issueparser_links }} mode: md2jira - - name: Get Available Issue Types - run: | - curl -u ${{ secrets.JIRA_USER_EMAIL }}:${{ secrets.JIRA_API_TOKEN }} \ - -X GET \ - -H "Content-Type: application/json" \ - "${{ secrets.JIRA_BASE_URL }}/rest/api/3/project/BOOK/statuses" \ - | jq '.[] | select(.subtask == true) | .name' - - - name: Create Issue + - name: Create Jira Issue id: create uses: atlassian/gajira-create@v3 with: @@ -120,64 +244,73 @@ jobs: "key": "${{ steps.issue-parser.outputs.issueparser_parentKey }}" } } - - - name: Log created issue - run: echo "Jira Issue ${{ steps.issue-parser.outputs.parentKey }}/${{ steps.create.outputs.issue }} was created" - - name: Debug all issue-parser outputs + - name: Log created issue run: | - echo "🪵 Outputs:" - echo '${{ toJson(steps.issue-parser.outputs) }}' - - - name: Checkout both branches + echo "✅ Jira Issue Created: ${{ steps.create.outputs.issue }}" + echo "Parent: ${{ steps.issue-parser.outputs.issueparser_parentKey }}" + + - name: Checkout for branch creation uses: actions/checkout@v4 with: fetch-depth: 0 - + - name: Switch to develop run: | git fetch origin develop git checkout develop - + - name: Generate Branch Name id: branch run: | issue_number=${{ github.event.issue.number }} - issue_title="${{ github.event.issue.title }}" - slug=$(echo "$issue_title" | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g' | sed 's/[^a-z0-9\-]//g') ticket_key="${{ steps.create.outputs.issue }}" - branch_name="${ticket_key}-${{ steps.type.outputs.type }}/#${issue_number}" + type="${{ steps.type.outputs.type }}" + branch_name="${ticket_key}-${type}/#${issue_number}" echo "branch=${branch_name}" >> $GITHUB_OUTPUT - - name: Create and push branch + - name: Check and create branch + id: create_branch run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" - git checkout -b "${{ steps.branch.outputs.branch }}" - git push origin "${{ steps.branch.outputs.branch }}" - + + # 브랜치가 이미 존재하는지 확인 + if git ls-remote --heads origin "${{ steps.branch.outputs.branch }}" | grep -q "${{ steps.branch.outputs.branch }}"; then + echo "⚠️ Branch already exists. Skipping creation." + echo "created=false" >> $GITHUB_OUTPUT + else + git checkout -b "${{ steps.branch.outputs.branch }}" + git push origin "${{ steps.branch.outputs.branch }}" + echo "✅ Branch created successfully." + echo "created=true" >> $GITHUB_OUTPUT + fi + - name: Update issue title uses: actions-cool/issues-helper@v3 with: actions: 'update-issue' token: ${{ secrets.PAT_TOKEN }} - title: '[${{ steps.create.outputs.issue }}/${{ github.event.issue.title }}' + title: '[${{ steps.create.outputs.issue }}] ${{ github.event.issue.title }}' - - name: Add comment with Jira issue link + - name: Add Jira issue link comment uses: actions-cool/issues-helper@v3 with: actions: 'create-comment' token: ${{ secrets.PAT_TOKEN }} issue-number: ${{ github.event.issue.number }} - body: 'Jira Issue Created: [${{ steps.create.outputs.issue }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.create.outputs.issue }})' + body: | + 🎫 **Jira Issue Created:** [${{ steps.create.outputs.issue }}](${{ secrets.JIRA_BASE_URL }}/browse/${{ steps.create.outputs.issue }}) - - name: Add comment with Branch Name + - name: Add branch comment + if: steps.create_branch.outputs.created == 'true' uses: actions-cool/issues-helper@v3 with: actions: 'create-comment' token: ${{ secrets.PAT_TOKEN }} issue-number: ${{ github.event.issue.number }} - body: '🔀 Branch Created: `${{ steps.branch.outputs.branch }}`' + body: | + 🔀 **Branch Created:** `${{ steps.branch.outputs.branch }}` - name: Assign issue author uses: actions-cool/issues-helper@v3 diff --git a/.github/workflows/create_release_branch.yaml b/.github/workflows/create_release_branch.yaml deleted file mode 100644 index 9d42d01d..00000000 --- a/.github/workflows/create_release_branch.yaml +++ /dev/null @@ -1,71 +0,0 @@ -name: Create Release Branch - -# on: -# release: -# types: [published] -# workflow_dispatch: -# inputs: -# tag: -# description: 'Tag name (e.g., v1.0.0)' -# required: true -# type: string - -# jobs: -# create-branch: -# runs-on: ubuntu-latest -# steps: -# - name: Checkout repository -# uses: actions/checkout@v4 -# with: -# ref: develop -# fetch-depth: 0 - -# - name: Fetch all tags -# run: git fetch --all --tags - -# - name: Extract tag name -# id: tag -# run: | -# if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then -# TAG_NAME="${{ inputs.tag }}" -# else -# TAG_NAME=${GITHUB_REF#refs/tags/} -# fi -# echo "tag=${TAG_NAME}" >> $GITHUB_OUTPUT -# echo "branch=release/${TAG_NAME}" >> $GITHUB_OUTPUT - -# - name: Verify tag exists -# run: | -# if ! git rev-parse "${{ steps.tag.outputs.tag }}" >/dev/null 2>&1; then -# echo "Error: Tag ${{ steps.tag.outputs.tag }} does not exist" -# exit 1 -# fi -# echo "Tag ${{ steps.tag.outputs.tag }} exists" - -# - name: Check if branch already exists -# id: check -# run: | -# if git ls-remote --heads origin "${{ steps.tag.outputs.branch }}" | grep -q "${{ steps.tag.outputs.branch }}"; then -# echo "exists=true" >> $GITHUB_OUTPUT -# echo "Branch ${{ steps.tag.outputs.branch }} already exists - skipping" -# else -# echo "exists=false" >> $GITHUB_OUTPUT -# fi - -# - name: Create release branch from develop -# if: steps.check.outputs.exists == 'false' -# run: | -# git config user.name "github-actions[bot]" -# git config user.email "github-actions[bot]@users.noreply.github.com" -# git checkout develop -# git pull origin develop -# git checkout -b ${{ steps.tag.outputs.branch }} -# git push origin ${{ steps.tag.outputs.branch }} - -# - name: Summary -# run: | -# if [ "${{ steps.check.outputs.exists }}" = "true" ]; then -# echo "Branch ${{ steps.tag.outputs.branch }} already exists - skipped" -# else -# echo "Created branch: ${{ steps.tag.outputs.branch }} from develop" -# fi