Skip to content

Build circle-interpreter #11

Build circle-interpreter

Build circle-interpreter #11

name: Build circle-interpreter
on:
# TODO turn on schedule
#schedule:
# # 05:00 AM (KST, UTC+9:00) Mon-Fri
# - cron: '00 20 * * 0-4'
workflow_dispatch:
inputs:
cirint_version:
description: 'The version of circle-interpreter'
required: true
default: '1.30.0'
cirint_description:
description: 'Description of changelog for circle-interpreter'
required: true
defaults:
run:
shell: bash
# Cancel previous running jobs when pull request is updated
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
onecc-test:
if: github.repository_owner == 'Samsung' || github.repository_owner == 'shs-park'
strategy:
matrix:
# TODO activate jammy
include:
- ubuntu_code: focal
ubuntu_ver: 2004
# TODO update comment ID, these are experimental IDs of issue #14669
comment_id: 2658267907
# - ubuntu_code: jammy
# ubuntu_ver: 2204
# comment_id: 2658268060
# TODO change to the 'ubuntu-latest'
#runs-on: ubuntu-latest
runs-on: [ self-hosted, shs-park ]
container:
image: nnfw/one-devtools:${{ matrix.ubuntu_code }}
options: --user root
env:
NNCC_BUILD: build
NNCC_WORKSPACE: build/release
NNCC_INSTALL_PREFIX: ${{ github.workspace }}/build/release.install
CIRINTP_PREFIX: cirintp
name: circle-interpreter ubuntu ${{ matrix.ubuntu_ver }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install required packages
run: |
apt-get update
apt-get install curl
- name: Build without test
run: |
CIR_INTP_ITEMS="angkor;cwrap;pepper-str;pepper-strcast;pepper-csv2vec;pp"
CIR_INTP_ITEMS="${CIR_INTP_ITEMS};oops;loco;logo-core;logo;locop"
CIR_INTP_ITEMS="${CIR_INTP_ITEMS};hermes;hermes-std;safemain;mio-circle08"
CIR_INTP_ITEMS="${CIR_INTP_ITEMS};luci-compute;luci;luci-interpreter"
CIR_INTP_ITEMS="${CIR_INTP_ITEMS};foder;arser;vconone;circle-interpreter"
echo ${CIR_INTP_ITEMS}
./nncc configure \
-DENABLE_STRICT_BUILD=ON \
-DENABLE_TEST=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DEXTERNALS_BUILD_THREADS=$(nproc) \
-DCMAKE_INSTALL_PREFIX=${NNCC_INSTALL_PREFIX} \
-DBUILD_WHITELIST="${CIR_INTP_ITEMS}"
./nncc build -j$(nproc)
cmake --build ${NNCC_WORKSPACE} -- install
- name: Gather files
run: |
cd ${NNCC_BUILD}
mkdir -p ${CIRINTP_PREFIX}
cp -v ${NNCC_INSTALL_PREFIX}/bin/circle-interpreter ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libloco.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_env.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_import.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_interpreter.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_lang.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_logex.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_log.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_plan.so ./${CIRINTP_PREFIX}/.
cp -v ${NNCC_INSTALL_PREFIX}/lib/libluci_profile.so ./${CIRINTP_PREFIX}/.
# Doesn't actually need this step
- name: Upload Artifact
id: step-upload
uses: actions/upload-artifact@v4
with:
name: circle_intp_${{ matrix.ubuntu_ver }}
retention-days: 3
path: |
${{ env.NNCC_BUILD }}/${{ env.CIRINTP_PREFIX }}/
- name: Create debian package
run: |
cd ${{ env.NNCC_BUILD }}/${{ env.CIRINTP_PREFIX }}
cp -rf ${{ github.workspace }}/infra/debian/circle-interpreter ./debian
ls -alh # TODO remove this
release_date=$(date +%Y%m%d)
version=${{ inputs.cirint_version }}~${release_date}
dch -v "${version}" "${{ inputs.cirint_description }}" -b
cat debian/changelog # TODO remove this
cd ${{ env.NNCC_BUILD }}
tar -caf circle-interpreter_${version}.orig.tar.xz ${{ env.CIRINTP_PREFIX }}
cd ${{ env.NNCC_BUILD }}/${{ env.CIRINTP_PREFIX }}
debuild -S -sa
ls -alh # TODO remove this
cd ${{ env.NNCC_BUILD }} # TODO remove this
ls -alh # TODO remove this
# dput ppa:circletools/nightly circle-interpreter_${version}_source.changes
# refer https://docs.github.com/en/rest/issues/comments?apiVersion=2022-11-28#update-an-issue-comment
# TODO update comment id from experiment to official
# TODO enable update URL when key is available
- name: Update URL
if: false
run: |
exit(1) # TODO enable posting comments
echo "Artifact URL is ${{ steps.step-upload.outputs.artifact-url }}"
COMMENT_ADDR=https://api.github.com/repos/Samsung/ONE/issues/comments/${{ matrix.comment_id }}
curl -L \
-X PATCH \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.COMMENT_UPDATE_KEY }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
${COMMENT_ADDR} \
-d '{"body":"${{ steps.step-upload.outputs.artifact-url }}"}'