Nightly Build #50
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Nightly Build | |
on: | |
workflow_dispatch: | |
schedule: | |
- cron: '0 20 * * *' | |
env: | |
HELM_NAME: automq-for-rocketmq | |
DOCKER_REPO: automqinc/automq-for-rocketmq | |
DOCKER_NIGHTLY_VERSION: nightly | |
JOB_INDEX: 1 | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
if: github.repository == 'AutoMQ/automq-for-rocketmq' | |
timeout-minutes: 30 | |
outputs: | |
version-json: ${{ steps.build_images.outputs.nightly-version }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install flatc | |
run: sudo bash install_flatc.sh | |
- uses: actions/setup-java@v3 | |
with: | |
distribution: "temurin" | |
java-version: "17" | |
cache: "maven" | |
- name: Build with Maven | |
run: | | |
mvn -Prelease-all clean install -U | |
- name: docker-login | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ secrets.DOCKERHUB_USER }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Build and save docker images | |
id: build_images | |
working-directory: ./distribution/docker | |
env: | |
DOCKER_REPO: ${{ env.DOCKER_REPO }} | |
DOCKER_NIGHTLY_VERSION: ${{ env.DOCKER_NIGHTLY_VERSION }} | |
run: | | |
FULL_NODE_VERSION=$(git ls-remote --tags | awk -F '/' 'END{print $3}') | |
COMMIT_VERSION=$(git rev-parse --short HEAD) | |
NIGHT_VERSION=${FULL_NODE_VERSION}-${COMMIT_VERSION}-${DOCKER_NIGHTLY_VERSION} | |
VERSION=${FULL_NODE_VERSION} | |
sh build-ci.sh ${DOCKER_REPO} ${VERSION} | |
docker tag ${DOCKER_REPO}:${VERSION} ${DOCKER_REPO}:${NIGHT_VERSION} | |
docker push ${DOCKER_REPO}:${NIGHT_VERSION} | |
docker push ${DOCKER_REPO}:${VERSION} | |
echo "nightly-version=$NIGHT_VERSION" >> $GITHUB_OUTPUT | |
deploy: | |
if: ${{ success() }} | |
name: Deploy AutoMQ for RocketMQ | |
needs: [build] | |
runs-on: private-k3s | |
timeout-minutes: 60 | |
outputs: | |
namespace: ${{ steps.create_namespace.outputs.namespace }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Get kubeconfig | |
env: | |
KUBECONFIG_FILE: '${{ secrets.KUBE_CONFIG }}' | |
run: | | |
mkdir -p ~/.kube | |
echo $KUBECONFIG_FILE | base64 -d > ~/.kube/config | |
- name: Create Namespace | |
id: create_namespace | |
env: | |
JOB_INDEX: ${{ env.JOB_INDEX }} | |
run: | | |
REPO_NAME=`echo ${GITHUB_REPOSITORY#*/} | sed -e "s/\//-/g" | cut -c1-36 | tr '[A-Z]' '[a-z]'` | |
NAMESPACE=${REPO_NAME}-${GITHUB_RUN_ID}-${JOB_INDEX} | |
kubectl create namespace $NAMESPACE | |
echo "namespace=$NAMESPACE" >> $GITHUB_OUTPUT | |
- name: Deploy RocketMQ | |
working-directory: distribution/helm | |
env: | |
NAMESPACE: ${{ steps.create_namespace.outputs.namespace }} | |
DOCKER_REPO: ${{ env.DOCKER_REPO }} | |
VERSION: ${{ needs.build.outputs.version-json }} | |
run: | | |
sh deploy-ci.sh ${DOCKER_REPO} ${VERSION} ${NAMESPACE} | |
run_e2e_grpc_java: | |
if: ${{ success() }} | |
name: Run e2e test for grpc java | |
needs: [ build, deploy ] | |
runs-on: private-k3s | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install flatc | |
run: sudo bash install_flatc.sh | |
- name: Build rocketmq dependency | |
run: | | |
mvn clean install -U -DskipTests | |
- uses: actions/checkout@v3 | |
if: always() | |
with: | |
repository: AutoMQ/rocketmq-e2e | |
ref: master | |
path: rocketmq-e2e | |
token: ${{ secrets.PAT_E2E }} | |
- name: e2e test | |
env: | |
HELM_NAME: ${{ env.HELM_NAME }} | |
NAMESPACE: ${{ needs.deploy.outputs.namespace }} | |
run: | | |
cd rocketmq-e2e | |
cd java/e2e && mvn -B test -DnamesrvAddr=${HELM_NAME}-rocketmq-broker.${NAMESPACE}.svc.pve1.local:8081 -DendPoint=${HELM_NAME}-rocketmq-broker.${NAMESPACE}.svc.pve1.local:8081 | |
- name: Publish Test Report | |
uses: mikepenz/action-junit-report@v3 | |
if: always() # always run even if the previous step fails | |
with: | |
report_paths: '**/surefire-reports/TEST-*.xml' | |
annotate_only: true | |
include_passed: true | |
detailed_summary: true | |
run_e2e_remoting_java: | |
if: ${{ success() }} | |
name: Run e2e test for remoting java | |
needs: [ build, deploy ] | |
runs-on: private-k3s | |
steps: | |
- name: Delay | |
env: | |
DELAY_SECONDS: 60 | |
run: | | |
sleep $DELAY_SECONDS | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Install flatc | |
run: sudo bash install_flatc.sh | |
- name: Build rocketmq dependency | |
run: | | |
mvn clean install -U -DskipTests | |
- uses: actions/checkout@v3 | |
if: always() | |
with: | |
repository: AutoMQ/rocketmq-e2e | |
ref: master | |
path: rocketmq-e2e | |
token: ${{ secrets.PAT_E2E }} | |
- name: e2e test | |
env: | |
HELM_NAME: ${{ env.HELM_NAME }} | |
NAMESPACE: ${{ needs.deploy.outputs.namespace }} | |
run: | | |
cd rocketmq-e2e | |
cd java/e2e-v4 && mvn -B test -DnamesrvAddr=${HELM_NAME}-rocketmq-broker.${NAMESPACE}.svc.pve1.local:8081 | |
- name: Publish Test Report | |
uses: mikepenz/action-junit-report@v3 | |
if: always() # always run even if the previous step fails | |
with: | |
report_paths: '**/surefire-reports/TEST-*.xml' | |
annotate_only: true | |
include_passed: true | |
detailed_summary: true | |
clean: | |
if: always() | |
name: Clean AutoMQ for RocketMQ | |
needs: [build, deploy, run_e2e_grpc_java, run_e2e_remoting_java] | |
runs-on: private-k3s | |
timeout-minutes: 60 | |
steps: | |
- name: clean Rocketmq | |
working-directory: distribution/helm | |
env: | |
NAMESPACE: ${{ needs.deploy.outputs.namespace }} | |
DOCKER_REPO: ${{ env.DOCKER_REPO }} | |
run: | | |
sh clean-ci.sh ${NAMESPACE} | |
- uses: apache/rocketmq-test-tool@7d84d276ad7755b1dc5cf9657a7a9bff6ae6d288 | |
name: clean | |
with: | |
action: "clean" | |
ask-config: "${{ secrets.KUBE_CONFIG }}" | |
test-version: "${{ needs.build.outputs.version-json }}" | |
job-id: "${{ env.JOB_INDEX }}" |