Create rt-test.yml #1
This file contains hidden or 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: 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 | ||
| { | ||
| "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 | ||