Skip to content

chore(ci): add appropriate labels to each PR #189

chore(ci): add appropriate labels to each PR

chore(ci): add appropriate labels to each PR #189

Workflow file for this run

name: Pull Request Workflow
on:
pull_request:
branches:
- develop
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name }}
cancel-in-progress: true
jobs:
labels:
name: Add appropriate labels to PR
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Authenticate GitHub CLI
run: echo "${{ secrets.GITHUB_TOKEN }}" | gh auth login --with-token
- name: Fetch project ID
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PROJECT_ID=$(gh project list --owner kestra-io --format json | jq -r '.[] | select(.number == 16) | .id')
echo "PROJECT_ID=$PROJECT_ID" >> $GITHUB_ENV
- name: Get author & add labels
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_AUTHOR=$(gh pr view ${{ github.event.pull_request.html_url }} --json author --jq '.author.login')
ITEM_ID=$(gh project item-add --owner kestra-io --project-id $PROJECT_ID --url ${{ github.event.pull_request.html_url }} | jq -r '.id')
# Get field IDs
FIELD_CONTRIBUTION=$(gh project field-list --owner kestra-io --project-id $PROJECT_ID --format json | jq -r '.[] | select(.name == "Contribution") | .id')
FIELD_AREA=$(gh project field-list --owner kestra-io --project-id $PROJECT_ID --format json | jq -r '.[] | select(.name == "Area") | .id')
if gh api orgs/kestra-io/members/$PR_AUTHOR --silent; then
gh project item-edit --id $ITEM_ID --project-id $PROJECT_ID --field-id $FIELD_CONTRIBUTION --text "Internal"
else
gh project item-edit --id $ITEM_ID --project-id $PROJECT_ID --field-id $FIELD_CONTRIBUTION --text "External"
gh project item-edit --id $ITEM_ID --project-id $PROJECT_ID --field-id $FIELD_AREA --text "TBD"
fi
file-changes:
name: File changes detection
runs-on: ubuntu-latest
timeout-minutes: 60
outputs:
ui: ${{ steps.changes.outputs.ui }}
translations: ${{ steps.changes.outputs.translations }}
backend: ${{ steps.changes.outputs.backend }}
steps:
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
ui:
- 'ui/**'
translations:
- 'ui/src/translations/**'
backend:
- '!{ui,.github}/**'
token: ${{ secrets.GITHUB_TOKEN }}
translations:
name: 'Translations - Generate translations'
runs-on: ubuntu-latest
timeout-minutes: 60
needs: file-changes
steps:
- uses: actions/checkout@v4
name: Checkout - Current ref
if: "needs.file-changes.outputs.translations == 'true'"
- id: generate-translations
name: Translations - Generate translations
if: "needs.file-changes.outputs.translations == 'true'"
uses: ./.github/actions/generate-translations
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
frontend:
name: Frontend - Tests
needs: [file-changes, translations]
if: "needs.file-changes.outputs.ui == 'true'"
uses: ./.github/workflows/workflow-frontend-test.yml
secrets:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
backend:
name: Backend - Tests
needs: file-changes
if: "needs.file-changes.outputs.backend == 'true'"
uses: ./.github/workflows/workflow-backend-test.yml
secrets:
GITHUB_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
GOOGLE_SERVICE_ACCOUNT: ${{ secrets.GOOGLE_SERVICE_ACCOUNT }}
end:
name: End
runs-on: ubuntu-latest
if: always()
needs: [frontend, backend]
steps:
# Slack
- name: Slack notification
uses: Gamesight/slack-workflow-status@master
if: ${{ always() && env.SLACK_WEBHOOK_URL != 0 }}
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
name: GitHub Actions
icon_emoji: ":github-actions:"
channel: "C02DQ1A7JLR"