|
7 | 7 | linelint: |
8 | 8 | runs-on: ubuntu-latest |
9 | 9 | steps: |
10 | | - - uses: actions/checkout@v4 |
11 | | - with: |
12 | | - fetch-depth: 0 |
| 10 | + - uses: actions/checkout@v5 |
13 | 11 |
|
14 | 12 | # PR λΌλ²¨ νμΈ |
15 | 13 | - name: Get PR labels |
16 | 14 | id: pr-labels |
17 | 15 | run: | |
18 | 16 | echo "π PR λ²νΈ: ${{ github.event.pull_request.number }}" |
19 | 17 | pr_number="${{ github.event.pull_request.number }}" |
20 | | - |
| 18 | +
|
21 | 19 | echo "π PR λΌλ²¨ μ‘°ν μ€..." |
22 | 20 | labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name') |
23 | 21 | echo "νμΈλ λΌλ²¨: $labels_json" |
24 | | - |
| 22 | +
|
25 | 23 | if [ -n "$labels_json" ]; then |
26 | 24 | has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false') |
27 | 25 | echo "maintenance λΌλ²¨ ν¬ν¨ μ¬λΆ: $has_maintenance" |
@@ -153,3 +151,126 @@ jobs: |
153 | 151 | fi |
154 | 152 | env: |
155 | 153 | GH_TOKEN: ${{ github.token }} |
| 154 | + |
| 155 | + check-project: |
| 156 | + runs-on: ubuntu-latest |
| 157 | + permissions: |
| 158 | + contents: read |
| 159 | + pull-requests: read |
| 160 | + |
| 161 | + steps: |
| 162 | + - uses: actions/checkout@v5 |
| 163 | + |
| 164 | + # Secret νμΈ (λλ²κΉ
μ©) |
| 165 | + - name: Check PROJECT_TOKEN |
| 166 | + run: | |
| 167 | + if [ -z "${{ secrets.PROJECT_TOKEN }}" ]; then |
| 168 | + echo "β PROJECT_TOKEN secretμ΄ μ€μ λμ§ μμκ±°λ μ κ·Όν μ μμ΅λλ€." |
| 169 | + echo "Organization secrets μ€μ μ νμΈν΄μ£ΌμΈμ:" |
| 170 | + echo "https://github.com/organizations/DaleStudy/settings/secrets/actions" |
| 171 | + exit 1 |
| 172 | + else |
| 173 | + echo "β
PROJECT_TOKEN secretμ΄ μ μμ μΌλ‘ μ€μ λμ΄ μμ΅λλ€." |
| 174 | + fi |
| 175 | +
|
| 176 | + # PR λΌλ²¨ νμΈ |
| 177 | + - name: Get PR labels |
| 178 | + id: pr-labels |
| 179 | + run: | |
| 180 | + echo "π PR λ²νΈ: ${{ github.event.pull_request.number }}" |
| 181 | + pr_number="${{ github.event.pull_request.number }}" |
| 182 | +
|
| 183 | + echo "π PR λΌλ²¨ μ‘°ν μ€..." |
| 184 | + labels_json=$(gh pr view $pr_number --json labels -q '.labels[].name') |
| 185 | + echo "νμΈλ λΌλ²¨: $labels_json" |
| 186 | +
|
| 187 | + if [ -n "$labels_json" ]; then |
| 188 | + has_maintenance=$(echo $labels_json | grep -q 'maintenance' && echo 'true' || echo 'false') |
| 189 | + echo "maintenance λΌλ²¨ ν¬ν¨ μ¬λΆ: $has_maintenance" |
| 190 | + echo "has_maintenance=$has_maintenance" >> $GITHUB_OUTPUT |
| 191 | + else |
| 192 | + echo "maintenance λΌλ²¨μ΄ μλ PRμ
λλ€. Week μ€μ μ κ²μ¬ν©λλ€." |
| 193 | + echo "has_maintenance=false" >> $GITHUB_OUTPUT |
| 194 | + fi |
| 195 | + env: |
| 196 | + GH_TOKEN: ${{ secrets.PROJECT_TOKEN }} |
| 197 | + |
| 198 | + # Week μ€μ νμΈ |
| 199 | + - name: Check Week setting in project |
| 200 | + if: ${{ steps.pr-labels.outputs.has_maintenance != 'true' }} |
| 201 | + run: | |
| 202 | + echo "π Week μ€μ κ²μ¬ μμ" |
| 203 | + pr_number="${{ github.event.pull_request.number }}" |
| 204 | +
|
| 205 | + echo "π νλ‘μ νΈ μ 보 μ‘°ν μ€..." |
| 206 | + project_data=$(gh api graphql -f query=' |
| 207 | + query { |
| 208 | + repository(owner: "${{ github.repository_owner }}", name: "${{ github.event.repository.name }}") { |
| 209 | + pullRequest(number: '$pr_number') { |
| 210 | + projectItems(first: 10) { |
| 211 | + nodes { |
| 212 | + project { |
| 213 | + title |
| 214 | + } |
| 215 | + fieldValues(first: 20) { |
| 216 | + nodes { |
| 217 | + __typename |
| 218 | + ... on ProjectV2ItemFieldIterationValue { |
| 219 | + title |
| 220 | + field { |
| 221 | + ... on ProjectV2FieldCommon { |
| 222 | + name |
| 223 | + } |
| 224 | + } |
| 225 | + } |
| 226 | + } |
| 227 | + } |
| 228 | + } |
| 229 | + } |
| 230 | + } |
| 231 | + } |
| 232 | + } |
| 233 | + ' 2>&1) |
| 234 | +
|
| 235 | + if [ $? -ne 0 ]; then |
| 236 | + echo "β οΈ νλ‘μ νΈ μ 보λ₯Ό κ°μ Έμ¬ μ μμ΅λλ€." |
| 237 | + echo "$project_data" |
| 238 | + echo "## β Week μ€μ κ²μ¦ μ€ν¨" >> $GITHUB_STEP_SUMMARY |
| 239 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 240 | + echo "νλ‘μ νΈ μ 보λ₯Ό μ‘°νν μ μμ΅λλ€. PRμ΄ νλ‘μ νΈμ μΆκ°λμλμ§ νμΈν΄μ£ΌμΈμ." >> $GITHUB_STEP_SUMMARY |
| 241 | +
|
| 242 | + exit 1 |
| 243 | + fi |
| 244 | +
|
| 245 | + echo "νλ‘μ νΈ λ°μ΄ν°:" |
| 246 | + echo "$project_data" |
| 247 | +
|
| 248 | + # Week νλ κ° μΆμΆ (Iteration νμ
μ Week νλ) |
| 249 | + week_value=$(echo "$project_data" | jq -r ' |
| 250 | + .data.repository.pullRequest.projectItems.nodes[].fieldValues.nodes[] | |
| 251 | + select(.__typename == "ProjectV2ItemFieldIterationValue") | |
| 252 | + select(.field.name == "Week") | |
| 253 | + .title |
| 254 | + ' 2>/dev/null | head -n 1) |
| 255 | +
|
| 256 | + echo "μΆμΆλ Week κ°: '$week_value'" |
| 257 | +
|
| 258 | + if [ -z "$week_value" ] || [ "$week_value" = "null" ]; then |
| 259 | + echo "## β Week μ€μ κ²μ¦ μ€ν¨" >> $GITHUB_STEP_SUMMARY |
| 260 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 261 | + echo "β οΈ **PRμ Week μ€μ μ΄ λλ½λμμ΅λλ€!**" >> $GITHUB_STEP_SUMMARY |
| 262 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 263 | + echo "### μ€μ λ°©λ²" >> $GITHUB_STEP_SUMMARY |
| 264 | + echo "1. PR μ°μΈ‘μ \`Projects\` μΉμ
μμ \`리νΈμ½λ μ€ν°λ\` μ λλ‘λ€μ΄(βΌ) ν΄λ¦" >> $GITHUB_STEP_SUMMARY |
| 265 | + echo "2. νμ¬ μ£Όμ°¨λ₯Ό μ νν΄μ£ΌμΈμ (μ: \`Week 14(current)\` λλ \`Week 14\`)" >> $GITHUB_STEP_SUMMARY |
| 266 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 267 | + echo "π [μμΈν κ°μ΄λ 보기](https://github.com/DaleStudy/leetcode-study/wiki/%EB%8B%B5%EC%95%88-%EC%A0%9C%EC%B6%9C-%EA%B0%80%EC%9D%B4%EB%93%9C#pr-%EC%9E%91%EC%84%B1%EB%B2%95)" >> $GITHUB_STEP_SUMMARY |
| 268 | + exit 1 |
| 269 | + fi |
| 270 | +
|
| 271 | + echo "## β
Week μ€μ κ²μ¦ μ±κ³΅" >> $GITHUB_STEP_SUMMARY |
| 272 | + echo "" >> $GITHUB_STEP_SUMMARY |
| 273 | + echo "Week μ€μ : **$week_value**" >> $GITHUB_STEP_SUMMARY |
| 274 | + echo "β
Week μ€μ μ΄ μ¬λ°λ₯΄κ² λμ΄ μμ΅λλ€!" |
| 275 | + env: |
| 276 | + GH_TOKEN: ${{ secrets.PROJECT_TOKEN }} |
0 commit comments