From 940f3b51c118266919d0335f44a7a452ac8d4ae2 Mon Sep 17 00:00:00 2001 From: yoonseo choi Date: Thu, 18 Jul 2024 18:02:45 +0900 Subject: [PATCH] =?UTF-8?q?ci=20=EC=B4=88=EA=B8=B0=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(issue#47)=20(#48)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: ci 초기 설정 추가 * fix: gradle 빌드 명령어 수정 * fix: gradle 빌드 명령어 수정 * test: ci 정상 작동 여부 확인을 위한 실패 테스트 작성 * chore: ci 실패시 슬랙 메시지 전송 * chore: 슬랙 메시지 전송 시 멘션하도록 설정 * fix: 슬랙 전송 시 멘션 기능 * fix: 슬랙 전송 시 멘션 기능 * fix: 슬랙 멘션 테스트 * fix: 슬랙 메시지 멘션 기능 * fix: 슬랙 메시지 멘션 기능 * fix: 슬랙 멘션 기능 테스트 * fix: 슬랙 메시지 멘션 기능 테스트 * fix: 슬랙 멘션 메시지 테스트 * fix: 스크립트 문법 오류 수정 * fix: 스크립트 문법 오류 수정 * fix: 스크립트 문법 오류 수정 * fix: 스크립트 문법 오류 수정 * fix: 스크립트 문법 오류 수정 * test: 실패하는 테스트 삭제 * chore: 팀원 목록 추가 * fix: 메인 브랜치가 아니라, PR의 코드로 체크아웃 하도록 수정 * feat: 백엔드 작업이 아닌 경우 CI 가 돌아가지 않도록 하는 기능 추가 * fix: 의존성 버전 수정 * fix: 의존성 제거 * fix: 백엔드가 아닐 경우 early return 하도록 수정 * fix: 백엔드가 아닐 경우 early return 하도록 수정 * fix: early return 순서 변경 * fix: early return 조건 변경 * fix: early return 조건 변경 * fix: early return 방식 변경 * test: 백엔드 PR일 경우 CI 스킵하지 않는지 테스트 * test: 백엔드 PR일 경우 CI 스킵하지 않는지 테스트 * fix: early 리턴 방식 변경 * fix: early 리턴 문법 오류 수정 * fix: early 리턴 문법 오류 수정 --------- Co-authored-by: robinjoon --- .github/workflows/ci.yml | 82 +++++++++++++++++++++++++++++++ .github/workflows/teamMember.json | 10 ++++ 2 files changed, 92 insertions(+) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/teamMember.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..988de01a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,82 @@ +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created +# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle + +name: Gradle Package + +on: + pull_request: + types: [ opened, reopened, synchronize ] + branches: [ 'main' ] + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + actions: write + + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} + - name: Early exit + if: ${{ !contains(github.event.pull_request.labels.*.name, '백엔드') }} + run: | + gh run cancel ${{ github.run_id }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - uses: actions/setup-java@v4 + with: + distribution: 'corretto' + java-version: '21' + server-id: github # Value of the distributionManagement/repository/id field of the pom.xml + settings-path: ${{ github.workspace }} # location for the settings.xml file + + - name: Setup Gradle + run: chmod +x ./backend/gradlew + + - name: Build with Gradle + continue-on-error: true + id: gradle_build + run: | + cd backend + ./gradlew build + + - name: Get teamMember List + id: teamMembers + uses: actions/github-script@v6 + with: + script: | + const fs = require('fs'); + const workers = JSON.parse(fs.readFileSync('.github/workflows/teamMember.json')); + const mention = context.payload.pull_request.assignees.map((user) => { + const login = user.login; + const mappedValue = workers[login]; + return mappedValue ? `<@${mappedValue}>` : `No mapping found for ${login}`; + }) + return mention.join(', '); + + - name: slack mention + uses: slackapi/slack-github-action@v1.24.0 + with: + channel-id: ${{ secrets.ISSUE_CHANNEL }} + payload: | + { + "text": "pr 테스트 결과", + "blocks": [ + { + "type": "section", + "text": { + "type": "mrkdwn", + "text": "pr 테스트 ${{ steps.gradle_build.outcome}} \n • 링크: <${{ github.event.pull_request.html_url }}|${{ github.event.pull_request.title }}> \n • pr 담당자: \${{ steps.teamMembers.outputs.result }} + } + } + ] + } + env: + SLACK_BOT_TOKEN: ${{ secrets.BOT_TOKEN }} diff --git a/.github/workflows/teamMember.json b/.github/workflows/teamMember.json new file mode 100644 index 00000000..3b1e4e0f --- /dev/null +++ b/.github/workflows/teamMember.json @@ -0,0 +1,10 @@ +{ + "lilychoibb": "U07AQJWU8S3", + "robinjoon": "U07BU02FQFJ", + "brgndyy" : "U07B53DM02W", + "chosim-dvlpr": "U07BHP5UTLH", + "Minjoo522": "U07B4V80WLT", + "alstn113": "U07AQK2KBLP", + "le2sky": "U07B26581CM", + "Parkhanyoung": "U07BTSGKCC8" +}