2020-10-19 10:36:40 +08:00
name : Build and test
# TODO: do not trigger action for some document file update
# This workflow is triggered on pushes or pull request to the repository.
on :
2021-07-20 15:34:14 +08:00
push :
# file paths to consider in the event. Optional; defaults to all.
paths :
- 'scripts/**'
- 'internal/**'
- 'cmd/**'
- 'build/**'
- '.github/workflows/main.yaml'
- '.env'
- docker-compose.yml
- Makefile
2021-09-01 15:59:11 +08:00
- go.mod
2021-07-20 15:34:14 +08:00
- '!**.md'
- '!build/ci/jenkins/**'
2020-10-19 10:36:40 +08:00
pull_request :
# file paths to consider in the event. Optional; defaults to all.
paths :
2020-10-24 11:36:42 +08:00
- 'scripts/**'
2020-10-19 10:36:40 +08:00
- 'internal/**'
- 'cmd/**'
2020-11-16 21:11:52 +08:00
- 'build/**'
2020-10-27 15:51:16 +08:00
- '.github/workflows/main.yaml'
2020-11-14 16:01:12 +08:00
- '.env'
2020-10-19 10:36:40 +08:00
- docker-compose.yml
2020-11-03 11:25:47 +08:00
- Makefile
2021-09-01 15:59:11 +08:00
- go.mod
2020-10-19 10:36:40 +08:00
- '!**.md'
2021-05-14 18:23:30 +08:00
- '!build/ci/jenkins/**'
2021-11-22 22:59:14 +08:00
# Add Issue Comment for rerun
issue_comment :
types : [ created, edited]
2020-10-19 10:36:40 +08:00
jobs :
ubuntu :
2021-04-29 10:19:41 +08:00
name : Build and test AMD64 Ubuntu ${{ matrix.ubuntu }}
2021-11-22 22:59:14 +08:00
# Add /rerun-unit
2021-11-23 10:29:14 +08:00
if : "(github.event_name == 'push' || github.event_name == 'pull_request' || (github.event_name == 'issue_comment' && startsWith(github.event.comment.body, '/rerun-unit')))"
2020-10-27 15:51:16 +08:00
runs-on : ubuntu-latest
2021-04-26 13:59:28 +08:00
timeout-minutes : 90
2020-10-27 15:51:16 +08:00
strategy :
fail-fast : false
matrix :
ubuntu : [ 18.04 ]
env :
UBUNTU : ${{ matrix.ubuntu }}
2020-10-19 10:36:40 +08:00
steps :
2021-11-22 22:59:14 +08:00
- name : Is Organization Member
shell : bash
if : "github.event_name == 'issue_comment'"
id : is_organization_member
run : |
response_code=$(curl -sIL -w %{http_code} -H "Authorization: token ${{ secrets.RERUN_BOT_TOKEN }}" -H "Accept: application/vnd.github.v3+json" \
-o /dev/null https://api.github.com/orgs/${GITHUB_REPOSITORY_OWNER}/members/${{ github.event.sender.login }})
echo " response code is ${response_code} "
if [[ ${response_code} == '204' ]];then
echo "::set-output name=is-member::true"
elif [[ ${response_code} == '404' ]]; then
echo "::set-output name=is-member::false"
else
echo "Please check if the repository secret RERUN_BOT_TOKEN still exists and have the permission to read organization membership."
exit 1
fi
- name : Get Job URL
if : "github.event_name == 'issue_comment' && steps.is_organization_member.outputs.is-member == 'true'"
id : get_job_url
shell : bash
run : |
echo "::set-output name=job-url::'$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID'"
- name : Create Comment for Org Member
if : "github.event_name == 'issue_comment' && steps.is_organization_member.outputs.is-member == 'true'"
uses : actions-cool/issues-helper@v2.5.0
with :
actions : 'create-comment'
token : ${{ secrets.GITHUB_TOKEN }}
issue-number : ${{ github.event.issue.number }}
body : |
Hello ${{ github.event.sender.login }}. Workflow is successfully triggered, get more information from ${{ steps.get_job_url.outputs.job-url }}.
- name : Create Comment for Non-Org Member
if : "github.event_name == 'issue_comment' && steps.is_organization_member.outputs.is-member == 'false'"
uses : actions-cool/issues-helper@v2.5.0
with :
actions : 'create-comment'
token : ${{ secrets.GITHUB_TOKEN }}
issue-number : ${{ github.event.issue.number }}
body : |
Hello ${{ github.event.sender.login }}, you are not in the organization, so you do not have the permission to rerun the workflow, please contact `@milvus-io/milvus-maintainers` for help.
2020-10-19 10:36:40 +08:00
- name : Checkout
2021-11-22 22:59:14 +08:00
if : "github.event_name != 'issue_comment' || steps.is_organization_member.outputs.is-member == 'true'"
2020-10-19 10:36:40 +08:00
uses : actions/checkout@v2
2020-12-09 20:07:27 +08:00
- name : Cache CCache Volumes
2021-11-22 22:59:14 +08:00
if : "github.event_name != 'issue_comment' || steps.is_organization_member.outputs.is-member == 'true'"
2020-10-27 15:51:16 +08:00
uses : actions/cache@v1
with :
2020-12-09 20:07:27 +08:00
path : .docker/amd64-ubuntu${{ matrix.ubuntu }}-ccache
key : ubuntu${{ matrix.ubuntu }}-ccache-${{ hashFiles('internal/core/**') }}
restore-keys : ubuntu${{ matrix.ubuntu }}-ccache-
- name : Cache Go Mod Volumes
2021-11-22 22:59:14 +08:00
if : "github.event_name != 'issue_comment' || steps.is_organization_member.outputs.is-member == 'true'"
2020-12-09 20:07:27 +08:00
uses : actions/cache@v1
with :
path : .docker/amd64-ubuntu${{ matrix.ubuntu }}-go-mod
key : ubuntu${{ matrix.ubuntu }}-go-mod-${{ hashFiles('**/go.sum') }}
restore-keys : ubuntu${{ matrix.ubuntu }}-go-mod-
2020-11-09 18:47:37 +08:00
- name : Start Service
2021-11-22 22:59:14 +08:00
if : "github.event_name != 'issue_comment' || steps.is_organization_member.outputs.is-member == 'true'"
2020-11-09 18:47:37 +08:00
shell : bash
run : |
2020-12-07 15:22:20 +08:00
docker-compose up -d pulsar etcd minio
2020-11-13 12:27:41 +08:00
- name : Build and UnitTest
2021-11-22 22:59:14 +08:00
if : "github.event_name != 'issue_comment' || steps.is_organization_member.outputs.is-member == 'true'"
2020-11-17 18:36:03 +08:00
env :
CHECK_BUILDER : "1"
2020-10-19 10:36:40 +08:00
run : |
2020-11-24 16:12:39 +08:00
./build/builder.sh /bin/bash -c "make check-proto-product && make unittest"
2021-07-16 14:52:21 +08:00
- name : Upload coverage to Codecov
2021-11-22 22:59:14 +08:00
if : "github.repository == 'milvus-io/milvus' && (github.event_name != 'issue_comment' || steps.is_organization_member.outputs.is-member == 'true')"
2021-09-24 16:41:55 +08:00
uses : codecov/codecov-action@v2
2021-07-16 14:52:21 +08:00
with :
token : ${{ secrets.CODECOV_TOKEN }}
2021-10-19 14:52:34 +08:00
files : ./go_coverage.txt,./lcov_output.info
2021-07-16 14:52:21 +08:00
name : ubuntu-${{ matrix.ubuntu }}-unittests