Skip to content

Commit

Permalink
[Tool] Branch pipeline support ubuntu image update (#43499)
Browse files Browse the repository at this point in the history
Signed-off-by: AndyZiYe <[email protected]>
  • Loading branch information
andyziye authored Apr 2, 2024
1 parent c7945a1 commit 5fbfe09
Show file tree
Hide file tree
Showing 6 changed files with 579 additions and 75 deletions.
9 changes: 7 additions & 2 deletions .github/workflows/ci-merged.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,11 @@ jobs:
runs-on: [self-hosted, normal]
name: Thirdparty Update Image
if: github.event.pull_request.merged == true
continue-on-error: false
strategy:
fail-fast: false
matrix:
linux: [ centos7, ubuntu ]
env:
PR_NUMBER: ${{ github.event.number }}
BRANCH: ${{ github.base_ref }}
Expand All @@ -102,11 +107,11 @@ jobs:
- 'thirdparty/**'
- 'docker/dockerfiles/dev-env/dev-env.Dockerfile'
- name: update image
- name: update image (${{ matrix.linux }})
if: steps.changes.outputs.thirdparty == 'true'
run: |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh
./bin/elastic-update-image.sh $BRANCH $PR_NUMBER
./bin/elastic-update-image.sh $BRANCH $PR_NUMBER ${{ matrix.linux }}
- name: Clean ENV
if: always()
Expand Down
144 changes: 83 additions & 61 deletions .github/workflows/ci-pipeline-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@ concurrency:

jobs:

sync-checker:
basic-checker:
runs-on: [ self-hosted, normal ]
name: RUN CHECKER
env:
PR_NUMBER: ${{ github.event.number }}
GH_TOKEN: ${{ github.token }}
outputs:
PASS: ${{ steps.check.outputs.pass }}
THIRDPARTY: ${{ steps.thirdparty-checker.outputs.thirdparty }}
steps:
- name: Check
id: check
Expand All @@ -34,25 +34,25 @@ jobs:
run: |
echo "pass=true" >> $GITHUB_OUTPUT
- uses: dorny/paths-filter@v2
id: thirdparty-checker
if: always()
with:
filters: |
thirdparty:
- 'thirdparty/**'
- 'docker/dockerfiles/dev-env/dev-env.Dockerfile'
- name: Check Blacklist
id: check_blacklist
env:
NO_SYNC: ${{ steps.check.outputs.pass }}
AUTHOR: ${{ github.event.pull_request.user.login }}
run: |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull >/dev/null
./scripts/check-blacklist.sh
be-checker:
runs-on: ubuntu-latest
needs: sync-checker
needs: basic-checker
name: BE FILTER
if: needs.sync-checker.outputs.PASS == 'true' || needs.sync-checker.outputs.THIRDPARTY == 'true'
if: needs.basic-checker.outputs.PASS == 'true'
outputs:
output1: ${{ steps.be-changes-info.outputs.be }}
output2: ${{ steps.be-changes-info.outputs.thirdparty }}
steps:
- uses: dorny/paths-filter@v2
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
mkdir -p ${{ github.workspace }}
- name: Checkout Code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0

Expand All @@ -108,7 +108,7 @@ jobs:
git fetch origin pull/${PR_NUMBER}/head:${BRANCH_NAME};
git checkout $BRANCH_NAME;
git checkout -b merge_pr;
git merge --squash --no-edit ${BRANCH} || (echo "Merge conflict, please check." && exit -1);
git merge --squash --no-edit ${BRANCH} || (echo "::error::Merge conflict, please check." && exit -1);
- name: Run Clang-Format
run: |
Expand All @@ -128,28 +128,33 @@ jobs:
PR_NUMBER: ${{ github.event.number }}
BRANCH: ${{ github.base_ref }}
REPO: ${{ github.repository }}
outputs:
ip: ${{ steps.update-image.outputs.ip }}
instance_id: ${{ steps.update-image.outputs.instance_id }}
image_cache_id: ${{ steps.update-image.outputs.image_cache_id }}
continue-on-error: true
strategy:
fail-fast: false
matrix:
build_type: [ Release, ASAN ]
steps:
- name: clean
run: |
rm -rf ${{ github.workspace }}
mkdir -p ${{ github.workspace }}
- name: Checkout Code
uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Update Image
- name: Update Image (${{ matrix.build_type }})
id: update-image
if: needs.be-checker.outputs.output2 == 'true'
env:
linux_distro: ${{ matrix.build_type }}
run: |
if [[ "${{ needs.be-checker.outputs.output2 }}" == 'true' ]]; then
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh
./bin/run-pr-update-image.sh
fi
cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh
./bin/run-pr-update-image.sh
- name: Upload Thirdparty Result
uses: actions/upload-artifact@v4
with:
name: THIRDPARTY-RESULT-${{ matrix.build_type }}
path: image_cache.info
retention-days: 1
overwrite: true

- name: Clean ENV
if: always()
Expand All @@ -160,9 +165,40 @@ jobs:
fi
rm -rf ${{ github.workspace }}/*
thirdparty-info:
runs-on: [ self-hosted, normal ]
needs:
- thirdparty-update
name: Thirdparty Info
outputs:
centos7_image_cache_id: ${{ steps.info.outputs.centos7_image_cache_id }}
ubuntu_image_cache_id: ${{ steps.info.outputs.ubuntu_image_cache_id }}
steps:
- name: Check Result
run: |
if [[ "${{ needs.thirdparty-update.result }}" == 'failure' ]]; then
echo "::error:: Thirdparty Update Error!"
exit 1
fi
- name: Download Thirdparty Artifact
uses: actions/download-artifact@v4
with:
pattern: THIRDPARTY-RESULT-*
path: outputs

- name: Read Info
id: info
if: needs.thirdparty-update.result == 'success'
run: |
image_cache_id=$(cat "./outputs/THIRDPARTY-RESULT-centos7/image_cache.info" || echo "")
echo "centos7_image_cache_id=${image_cache_id}" >> $GITHUB_OUTPUT
image_cache_id=$(cat "./outputs/THIRDPARTY-RESULT-ubuntu/image_cache.info" || echo "")
echo "ubuntu_image_cache_id=${image_cache_id}" >> $GITHUB_OUTPUT
be-ut:
runs-on: [self-hosted, normal]
needs: [ be-checker, thirdparty-update ]
needs: [ be-checker, thirdparty-info ]
timeout-minutes: 180
name: BE UT
env:
Expand All @@ -182,7 +218,7 @@ jobs:
run: |
rm -rf ./ci-tool && cp -rf /var/lib/ci-tool ./ci-tool && cd ci-tool && git pull && source lib/init.sh
if [[ "${{ needs.be-checker.outputs.output2 }}" == 'true' ]]; then
export image_cache_id=${{ needs.thirdparty-update.outputs.image_cache_id }}
export image_cache_id=${{ needs.thirdparty-info.outputs.centos7_image_cache_id }}
export image_tag=$BRANCH-$PR_NUMBER
fi
./bin/elastic-ut.sh --pr ${PR_NUMBER} --module be --branch ${{ steps.branch.outputs.branch }} --repository ${{ github.repository }}
Expand All @@ -194,29 +230,31 @@ jobs:
eci rm ${{ steps.run_ut.outputs.ECI_ID }}
- name: Upload log
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
if: always()
with:
name: BE UT LOG
path: ${{ steps.run_ut.outputs.RES_LOG }}
path: ${{ steps.run_ut.outputs.BE_LOG }}
retention-days: 1
overwrite: true

- name: Clean ENV
if: always()
run: |
rm -f ${{ steps.run_ut.outputs.RES_FILE }}
rm -f ${{ steps.run_ut.outputs.RES_LOG }}
rm -rf ${{ steps.run_ut.outputs.BE_LOG }}
rm -rf ${{ github.workspace }}/*
fe-checker:
runs-on: ubuntu-latest
needs: sync-checker
needs: basic-checker
name: FE FILTER
if: needs.sync-checker.outputs.PASS == 'true'
if: needs.basic-checker.outputs.PASS == 'true'
outputs:
output1: ${{ steps.fe-changes-info.outputs.fe }}
steps:
- uses: dorny/paths-filter@v2
- uses: dorny/paths-filter@v3
id: changes
with:
filters: |
Expand Down Expand Up @@ -247,7 +285,7 @@ jobs:
rm -rf ${{ github.workspace }}
mkdir -p ${{ github.workspace }}
- uses: dorny/paths-filter@v2
- uses: dorny/paths-filter@v3
id: java-file
name: JAVA FILE
with:
Expand All @@ -263,7 +301,7 @@ jobs:
echo ${{github.base_ref}}
echo "branch=${{github.base_ref}}" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0

Expand All @@ -278,7 +316,7 @@ jobs:
git fetch origin pull/${PR_NUMBER}/head:${BRANCH_NAME};
git checkout $BRANCH_NAME;
git checkout -b merge_pr;
git merge --squash --no-edit ${BRANCH} || (echo "Merge conflict, please check." && exit -1);
git merge --squash --no-edit ${BRANCH} || (echo "::error::Merge conflict, please check." && exit -1);
- name: Copy checkstyle files
if: ${{ steps.java-file.outputs.java == 'true' }}
Expand Down Expand Up @@ -307,7 +345,7 @@ jobs:
BRANCH: ${{ github.base_ref }}
GH_TOKEN: ${{ github.token }}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0

Expand Down Expand Up @@ -389,23 +427,6 @@ jobs:
bucket_prefix=`echo ${repo%/*} | tr '[:upper:]' '[:lower:]'`
echo "bucket_prefix=${bucket_prefix}" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Checkout PR
run: |
BRANCH=${{steps.branch.outputs.branch}}
git config --global user.name "wanpengfei-git";
git config --global user.email "[email protected]";
git checkout $BRANCH;
git pull;
BRANCH_NAME="${BRANCH}-${PR_NUMBER}";
git fetch origin pull/${PR_NUMBER}/head:${BRANCH_NAME};
git checkout $BRANCH_NAME;
git checkout -b merge_pr;
git merge --squash --no-edit ${BRANCH} || (echo "Merge conflict, please check." && exit -1);
- name: UPDATE ECI & RUN UT
id: run_ut
shell: bash
Expand All @@ -424,11 +445,12 @@ jobs:
- name: Upload log
if: always()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: FE UT LOG
path: ${{ steps.run_ut.outputs.RES_LOG }}
retention-days: 1
overwrite: true

- name: Clean ENV
if: always()
Expand All @@ -447,7 +469,6 @@ jobs:
env:
PR_NUMBER: ${{ github.event.number }}
BRANCH: ${{ github.base_ref }}
CONF_FILE: ${{ needs.deploy.outputs.deploy_conf_file }}
steps:
- name: upload info
if: always()
Expand All @@ -457,14 +478,15 @@ jobs:
echo ${GITHUB_SHA} > head_sha.txt
- name: Upload the PR number
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: pr_num
path: ./pr_num.txt
retention-days: 3
overwrite: true

- name: Upload the PR HEAD REF
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: head_sha
path: ./head_sha.txt
Expand Down
Loading

0 comments on commit 5fbfe09

Please sign in to comment.