Skip to content

Create rt-test.yml

Create rt-test.yml #1

Workflow file for this run

name: RT image Build
on:
workflow_dispatch:
schedule:
- cron: '0 21 * * TUE' # weekly build on Sun & Wed at 21PM UTC
permissions:
id-token: write
contents: read
env:
RELEASE_NAME: TiberOS RT
ARTIFACTORY_URL: https://af01p-png.devtools.intel.com/artifactory/tiberos-png-local
ARTIFACTORY_ACCOUNT: artifactory-token
ARTIFACTORY_PATH: rt/${{ github.ref_name }} #Artifactory deploy path
CODE_REPO_URL: open-edge-platform/edge-microvisor-toolkit
CODE_REPO_NAME: edge-microvisor-toolkit
CODE_REPO_BRANCH: "3.0"
CHROOT_DIR: $(BUILD_DIR)/worker/chroot
jobs:
image_build:
name: Image Build
runs-on: arc-runner-set
timeout-minutes: 1440 # extend timeout from default 6 hour to 24 hour
environment: production
outputs:
base_url: ${{ steps.compress-image.outputs.base_url }}
upload_dir: ${{ steps.compress-image.outputs.upload_dir }}
images: ${{ steps.compress-image.outputs.images }}
st_images: ${{ steps.compress-image.outputs.st_images }}
raw_image_sizes: ${{ steps.build-rt-image.outputs.raw_image_sizes }}
datetime_as_version: ${{ steps.set-version.outputs.datetime_as_version }}
release_name: ${{ steps.compress-image.outputs.release_name }}
artifactory_url: ${{ steps.compress-image.outputs.artifactory_url }}
artifactory_path: ${{ steps.compress-image.outputs.artifactory_path }}
kernel_version: ${{ steps.compress-image.outputs.kernel_version }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
repository: ${{ env.CODE_REPO_URL }}
ref: ${{ env.CODE_REPO_BRANCH }}
path: ${{ env.CODE_REPO_NAME }}
token: ${{ secrets.SYS_MICROVISOR_BUILDER_PAT }}
- name: Set DATETIME_AS_VERSION
id: set-version
run: |
DATETIME_AS_VERSION=$(date +'%Y%m%d.%H%M')
echo "datetime_as_version=$DATETIME_AS_VERSION" >> "$GITHUB_OUTPUT"
echo "DATETIME_AS_VERSION=$DATETIME_AS_VERSION" >> "$GITHUB_ENV"
- name: Install required packages
run: |
#!/bin/bash
set -e
echo "Installing required packages..."
sudo -E apt-get update
sudo -E apt-get -y install make pip
shell: bash
env:
DEBIAN_FRONTEND: noninteractive
http_proxy: http://proxy-dmz.intel.com:912
https_proxy: http://proxy-dmz.intel.com:912
- name: setup go
uses: actions/setup-go@v5
with:
go-version: 1.23.0
- name: Parse spec files
continue-on-error: true
run: |
cd ${{ env.CODE_REPO_NAME }}
python3 -m pip install -r toolkit/scripts/requirements.txt
python3 toolkit/scripts/spec_parser.py
- name: Build packages
run: |
cd ${{ env.CODE_REPO_NAME }}
pushd toolkit
sudo make -j16 toolchain \
REBUILD_TOOLS=y \
VALIDATE_TOOLCHAIN_GPG=n \
DAILY_BUILD_REPO=./resources/manifests/package/development.repo \
LOG_LEVEL=debug
popd
- name: Build rt image (quick build)
id: build-rt-image
run: |
cd ${{ env.CODE_REPO_NAME }}/toolkit
sudo make image \
REBUILD_PACKAGES=n \
REBUILD_TOOLS=y \
VALIDATE_TOOLCHAIN_GPG=n \
DATETIME_AS_VERSION="${DATETIME_AS_VERSION}" \
LICENSE_CHECK_MODE=warn \
CONFIG_FILE=./imageconfigs/edge-image-rt.json \
EMT_DISTRIB_SPECS=y \
REPO_LIST+=./resources/manifests/package/development.repo \
DAILY_BUILD_REPO=./resources/manifests/package/development.repo
# check for output image to determine the results
shopt -s nullglob
raw_files=(../out/images/edge-image-rt/*.raw)
raw_image_sizes=$(du -sh ../out/images/edge-image-rt/*.raw | tr '\n' ' ')
echo "raw_image_sizes=$raw_image_sizes" >> "$GITHUB_OUTPUT"
if [ ${#raw_files[@]} -eq 0 ]; then
echo "No .raw files were found in the output directory."
exit 1
else
echo "Found .raw files in the output directory:"
printf '%s\n' "${raw_files[@]}"
fi
- name: Build rt dev image
id: build-rt-dev-image
run: |
cd ${{ env.CODE_REPO_NAME }}/toolkit
sudo make image \
REBUILD_PACKAGES=n \
REBUILD_TOOLS=y \
EMT_DISTRIB_SPECS=y \
VALIDATE_TOOLCHAIN_GPG=n \
DATETIME_AS_VERSION="${DATETIME_AS_VERSION}" \
CONFIG_FILE=./imageconfigs/edge-image-rt-dev.json \
DAILY_BUILD_REPO=./resources/manifests/package/development.repo \
REPO_LIST+=./resources/manifests/package/development.repo
- name: compress image
id: compress-image
if: steps.build-rt-image.outcome == 'success'
run: |
cd ${{ env.CODE_REPO_NAME }}
UPLOAD_DIR=$DATETIME_AS_VERSION
echo "upload_dir=$UPLOAD_DIR" >> "$GITHUB_OUTPUT"
cp -r out/images/edge-image-rt/ "$UPLOAD_DIR"
cp -r out/images/edge-image-rt-dev/* "$UPLOAD_DIR"
KERNEL_VERSION=$(jq '.[] | .[] | select(.Name=="kernel-rt") | .Version' ./build/imagegen/edge-image-rt/image_pkg_manifest.json)
echo "kernel_version=$KERNEL_VERSION" >> "$GITHUB_OUTPUT"
echo "KERNEL_VERSION=$KERNEL_VERSION"
find "$UPLOAD_DIR" -type f -exec gzip {} \;
for dir in build/imagegen/edge-image-rt build/imagegen/edge-image-rt-dev;
do
json_files=("$dir"/*.json)
if [ -e "${json_files[0]}" ]; then
for file in "${json_files[@]}";
do
filename=$(basename "$file")
# Extract the directory name to use as a prefix
dirname=$(basename "$dir")
cp "$file" "$UPLOAD_DIR/$dirname-$filename"
echo "$file $UPLOAD_DIR/$dirname-$filename"
done
else
echo "No .json files found in $dir"
fi
done
cp build/spec_parser.json "$UPLOAD_DIR/" | true
find "$UPLOAD_DIR" -type f -exec sh -c 'sha256sum "{}" > "{}".sha256sum' \;
# echo "build commit: $GITHUB_SHA" >> "$UPLOAD_DIR/build_ID"
commit_id=$(git rev-parse HEAD)
echo "build commit: $commit_id" >> "${UPLOAD_DIR}/build_ID"
echo "Github build ID: $GITHUB_RUN_ID" >> "$UPLOAD_DIR/build_ID"
IMAGES=$(find "$UPLOAD_DIR" -name *.raw.* | xargs -n 1 basename | tr '\n' ',')
STABLE_IMAGES=$(echo "$IMAGES" | tr ',' '\n' | grep -v 'edge-readonly-rt-dev-' | tr '\n' ',')
STABLE_IMAGES="${STABLE_IMAGES%,}"
ST_IMAGES=$(echo "$IMAGES" | tr ',' '\n' | grep 'edge-readonly-rt-dev-*' | tr '\n' ',')
ST_IMAGES="${ST_IMAGES%,}"
echo "images=$STABLE_IMAGES" >> "$GITHUB_OUTPUT"
echo "st_images=$ST_IMAGES" >> "$GITHUB_OUTPUT"
echo "release_name=${{ env.RELEASE_NAME }}" >> "$GITHUB_OUTPUT"
echo "artifactory_url=${{ env.ARTIFACTORY_URL }}" >> "$GITHUB_OUTPUT"
echo "artifactory_path=${{ env.ARTIFACTORY_PATH }}" >> "$GITHUB_OUTPUT"
- name: prepare lkg
id: prepare-lkg
if: steps.build-rt-image.outcome == 'success'
run: |
cd ${{ env.CODE_REPO_NAME }}
mkdir -p lkg
cat <<EOF > lkg/lkg-${CODE_REPO_BRANCH}-dev.json
{

Check failure on line 196 in .github/workflows/rt-test.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/rt-test.yml

Invalid workflow file

You have an error in your yaml syntax on line 196
"date": "$(date -u +'%Y-%m-%d')",
"dailybuildid": "3.0.$(date -u +'%Y%m%d')",
"commit": "$(git rev-parse HEAD)"
}
EOF
cp toolkit/resources/manifests/package/toolchain_x86_64.txt lkg/toolchain_x86_64.txt
cp toolkit/resources/manifests/package/pkggen_core_x86_64.txt lkg/pkggen_core_x86_64.txt