From: Wei Liu <wei.liu2@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: Wei Liu <wei.liu2@citrix.com>, Doug Goldstein <cardoe@cardoe.com>
Subject: [PATCH 2/2] automation: break .gitlab-yaml into smaller files
Date: Thu, 22 Nov 2018 15:49:03 +0000 [thread overview]
Message-ID: <20181122154903.27414-3-wei.liu2@citrix.com> (raw)
In-Reply-To: <20181122154903.27414-1-wei.liu2@citrix.com>
Break out files for build jobs and test jobs. Keep the top level
.gitlab-ci.yaml small.
Signed-off-by: Wei Liu <wei.liu2@citrix.com>
---
.gitlab-ci.yml | 417 +---------------------------------------
automation/gitlab-ci/build.yaml | 379 ++++++++++++++++++++++++++++++++++++
automation/gitlab-ci/test.yaml | 34 ++++
3 files changed, 416 insertions(+), 414 deletions(-)
create mode 100644 automation/gitlab-ci/build.yaml
create mode 100644 automation/gitlab-ci/test.yaml
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 57f5dc7013..c8bd7519d5 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,417 +2,6 @@ stages:
- build
- test
-.build-tmpl: &build
- stage: build
- image: registry.gitlab.com/xen-project/xen/${CONTAINER}
- script:
- - ./automation/scripts/build 2>&1 | tee build.log
- artifacts:
- paths:
- - binaries/
- - xen-config
- - '*.log'
- when: always
- except:
- - master
- - smoke
- - /^coverity-tested\/.*/
- - /^stable-.*/
-
-.gcc-tmpl:
- variabes: &gcc
- CC: gcc
- CXX: g++
-
-.clang-tmpl:
- variables: &clang
- CC: clang
- CXX: clang++
- clang: y
-
-.x86-64-build-tmpl:
- <<: *build
- variables:
- XEN_TARGET_ARCH: x86_64
- tags:
- - x86_64
-
-.x86-64-build:
- extends: .x86-64-build-tmpl
- variables:
- debug: n
-
-.x86-64-build-debug:
- extends: .x86-64-build-tmpl
- variables:
- debug: y
-
-.x86-32-build-tmpl:
- <<: *build
- variables:
- XEN_TARGET_ARCH: x86_32
- tags:
- - x86_32
-
-.x86-32-build:
- extends: .x86-32-build-tmpl
- variables:
- debug: n
-
-.x86-32-build-debug:
- extends: .x86-32-build-tmpl
- variables:
- debug: y
-
-.gcc-x86-64-build:
- extends: .x86-64-build
- variables:
- <<: *gcc
-
-.gcc-x86-64-build-debug:
- extends: .x86-64-build-debug
- variables:
- <<: *gcc
-
-.gcc-x86-32-build:
- extends: .x86-32-build
- variables:
- <<: *gcc
-
-.gcc-x86-32-build-debug:
- extends: .x86-32-build-debug
- variables:
- <<: *gcc
-
-.clang-x86-64-build:
- extends: .x86-64-build
- variables:
- <<: *clang
-
-.clang-x86-64-build-debug:
- extends: .x86-64-build-debug
- variables:
- <<: *clang
-
-.clang-x86-32-build:
- extends: .x86-32-build
- variables:
- <<: *clang
-
-.clang-x86-32-build-debug:
- extends: .x86-32-build-debug
- variables:
- <<: *clang
-
-.arm64-build-tmpl:
- <<: *build
- variables:
- XEN_TARGET_ARCH: arm64
- tags:
- - arm64
-
-.arm64-build:
- extends: .arm64-build-tmpl
- variables:
- debug: n
-
-.arm64-build-debug:
- extends: .arm64-build-tmpl
- variables:
- debug: y
-
-.gcc-arm64-build:
- extends: .arm64-build
- variables:
- <<: *gcc
-
-.gcc-arm64-build-debug:
- extends: .arm64-build-debug
- variables:
- <<: *gcc
-
-# Jobs below this line
-
-centos-7-2-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: centos:7.2
-
-centos-7-2-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: centos:7.2
-
-centos-7-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: centos:7
-
-centos-7-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: centos:7
-
-debian-jessie-clang:
- extends: .clang-x86-64-build
- variables:
- CONTAINER: debian:jessie
-
-debian-jessie-clang-debug:
- extends: .clang-x86-64-build-debug
- variables:
- CONTAINER: debian:jessie
-
-debian-jessie-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: debian:jessie
-
-debian-jessie-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: debian:jessie
-
-debian-jessie-32-clang:
- extends: .clang-x86-32-build
- variables:
- CONTAINER: debian:jessie-i386
-
-debian-jessie-32-clang-debug:
- extends: .clang-x86-32-build-debug
- variables:
- CONTAINER: debian:jessie-i386
-
-debian-jessie-32-gcc:
- extends: .gcc-x86-32-build
- variables:
- CONTAINER: debian:jessie-i386
-
-debian-jessie-32-gcc-debug:
- extends: .gcc-x86-32-build-debug
- variables:
- CONTAINER: debian:jessie-i386
-
-debian-stretch-clang:
- extends: .clang-x86-64-build
- variables:
- CONTAINER: debian:stretch
-
-debian-stretch-clang-debug:
- extends: .clang-x86-64-build-debug
- variables:
- CONTAINER: debian:stretch
-
-debian-stretch-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: debian:stretch
-
-debian-stretch-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: debian:stretch
-
-debian-stretch-32-clang:
- extends: .clang-x86-32-build
- variables:
- CONTAINER: debian:stretch-i386
-
-debian-stretch-32-clang-debug:
- extends: .clang-x86-32-build-debug
- variables:
- CONTAINER: debian:stretch-i386
-
-debian-stretch-32-gcc:
- extends: .gcc-x86-32-build
- variables:
- CONTAINER: debian:stretch-i386
-
-debian-stretch-32-gcc-debug:
- extends: .gcc-x86-32-build-debug
- variables:
- CONTAINER: debian:stretch-i386
-
-debian-unstable-clang:
- extends: .clang-x86-64-build
- variables:
- CONTAINER: debian:unstable
-
-debian-unstable-clang-debug:
- extends: .clang-x86-64-build-debug
- variables:
- CONTAINER: debian:unstable
-
-debian-unstable-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: debian:unstable
-
-debian-unstable-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: debian:unstable
-
-debian-unstable-gcc-randconfig:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: debian:unstable
- RANDCONFIG: y
-
-debian-unstable-gcc-debug-randconfig:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: debian:unstable
- RANDCONFIG: y
-
-debian-unstable-32-clang:
- extends: .clang-x86-32-build
- variables:
- CONTAINER: debian:unstable-i386
-
-debian-unstable-32-clang-debug:
- extends: .clang-x86-32-build-debug
- variables:
- CONTAINER: debian:unstable-i386
-
-debian-unstable-32-gcc:
- extends: .gcc-x86-32-build
- variables:
- CONTAINER: debian:unstable-i386
-
-debian-unstable-32-gcc-debug:
- extends: .gcc-x86-32-build-debug
- variables:
- CONTAINER: debian:unstable-i386
-
-# Ubuntu Trusty's Clang is 3.4 while Xen requires 3.5
-
-ubuntu-trusty-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: ubuntu:trusty
-
-ubuntu-trusty-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: ubuntu:trusty
-
-ubuntu-xenial-clang:
- extends: .clang-x86-64-build
- variables:
- CONTAINER: ubuntu:xenial
-
-ubuntu-xenial-clang-debug:
- extends: .clang-x86-64-build-debug
- variables:
- CONTAINER: ubuntu:xenial
-
-ubuntu-xenial-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: ubuntu:xenial
-
-ubuntu-xenial-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: ubuntu:xenial
-
-ubuntu-bionic-clang:
- extends: .clang-x86-64-build
- variables:
- CONTAINER: ubuntu:bionic
-
-ubuntu-bionic-clang-debug:
- extends: .clang-x86-64-build-debug
- variables:
- CONTAINER: ubuntu:bionic
-
-ubuntu-bionic-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: ubuntu:bionic
-
-ubuntu-bionic-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: ubuntu:bionic
-
-opensuse-leap-clang:
- extends: .clang-x86-64-build
- variables:
- CONTAINER: suse:opensuse-leap
-
-opensuse-leap-clang-debug:
- extends: .clang-x86-64-build-debug
- variables:
- CONTAINER: suse:opensuse-leap
-
-opensuse-leap-gcc:
- extends: .gcc-x86-64-build
- variables:
- CONTAINER: suse:opensuse-leap
-
-opensuse-leap-gcc-debug:
- extends: .gcc-x86-64-build-debug
- variables:
- CONTAINER: suse:opensuse-leap
-
-# Arm builds
-
-debian-unstable-gcc-arm64:
- extends: .gcc-arm64-build
- variables:
- CONTAINER: debian:unstable-arm64v8
-
-debian-unstable-gcc-debug-arm64:
- extends: .gcc-arm64-build-debug
- variables:
- CONTAINER: debian:unstable-arm64v8
-
-debian-unstable-gcc-arm64-randconfig:
- extends: .gcc-arm64-build
- variables:
- CONTAINER: debian:unstable-arm64v8
- RANDCONFIG: y
-
-debian-unstable-gcc-debug-arm64-randconfig:
- extends: .gcc-arm64-build-debug
- variables:
- CONTAINER: debian:unstable-arm64v8
- RANDCONFIG: y
-
-
-# Test jobs
-qemu-smoke-x86-64-gcc:
- stage: test
- image: registry.gitlab.com/xen-project/xen/${CONTAINER}
- variables:
- CONTAINER: debian:stretch
- script:
- - ./automation/scripts/qemu-smoke-x86-64.sh 2>&1 | tee qemu-smoke-x86-64.log
- artifacts:
- paths:
- - smoke.serial
- - '*.log'
- when: always
- dependencies:
- - debian-stretch-gcc-debug
- tags:
- - x86_64
-
-qemu-smoke-x86-64-clang:
- stage: test
- image: registry.gitlab.com/xen-project/xen/${CONTAINER}
- variables:
- CONTAINER: debian:stretch
- script:
- - ./automation/scripts/qemu-smoke-x86-64.sh 2>&1 | tee qemu-smoke-x86-64.log
- artifacts:
- paths:
- - smoke.serial
- - '*.log'
- when: always
- dependencies:
- - debian-unstable-clang-debug
- tags:
- - x86_64
+include:
+ - 'automation/gitlab-ci/build.yaml'
+ - 'automation/gitlab-ci/test.yaml'
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
new file mode 100644
index 0000000000..48bb039ab4
--- /dev/null
+++ b/automation/gitlab-ci/build.yaml
@@ -0,0 +1,379 @@
+.build-tmpl: &build
+ stage: build
+ image: registry.gitlab.com/xen-project/xen/${CONTAINER}
+ script:
+ - ./automation/scripts/build 2>&1 | tee build.log
+ artifacts:
+ paths:
+ - binaries/
+ - xen-config
+ - '*.log'
+ when: always
+ except:
+ - master
+ - smoke
+ - /^coverity-tested\/.*/
+ - /^stable-.*/
+
+.gcc-tmpl:
+ variabes: &gcc
+ CC: gcc
+ CXX: g++
+
+.clang-tmpl:
+ variables: &clang
+ CC: clang
+ CXX: clang++
+ clang: y
+
+.x86-64-build-tmpl:
+ <<: *build
+ variables:
+ XEN_TARGET_ARCH: x86_64
+ tags:
+ - x86_64
+
+.x86-64-build:
+ extends: .x86-64-build-tmpl
+ variables:
+ debug: n
+
+.x86-64-build-debug:
+ extends: .x86-64-build-tmpl
+ variables:
+ debug: y
+
+.x86-32-build-tmpl:
+ <<: *build
+ variables:
+ XEN_TARGET_ARCH: x86_32
+ tags:
+ - x86_32
+
+.x86-32-build:
+ extends: .x86-32-build-tmpl
+ variables:
+ debug: n
+
+.x86-32-build-debug:
+ extends: .x86-32-build-tmpl
+ variables:
+ debug: y
+
+.gcc-x86-64-build:
+ extends: .x86-64-build
+ variables:
+ <<: *gcc
+
+.gcc-x86-64-build-debug:
+ extends: .x86-64-build-debug
+ variables:
+ <<: *gcc
+
+.gcc-x86-32-build:
+ extends: .x86-32-build
+ variables:
+ <<: *gcc
+
+.gcc-x86-32-build-debug:
+ extends: .x86-32-build-debug
+ variables:
+ <<: *gcc
+
+.clang-x86-64-build:
+ extends: .x86-64-build
+ variables:
+ <<: *clang
+
+.clang-x86-64-build-debug:
+ extends: .x86-64-build-debug
+ variables:
+ <<: *clang
+
+.clang-x86-32-build:
+ extends: .x86-32-build
+ variables:
+ <<: *clang
+
+.clang-x86-32-build-debug:
+ extends: .x86-32-build-debug
+ variables:
+ <<: *clang
+
+.arm64-build-tmpl:
+ <<: *build
+ variables:
+ XEN_TARGET_ARCH: arm64
+ tags:
+ - arm64
+
+.arm64-build:
+ extends: .arm64-build-tmpl
+ variables:
+ debug: n
+
+.arm64-build-debug:
+ extends: .arm64-build-tmpl
+ variables:
+ debug: y
+
+.gcc-arm64-build:
+ extends: .arm64-build
+ variables:
+ <<: *gcc
+
+.gcc-arm64-build-debug:
+ extends: .arm64-build-debug
+ variables:
+ <<: *gcc
+
+# Jobs below this line
+
+centos-7-2-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: centos:7.2
+
+centos-7-2-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: centos:7.2
+
+centos-7-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: centos:7
+
+centos-7-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: centos:7
+
+debian-jessie-clang:
+ extends: .clang-x86-64-build
+ variables:
+ CONTAINER: debian:jessie
+
+debian-jessie-clang-debug:
+ extends: .clang-x86-64-build-debug
+ variables:
+ CONTAINER: debian:jessie
+
+debian-jessie-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: debian:jessie
+
+debian-jessie-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: debian:jessie
+
+debian-jessie-32-clang:
+ extends: .clang-x86-32-build
+ variables:
+ CONTAINER: debian:jessie-i386
+
+debian-jessie-32-clang-debug:
+ extends: .clang-x86-32-build-debug
+ variables:
+ CONTAINER: debian:jessie-i386
+
+debian-jessie-32-gcc:
+ extends: .gcc-x86-32-build
+ variables:
+ CONTAINER: debian:jessie-i386
+
+debian-jessie-32-gcc-debug:
+ extends: .gcc-x86-32-build-debug
+ variables:
+ CONTAINER: debian:jessie-i386
+
+debian-stretch-clang:
+ extends: .clang-x86-64-build
+ variables:
+ CONTAINER: debian:stretch
+
+debian-stretch-clang-debug:
+ extends: .clang-x86-64-build-debug
+ variables:
+ CONTAINER: debian:stretch
+
+debian-stretch-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: debian:stretch
+
+debian-stretch-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: debian:stretch
+
+debian-stretch-32-clang:
+ extends: .clang-x86-32-build
+ variables:
+ CONTAINER: debian:stretch-i386
+
+debian-stretch-32-clang-debug:
+ extends: .clang-x86-32-build-debug
+ variables:
+ CONTAINER: debian:stretch-i386
+
+debian-stretch-32-gcc:
+ extends: .gcc-x86-32-build
+ variables:
+ CONTAINER: debian:stretch-i386
+
+debian-stretch-32-gcc-debug:
+ extends: .gcc-x86-32-build-debug
+ variables:
+ CONTAINER: debian:stretch-i386
+
+debian-unstable-clang:
+ extends: .clang-x86-64-build
+ variables:
+ CONTAINER: debian:unstable
+
+debian-unstable-clang-debug:
+ extends: .clang-x86-64-build-debug
+ variables:
+ CONTAINER: debian:unstable
+
+debian-unstable-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: debian:unstable
+
+debian-unstable-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: debian:unstable
+
+debian-unstable-gcc-randconfig:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: debian:unstable
+ RANDCONFIG: y
+
+debian-unstable-gcc-debug-randconfig:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: debian:unstable
+ RANDCONFIG: y
+
+debian-unstable-32-clang:
+ extends: .clang-x86-32-build
+ variables:
+ CONTAINER: debian:unstable-i386
+
+debian-unstable-32-clang-debug:
+ extends: .clang-x86-32-build-debug
+ variables:
+ CONTAINER: debian:unstable-i386
+
+debian-unstable-32-gcc:
+ extends: .gcc-x86-32-build
+ variables:
+ CONTAINER: debian:unstable-i386
+
+debian-unstable-32-gcc-debug:
+ extends: .gcc-x86-32-build-debug
+ variables:
+ CONTAINER: debian:unstable-i386
+
+# Ubuntu Trusty's Clang is 3.4 while Xen requires 3.5
+
+ubuntu-trusty-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: ubuntu:trusty
+
+ubuntu-trusty-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: ubuntu:trusty
+
+ubuntu-xenial-clang:
+ extends: .clang-x86-64-build
+ variables:
+ CONTAINER: ubuntu:xenial
+
+ubuntu-xenial-clang-debug:
+ extends: .clang-x86-64-build-debug
+ variables:
+ CONTAINER: ubuntu:xenial
+
+ubuntu-xenial-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: ubuntu:xenial
+
+ubuntu-xenial-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: ubuntu:xenial
+
+ubuntu-bionic-clang:
+ extends: .clang-x86-64-build
+ variables:
+ CONTAINER: ubuntu:bionic
+
+ubuntu-bionic-clang-debug:
+ extends: .clang-x86-64-build-debug
+ variables:
+ CONTAINER: ubuntu:bionic
+
+ubuntu-bionic-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: ubuntu:bionic
+
+ubuntu-bionic-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: ubuntu:bionic
+
+opensuse-leap-clang:
+ extends: .clang-x86-64-build
+ variables:
+ CONTAINER: suse:opensuse-leap
+
+opensuse-leap-clang-debug:
+ extends: .clang-x86-64-build-debug
+ variables:
+ CONTAINER: suse:opensuse-leap
+
+opensuse-leap-gcc:
+ extends: .gcc-x86-64-build
+ variables:
+ CONTAINER: suse:opensuse-leap
+
+opensuse-leap-gcc-debug:
+ extends: .gcc-x86-64-build-debug
+ variables:
+ CONTAINER: suse:opensuse-leap
+
+# Arm builds
+
+debian-unstable-gcc-arm64:
+ extends: .gcc-arm64-build
+ variables:
+ CONTAINER: debian:unstable-arm64v8
+
+debian-unstable-gcc-debug-arm64:
+ extends: .gcc-arm64-build-debug
+ variables:
+ CONTAINER: debian:unstable-arm64v8
+
+debian-unstable-gcc-arm64-randconfig:
+ extends: .gcc-arm64-build
+ variables:
+ CONTAINER: debian:unstable-arm64v8
+ RANDCONFIG: y
+
+debian-unstable-gcc-debug-arm64-randconfig:
+ extends: .gcc-arm64-build-debug
+ variables:
+ CONTAINER: debian:unstable-arm64v8
+ RANDCONFIG: y
+
diff --git a/automation/gitlab-ci/test.yaml b/automation/gitlab-ci/test.yaml
new file mode 100644
index 0000000000..0dd5eaec5f
--- /dev/null
+++ b/automation/gitlab-ci/test.yaml
@@ -0,0 +1,34 @@
+# Test jobs
+qemu-smoke-x86-64-gcc:
+ stage: test
+ image: registry.gitlab.com/xen-project/xen/${CONTAINER}
+ variables:
+ CONTAINER: debian:stretch
+ script:
+ - ./automation/scripts/qemu-smoke-x86-64.sh 2>&1 | tee qemu-smoke-x86-64.log
+ artifacts:
+ paths:
+ - smoke.serial
+ - '*.log'
+ when: always
+ dependencies:
+ - debian-stretch-gcc-debug
+ tags:
+ - x86_64
+
+qemu-smoke-x86-64-clang:
+ stage: test
+ image: registry.gitlab.com/xen-project/xen/${CONTAINER}
+ variables:
+ CONTAINER: debian:stretch
+ script:
+ - ./automation/scripts/qemu-smoke-x86-64.sh 2>&1 | tee qemu-smoke-x86-64.log
+ artifacts:
+ paths:
+ - smoke.serial
+ - '*.log'
+ when: always
+ dependencies:
+ - debian-unstable-clang-debug
+ tags:
+ - x86_64
--
2.11.0
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2018-11-22 15:49 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-22 15:49 [PATCH 0/2] New test and refactoring Wei Liu
2018-11-22 15:49 ` [PATCH 1/2] automation: add a qemu smoke test for clang build Wei Liu
2018-12-05 20:04 ` Doug Goldstein
2018-11-22 15:49 ` Wei Liu [this message]
2018-12-05 22:49 ` [PATCH 2/2] automation: break .gitlab-yaml into smaller files Doug Goldstein
2018-12-04 11:25 ` [PATCH 0/2] New test and refactoring Wei Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181122154903.27414-3-wei.liu2@citrix.com \
--to=wei.liu2@citrix.com \
--cc=cardoe@cardoe.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).