diff --git a/.env b/.env index 4eba292e..adbe1dd9 100644 --- a/.env +++ b/.env @@ -71,7 +71,7 @@ CEPH_SHA=latest CEPH_DEVEL_MGR_PATH=../ceph # Atom -ATOM_SHA=f33642d1e01df5b1a6a4140f3b31b33a4bbfd945 +ATOM_SHA=9db69766f40020a2c2aa20ce795e3cedad0139d0 # Demo settings RBD_POOL=rbd diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml index b1f5e606..2a99438f 100644 --- a/.github/workflows/build-container.yml +++ b/.github/workflows/build-container.yml @@ -545,7 +545,7 @@ jobs: strategy: fail-fast: false matrix: - test: ["sanity", "no_huge", "ns_lb_change", "no_subsystems", "auto_load_balance", "state_transitions", "state_transitions_both_gws", "state_transitions_loop", "state_transitions_rand_loop", "late_registration", "late_registration_loop", "4gws", "4gws_loop", "4gws_create_delete", "4gws_create_delete_loop", "namespaces", "namespaces_loop", "mtls", "notify", "ceph_status", "blocklist", "main_exit", "listener_hostname"] + test: ["sanity", "no_huge", "ns_lb_change", "no_subsystems", "auto_load_balance", "state_transitions", "state_transitions_both_gws", "state_transitions_loop", "state_transitions_rand_loop", "late_registration", "late_registration_loop", "4gws", "4gws_loop", "4gws_create_delete", "4gws_create_delete_loop", "namespaces", "namespaces_loop", "mtls", "notify", "ceph_status", "blocklist", "main_exit"] runs-on: ubuntu-latest env: HUGEPAGES: 1024 # 4 spdk instances @@ -680,14 +680,26 @@ jobs: ./tests/atom/clusterBuildTestsRun.sh $NVMEOF_VERSION $CEPH_SHA $ATOM_SHA $ACTION_URL 'nightly' - name: Atom artifact build - if: always() + if: always() && github.event_name != 'schedule' run: ./tests/atom/cpArtifactAndCleanup.sh - - - uses: actions/upload-artifact@v4 - if: always() + + - name: Atom artifact build nightly + if: always() && github.event_name == 'schedule' + run: ./tests/atom/cpArtifactAndCleanup.sh 'nightly' + + - name: Upload artifact for non-schedule events + uses: actions/upload-artifact@v4 + if: always() && github.event_name != 'schedule' + with: + name: atom-artifact + path: /home/cephnvme/artifact_m6.tar.gz + + - name: Upload artifact for schedule events + uses: actions/upload-artifact@v4 + if: always() && github.event_name == 'schedule' with: name: atom-artifact - path: /home/cephnvme/artifact.tar.gz + path: /home/cephnvme/artifact_m7.tar.gz push-images-to-ceph-registry: if: github.event_name == 'release' diff --git a/tests/atom/clusterBuildTestsRun.sh b/tests/atom/clusterBuildTestsRun.sh index 74d50ae9..2eaec0af 100755 --- a/tests/atom/clusterBuildTestsRun.sh +++ b/tests/atom/clusterBuildTestsRun.sh @@ -8,7 +8,8 @@ set -e VERSION=$1 if [ "$2" = "latest" ]; then - CEPH_SHA=$(curl -s https://shaman.ceph.com/api/repos/ceph/main/latest/centos/9/ | jq -r ".[] | select(.archs[] == \"$(uname -m)\" and .status == \"ready\") | .sha1") + # CEPH_SHA=$(curl -s https://shaman.ceph.com/api/repos/ceph/main/latest/centos/9/ | jq -r ".[] | select(.archs[] == \"$(uname -m)\" and .status == \"ready\") | .sha1") + CEPH_SHA=b5c07ab4f77bffd19c88ef47141176982670de94 else CEPH_SHA=$2 fi @@ -16,29 +17,42 @@ ATOM_SHA=$3 ACTION_URL=$4 NIGHTLY=$5 -RUNNER_FILDER='/home/cephnvme/actions-runner-ceph' +RUNNER_FOLDER='/home/cephnvme/actions-runner-ceph' +BUSY_FILE='/home/cephnvme/busyServer.txt' +RUNNER_NIGHTLY_FOLDER='/home/cephnvme/actions-runner-ceph-nightly' +BUSY_NIGHTLY_FILE='/home/cephnvme/busyServerNightly.txt' -# Check if cluster is busy with another run -while true; do - if [ -f "/home/cephnvme/busyServer.txt" ]; then - echo "The server is busy with another github action job, please wait..." - sleep 90 - else - echo "The server is available for use!" - echo $ACTION_URL > /home/cephnvme/busyServer.txt - chmod +rx /home/cephnvme/busyServer.txt - break - fi -done +check_cluster_busy() { + local busy_file=$1 + local action_url=$2 + + while true; do + if [ -f "$busy_file" ]; then + echo "The server is busy with another GitHub Action job, please wait..." + sleep 90 + else + echo "The server is available for use!" + echo "$action_url" > "$busy_file" + chmod +rx "$busy_file" + break + fi + done +} -# Remove previous run data hostname -rm -rf $RUNNER_FILDER/ceph-nvmeof-atom -sudo rm -rf /root/.ssh/atom_backup/artifact/multiIBMCloudServers_m6/* -sudo ls -lta /root/.ssh/atom_backup/artifact/multiIBMCloudServers_m6 +if [ "$5" != "nightly" ]; then + rm -rf $RUNNER_FOLDER/ceph-nvmeof-atom + sudo rm -rf /root/.ssh/atom_backup/artifact/multiIBMCloudServers_m6/* + sudo ls -lta /root/.ssh/atom_backup/artifact/multiIBMCloudServers_m6 + cd $RUNNER_FOLDER +else + rm -rf $RUNNER_NIGHTLY_FOLDER/ceph-nvmeof-atom + sudo rm -rf /root/.ssh/atom_backup/artifact/multiIBMCloudServers_m7/* + sudo ls -lta /root/.ssh/atom_backup/artifact/multiIBMCloudServers_m7 + cd $RUNNER_NIGHTLY_FOLDER +fi # Cloning atom repo -cd $RUNNER_FILDER git clone git@github.ibm.com:NVME-Over-Fiber/ceph-nvmeof-atom.git # Switch to given SHA @@ -50,6 +64,7 @@ sudo docker build -t nvmeof_atom:$ATOM_SHA . set -x if [ "$5" != "nightly" ]; then + check_cluster_busy "$BUSY_FILE" "$ACTION_URL" sudo docker run \ -v /root/.ssh:/root/.ssh \ nvmeof_atom:"$ATOM_SHA" \ @@ -81,13 +96,14 @@ if [ "$5" != "nightly" ]; then --nvmeof-daemon-remove \ --redeploy-gws \ --github-action-deployment \ - --dont-use-mtls \ + --mtls \ --journalctl-to-console \ --dont-power-off-cloud-vms \ --ibm-cloud-key=nokey \ --github-nvmeof-token=nokey \ --env=m6 else + check_cluster_busy "$BUSY_NIGHTLY_FILE" "$ACTION_URL" sudo docker run \ -v /root/.ssh:/root/.ssh \ nvmeof_atom:"$ATOM_SHA" \ @@ -119,12 +135,12 @@ else --nvmeof-daemon-remove \ --redeploy-gws \ --github-action-deployment \ - --dont-use-mtls \ --journalctl-to-console \ --dont-power-off-cloud-vms \ --dont-use-hugepages \ + --concise-output \ --ibm-cloud-key=nokey \ --github-nvmeof-token=nokey \ - --env=m6 + --env=m7 fi set +x diff --git a/tests/atom/cpArtifactAndCleanup.sh b/tests/atom/cpArtifactAndCleanup.sh index 0c426ca7..aaaeb225 100755 --- a/tests/atom/cpArtifactAndCleanup.sh +++ b/tests/atom/cpArtifactAndCleanup.sh @@ -1,16 +1,38 @@ #!/bin/bash -sudo rm -rf /home/cephnvme/artifact/* -sudo ls -lta /home/cephnvme/artifact +NIGHTLY=$1 -sudo rm -rf /home/cephnvme/artifact.tar.gz -sudo ls -lta /home/cephnvme/ +process_artifacts() { + local artifact_dir=$1 + local backup_dir=$2 + local tar_file=$3 + local busy_file=$4 -sudo cp -r /root/.ssh/atom_backup/artifact/multiIBMCloudServers_m6 /home/cephnvme/artifact -sudo ls -lta /home/cephnvme/artifact + sudo rm -rf "${artifact_dir:?}"/* + sudo ls -lta "$artifact_dir" -sudo tar -czf /home/cephnvme/artifact.tar.gz -C /home/cephnvme/artifact . -sudo ls -lta /home/cephnvme/artifact -sudo ls -lta /home/cephnvme -sudo chmod +rx /home/cephnvme/artifact.tar.gz -sudo rm -rf /home/cephnvme/busyServer.txt + sudo rm -rf "$tar_file" + sudo ls -lta "$(dirname "$artifact_dir")" + sudo cp -r "$backup_dir" "$artifact_dir" + sudo ls -lta "$artifact_dir" + + sudo tar -czf "$tar_file" -C "$artifact_dir" . + sudo ls -lta "$artifact_dir" + sudo ls -lta "$(dirname "$artifact_dir")" + sudo chmod +rx "$tar_file" + sudo rm -rf "$busy_file" +} + +if [ "$NIGHTLY" != "nightly" ]; then + process_artifacts \ + "/home/cephnvme/artifact_m6" \ + "/root/.ssh/atom_backup/artifact/multiIBMCloudServers_m6" \ + "/home/cephnvme/artifact_m6.tar.gz" \ + "/home/cephnvme/busyServer.txt" +else + process_artifacts \ + "/home/cephnvme/artifact_m7" \ + "/root/.ssh/atom_backup/artifact/multiIBMCloudServers_m7" \ + "/home/cephnvme/artifact_m7.tar.gz" \ + "/home/cephnvme/busyServerNightly.txt" +fi