Skip to content

ci: add github workflow #9

ci: add github workflow

ci: add github workflow #9

Workflow file for this run

name: build-cn10k
on:
push:
schedule:
- cron: "0 0 * * 1"
pull_request:
permissions:
contents: write
pages: write
id-token: write
packages: write
jobs:
ubuntu-cn10k-build:
name: ubuntu-cn10k-arm64
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
include:
- arch: aarch64
distro: ubuntu22.04
compiler: gcc
library: static
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Generate cache keys
id: get_ref_keys
run: |
echo 'ccache=ccache-${{ matrix.distro }}-${{ matrix.compiler }}-${{ matrix.arch }}-'$(date -u +%Y-w%W) >> $GITHUB_OUTPUT
- name: Retrieve ccache cache
uses: actions/cache@v4
with:
path: ~/.ccache
key: ${{ steps.get_ref_keys.outputs.ccache }}-${{ github.ref }}
restore-keys: |
${{ steps.get_ref_keys.outputs.ccache }}-refs/heads/main
- name: Extract version details
id: version
run: |
mkdir -p "${PWD}/artifacts"
git tag --points-at HEAD > /tmp/tags
cat /tmp/tags
[ -s /tmp/tags ] && PKG_POSTFIX= || PKG_POSTFIX=-devel
echo "PKG_VERSION_NAME=`cat VERSION`" >> "${PWD}/artifacts/env"
echo "PKG_POSTFIX=${PKG_POSTFIX}" >> "${PWD}/artifacts/env"
[[ "$PKG_POSTFIX" == "-devel" ]] && TAG=devel || TAG=${PKG_VERSION_NAME}
echo "TAG=${TAG}" >> "${PWD}/artifacts/env"
- uses: uraimo/[email protected]
name: Build OCTEON-EP and generate package
id: build
with:
arch: ${{ matrix.arch }}
distro: ${{ matrix.distro }}
githubToken: ${{ github.token }}
setup: |
mkdir -p ~/.ccache
dockerRunArgs: |
--volume "${PWD}/artifacts:/artifacts"
--volume "${HOME}/.ccache:/root/.ccache"
shell: /bin/bash
install: |
apt-get update -q -y
apt-get install -y build-essential gcc meson ccache git doxygen apt-utils dialog
apt-get install -y ccache git software-properties-common wget libconfig-dev
run: |
source /artifacts/env
git config --global --add safe.directory "${PWD}"
DISTRO=ubuntu-`lsb_release -rs`
echo "DISTRO=${DISTRO}" >> /artifacts/env
export CC='ccache gcc'
export AR='ar'
export LD='ld'
export CFLAGS="-DUSE_PEM_AND_DPI_PF=1"
export INSTALL_PATH=$PWD/install/usr
cd target/libs/octep_cp_lib
echo "cache_dir = /root/.ccache" > /root/.ccache/ccache.conf
ccache -p
make install
cd -
cd target/apps/octep_cp_agent/
CFLAGS="-I$INSTALL_PATH/include" LDFLAGS="-L$INSTALL_PATH/lib" make install
cp cn103-102.cfg $INSTALL_PATH/bin/.
cp cn106xx.cfg $INSTALL_PATH/bin/.
cd -
mkdir -p "${PWD}/install/debian"
mkdir -p "${PWD}/install/DEBIAN"
cd "${PWD}/install"
echo 'Source: OCTEON-EP' > debian/control
echo 'Package: oct-ep-target-cn10k'$PKG_POSTFIX >> DEBIAN/control
echo 'Version: '$PKG_VERSION_NAME >> DEBIAN/control
echo "Depends: `dpkg-shlibdeps -O usr/bin/octep_cp_agent | awk -F'Depends=' '{print $2}'`" >> DEBIAN/control
echo "Maintainer: Jerin Jacob ([email protected])" >> DEBIAN/control
echo "Architecture: arm64" >> DEBIAN/control
echo "Description: Octeon-ep agent for Marvell Octeon 10" >> DEBIAN/control
rm -rf debian
cd -
mv "${PWD}/install" "${PWD}/oct-ep-target-cn10k${PKG_POSTFIX}_${PKG_VERSION_NAME}_arm64"
dpkg --build "${PWD}/oct-ep-target-cn10k${PKG_POSTFIX}_${PKG_VERSION_NAME}_arm64"
cp "${PWD}/oct-ep-target-cn10k${PKG_POSTFIX}_${PKG_VERSION_NAME}_arm64.deb" /artifacts/.
- name: Export version name
id: artifacts
run: |
source "${PWD}/artifacts/env"
echo $PKG_VERSION_NAME
echo "PKG_VERSION_NAME=${PKG_VERSION_NAME}" >> "$GITHUB_OUTPUT"
echo $PKG_POSTFIX
echo "PKG_POSTFIX=${PKG_POSTFIX}" >> "$GITHUB_OUTPUT"
echo $DISTRO
echo "DISTRO=${DISTRO}" >> "$GITHUB_OUTPUT"
echo $TAG
echo "TAG=${TAG}" >> "$GITHUB_OUTPUT"
- name: Delete existing release
if: ${{ github.event_name == 'push' }}
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release delete oct-ep-target-cn10k-${{ steps.artifacts.outputs.PKG_VERSION_NAME }}-ubuntu-${{ steps.artifacts.outputs.DISTRO }}-${{ steps.artifacts.outputs.TAG }} --cleanup-tag -y
continue-on-error: true
- name: Release octeon ep cn10k package
uses: softprops/[email protected]
if: ${{ github.event_name == 'push' }}
with:
tag_name: oct-ep-target-cn10k-${{ steps.artifacts.outputs.PKG_VERSION_NAME }}-ubuntu-${{ steps.artifacts.outputs.DISTRO }}-${{ steps.artifacts.outputs.TAG }}
files: |
${{ github.workspace }}/artifacts/oct-ep-target-cn10k${{ steps.artifacts.outputs.PKG_POSTFIX }}_${{ steps.artifacts.outputs.PKG_VERSION_NAME }}_arm64.deb
- name: Dispatch package update event
if: ${{ github.event_name == 'push' }}
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.PPA_REPO_SECRET }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/marvellembeddedprocessors/packages/dispatches \
-d '{"event_type":"dispatch-event", "client_payload": {"package" : "octeon-ep",
"tag": "oct-ep-target-cn10k-${{ steps.artifacts.outputs.PKG_VERSION_NAME }}-ubuntu-${{ steps.artifacts.outputs.DISTRO }}-${{ steps.artifacts.outputs.TAG }}",
"has_dpdk" : "false", "distro" : "${{ steps.artifacts.outputs.DISTRO }}"}}'