diff --git a/.github/actions/env-setup/action.yml b/.github/actions/env-setup/action.yml new file mode 100644 index 00000000000..19d40dd7084 --- /dev/null +++ b/.github/actions/env-setup/action.yml @@ -0,0 +1,37 @@ +name: GH Azdev Setup +description: 'azdev env setup' + +runs: + using: 'composite' + steps: + - name: Check Init GH Event + env: + action: ${{ toJSON(github.event.action) }} + label: ${{ toJSON(github.event.label) }} + shell: bash + run: | + echo start azdev env setup + - name: Checkout CLI repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 # checkout all branches + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} # checkout pull request branch + - name: Set up Python 3.12 + uses: actions/setup-python@v3 + with: + python-version: "3.12" + - name: Install azdev + shell: bash + run: | + python -m pip install --upgrade pip + set -ev + python -m venv env + chmod +x env/bin/activate + source ./env/bin/activate + pip install azdev + azdev --version + cd ../ + azdev setup -c azure-cli --debug + az --version + pip list -v \ No newline at end of file diff --git a/.github/workflows/AzdevLinter.yml b/.github/workflows/AzdevLinter.yml new file mode 100644 index 00000000000..372be7f0982 --- /dev/null +++ b/.github/workflows/AzdevLinter.yml @@ -0,0 +1,61 @@ +name: GH Check CLI Linter +on: + pull_request_target: + types: [opened, labeled, unlabeled, synchronize] + branches: + - dev + +permissions: {} + +jobs: + azdev-linter: + runs-on: ubuntu-latest + permissions: + pull-requests: read + contents: read + steps: + - name: Checkout CLI repo + uses: actions/checkout@v4 + with: + fetch-depth: 1 + sparse-checkout: | + .github + - name: Azdev Env Setup + uses: ./.github/actions/env-setup + - name: Get Base Branch + env: + bash_sha: ${{ github.event.pull_request.base.sha }} + base_branch: ${{ github.event.pull_request.base.ref }} + base_repo: ${{ github.event.pull_request.base.repo.clone_url }} + base_branch_pre: "upstream" + diff_sha: ${{ github.event.pull_request.head.sha }} + diff_branch: ${{ github.event.pull_request.head.ref }} + repo_full_name: ${{ github.event.pull_request.head.repo.full_name }} + run: | + set -x + git --version + git log --oneline | head -n 10 + git branch -a + git fetch "$base_repo" "$base_branch":"$base_branch_pre"/"$base_branch" + git checkout "$base_branch_pre"/"$base_branch" + - name: Run Azdev Style + env: + pr_label_list: ${{ toJson(github.event.pull_request.labels.*.name) }} + pr_user: ${{ github.event.pull_request.user.login }} + base_branch: ${{ github.event.pull_request.base.ref }} + base_branch_pre: "upstream" + diff_branch: ${{ github.event.pull_request.head.ref }} + run: | + chmod +x env/bin/activate + source ./env/bin/activate + set -ev + + git checkout -f "$diff_branch" + # always use the latest scripts from base branch + git checkout "$base_branch_pre"/"$base_branch" -- scripts + git checkout "$base_branch_pre"/"$base_branch" -- .github + + python scripts/ci/service_name.py + merge_base=$(git merge-base HEAD "$base_branch_pre"/"$base_branch") + echo merge_base: "$merge_base" + azdev linter --ci-exclusions --min-severity medium --repo ./ --src "$diff_branch" --tgt "$merge_base" diff --git a/.github/workflows/AzdevStyle.yml b/.github/workflows/AzdevStyle.yml new file mode 100644 index 00000000000..49affa5fd5f --- /dev/null +++ b/.github/workflows/AzdevStyle.yml @@ -0,0 +1,60 @@ +name: GH Check CLI Style +on: + pull_request_target: + types: [opened, labeled, unlabeled, synchronize] + branches: + - dev + +permissions: {} + +jobs: + azdev-style: + runs-on: ubuntu-latest + permissions: + pull-requests: read + contents: read + steps: + - name: Checkout CLI repo + uses: actions/checkout@v4 + with: + fetch-depth: 1 + sparse-checkout: | + .github + - name: Azdev Env Setup + uses: ./.github/actions/env-setup + - name: Get Base Branch + env: + bash_sha: ${{ github.event.pull_request.base.sha }} + base_branch: ${{ github.event.pull_request.base.ref }} + base_repo: ${{ github.event.pull_request.base.repo.clone_url }} + base_branch_pre: "upstream" + diff_sha: ${{ github.event.pull_request.head.sha }} + diff_branch: ${{ github.event.pull_request.head.ref }} + repo_full_name: ${{ github.event.pull_request.head.repo.full_name }} + run: | + set -x + git --version + git log --oneline | head -n 10 + git branch -a + git fetch "$base_repo" "$base_branch":"$base_branch_pre"/"$base_branch" + git checkout "$base_branch_pre"/"$base_branch" + - name: Run Azdev Style + env: + pr_label_list: ${{ toJson(github.event.pull_request.labels.*.name) }} + pr_user: ${{ github.event.pull_request.user.login }} + base_branch: ${{ github.event.pull_request.base.ref }} + base_branch_pre: "upstream" + diff_branch: ${{ github.event.pull_request.head.ref }} + run: | + chmod +x env/bin/activate + source ./env/bin/activate + set -ev + + git checkout -f "$diff_branch" + # always use the latest scripts from base branch + git checkout "$base_branch_pre"/"$base_branch" -- scripts + git checkout "$base_branch_pre"/"$base_branch" -- .github + merge_base=$(git merge-base HEAD "$base_branch_pre"/"$base_branch") + echo merge_base: "$merge_base" + # check azdev style on diff mod + azdev style