Skip to content

daily e2e tests for ibmcloud #581

daily e2e tests for ibmcloud

daily e2e tests for ibmcloud #581

# (C) Copyright Confidential Containers Contributors 2023.
# SPDX-License-Identifier: Apache-2.0
#
# Build and push container images for each cloud provider.
---
name: daily e2e tests for ibmcloud
on:
schedule:
# Runs "at 05:00(UTC time) every day" (see https://crontab.guru)
# will base on default branch `main`
- cron: '0 5 * * *'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
daily-e2e-tests:
name: e2e tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- type: s390x-non-secure-execution
- type: libvirt_amd64
- type: libvirt_s390x
- type: ibmse
steps:
- name: Checkout the code
uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get update -y
sudo apt-get install -y curl
sudo curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
echo "Install IBM Cloud CLI"
curl -fsSL https://clis.cloud.ibm.com/install/linux | sh
echo "Install COS Plugin"
ibmcloud plugin install cloud-object-storage -f
- name: Config IBM COS
run: |
ibmcloud cos config crn --crn "$crn" --force | grep -v ^FAILED$ || exit 1
ibmcloud cos config auth --method HMAC | grep -v ^FAILED$ || exit 1
echo -e "$access_key_id" "\n" "$secret_access_key" | ibmcloud cos config hmac
ibmcloud cos config endpoint-url --url "$endpoint" | grep -v ^FAILED$ || exit 1
ibmcloud cos config list
env:
crn: ${{ secrets.IBM_E2E_COS_CRN }}
endpoint: "https://s3.jp-tok.cloud-object-storage.appdomain.cloud"
access_key_id: ${{ secrets.IBM_E2E_COS_ACCESS_KEY_ID }}
secret_access_key: ${{ secrets.IBM_E2E_COS_SECRET_ACCESS_KEY }}
- name: Check e2e test result
run: |
date_name=$(date +"%y%m%d")
echo "$date_name"
log_name=$(ibmcloud cos objects --bucket "$bucket_name" |grep "$date_name" |grep ${{matrix.type}} | awk 'END { print $1 }')
echo "$log_name"
ibmcloud cos object-get --bucket daily-e2e-test-bucket --key="$log_name" "$log_name"
cat "$log_name"
last_line=$(awk 'END {print}' "$log_name")
if [[ $last_line = "Finished: SUCCESS" ]]; then
echo "ibmcloud e2e test (${{matrix.type}}) is passed."
else
echo "ibmcloud e2e test (${{matrix.type}}) is failed."
exit 2
fi
caa_commitid=$(< "$log_name" grep -oP 'CAA commit_id: \K\S+')
echo "The CAA commit_id: ${caa_commitid}"
echo "${caa_commitid}" > caa_commitid
env:
bucket_name : "daily-e2e-test-bucket"
- name: Login to Quay container Registry
uses: docker/login-action@v3
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: Download and Push podvm oci images
run: |
caa_commit_id=$(cat caa_commitid)
echo "The built podvm image is based on CAA commit_id: ${caa_commit_id}"
arch_string=""
podvm_docker_name=""
if [[ "${{matrix.type}}" == "libvirt_amd64" ]] || [[ "${{matrix.type}}" == "libvirt_s390x" ]]; then
case "${{matrix.type}}" in
libvirt_amd64)
arch_string="amd64"
;;
libvirt_s390x)
arch_string="s390x"
;;
esac
echo "Checking built out generic ubuntu ${arch_string} docker images"
podvm_image_tar_name="podvm-generic-ubuntu-${arch_string}-${caa_commit_id}.tar"
podvm_docker_name="quay.io/confidential-containers/podvm-generic-ubuntu-${arch_string}:${caa_commit_id}"
manifest_url="https://quay.io/v2/confidential-containers/podvm-generic-ubuntu-${arch_string}/manifests/${caa_commit_id}"
curl -I --silent "${manifest_url}" > header.txt
if grep -q "HTTP/2 200" "header.txt"; then
echo "${podvm_docker_name} exists."
else
echo "downloading ${podvm_image_tar_name}"
ibmcloud cos object-get --bucket daily-e2e-test-bucket --key="$podvm_image_tar_name" "$podvm_image_tar_name"
docker load -i "$podvm_image_tar_name"
docker push "${podvm_docker_name}"
echo "${podvm_docker_name} is pushed"
fi
fi
if [[ "${{matrix.type}}" == "ibmse" ]]; then
echo "Checking built out generic fedora s390x se enabled docker image"
podvm_image_tar_name="podvm-generic-fedora-s390x-se-${caa_commit_id}.tar"
echo "Checkouting commit: ${caa_commit_id}"
git checkout "${caa_commit_id}"
image_tag=$(sha256sum src/cloud-api-adaptor/versions.yaml | awk -F " " '{ print $1 }')
echo "fedora s390x se image tag: $image_tag"
podvm_docker_name="quay.io/confidential-containers/podvm-generic-fedora-s390x-se:${image_tag}"
manifest_url="https://quay.io/v2/confidential-containers/podvm-generic-fedora-s390x-se/manifests/${image_tag}"
curl -I --silent "${manifest_url}" > header.txt
if grep -q "HTTP/2 200" "header.txt"; then
echo "${podvm_docker_name} exists."
else
echo "downloading ${podvm_image_tar_name}"
ibmcloud cos object-get --bucket daily-e2e-test-bucket --key="$podvm_image_tar_name" "$podvm_image_tar_name"
docker load -i "$podvm_image_tar_name"
echo "show docker images"
docker images
echo docker push "${podvm_docker_name}"
echo "${podvm_docker_name} is pushed"
fi
fi
env:
bucket_name : "daily-e2e-test-bucket"