Skip to content

Remove redundant protobuf-c #154

Remove redundant protobuf-c

Remove redundant protobuf-c #154

name: Build, test and publish Release
on:
push:
branches:
- main
jobs:
build-test-and-publish-release:
runs-on: ubuntu-latest
steps:
- name: Checkout source code of the repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Update packages
uses: ./.github/actions/update-packages
- name: Set environment variables
uses: ./.github/actions/set-environment-variables
with:
build-type: Release
- name: Install requirements
uses: ./.github/actions/install-requirements
- name: Configure
uses: ./.github/actions/configure
- name: Build
uses: ./.github/actions/build
- name: Test
uses: ./.github/actions/test
- name: Create artifact directory
run: mkdir ${{ env.ARTIFACT_PATH }}
- name: Move license to artifact directory
run: mv ${{ github.workspace }}/LICENSE ${{ env.ARTIFACT_PATH }}/LICENSE
- name: Move third party licenses to artifact directory
run: |
downloadLicense() {
local requirement="${1}"
local requirementPath="${2}"
local licenseUrl="${3}"
printf "[INFO] Downloading %s license file from %s to %s\n" "${requirement}" "${licenseUrl}" "${requirementPath}"
(cd "${requirementPath}" && curl "${licenseUrl}" --output LICENSE)
}
copyLicense() {
local requirement="${1}"
local requirementPath="${2}"
local licensePath="${3}"
printf "[INFO] Copying %s license file %s to %s\n" "${requirement}" "${licensePath}" "${requirementPath}"
cp "${licensePath}" "${requirementPath}"
}
licenseDirPaths="$(sudo find /home/runner/.conan2/p/ -type d -name "licenses" | tr "\n" " ")"
requirements="$(cat conanfile.txt | tr "\n" " " | grep -Po "\[requires\] \K[^\[]+")"
for requirement in $requirements; do
if printf "%s" "${requirement}" | grep -q "gtest/"; then
continue
fi
requirementPath=${{ env.ARTIFACT_PATH }}/thirdparty/${requirement}
mkdir -p "${requirementPath}"
if printf "%s" "${requirement}" | grep -q "protobuf/"; then
downloadLicense "${requirement}" "${requirementPath}" "https://raw.githubusercontent.com/protocolbuffers/protobuf/main/LICENSE"
continue
fi
cacheDirectoryPrefix="$(printf "%s" "${requirement}" | cut -d'/' -f1 | cut -c1-5)"
licenseDirPath="$(printf "%s" "${licenseDirPaths}" | grep -o "/home/runner/.conan2/p/[^ ]*${cacheDirectoryPrefix}[^ ]*/licenses")"
licensePath="${licenseDirPath}/LICENSE"
if [ -e "${licensePath}" ]; then
copyLicense "${requirement}" "${requirementPath}" "${licensePath}"
continue
fi
licensePath="${licenseDirPath}/LICENSE_1_0.txt"
if [ -e "${licensePath}" ]; then
copyLicense "${requirement}" "${requirementPath}" "${licensePath}"
continue
fi
licensePath="${licenseDirPath}/LICENSE.rst"
if [ -e "${licensePath}" ]; then
copyLicense "${requirement}" "${requirementPath}" "${licensePath}"
continue
fi
printf "[ERROR] No license file for %s has been found in %s\n" "${requirement}" "${licenseDirPath}"
return 1
done
- name: Move protobuf model to artifact directory
run: mv ${{ env.RELEASE_PATH }}/libebpfdiscoveryproto/ebpfdiscoveryproto ${{ env.ARTIFACT_PATH }}/ebpfdiscoveryproto
- name: Move binaries to artifact directory
run: mv ${{ env.RELEASE_PATH }}/bin ${{ env.ARTIFACT_PATH }}/bin
- name: Remove test binaries from artifact directory
run: find ${{ env.ARTIFACT_PATH }}/* -name 'test*' -exec rm {} \;
- name: Zip artifact directory contents
run: |
cd ${{ env.ARTIFACT_PATH }}
zip -r ${{ env.ARTIFACT_VERSION }}.zip .
- name: Publish zip to GitHub OCI registry
run: |
cd ${{ env.ARTIFACT_PATH }}
printf "%s" ${{ secrets.GITHUB_TOKEN }} | docker run --rm -i -v $(pwd):/workspace ghcr.io/oras-project/oras:v1.0.1 push -u ${{ github.actor }} --password-stdin ${{ env.GITHUB_OCI_REGISTRY_ADDRESS }}/${{ env.LOWERCASE_REPOSITORY_NAME }}-linux-x86_64:${{ env.ARTIFACT_VERSION }},latest ${{ env.ARTIFACT_VERSION }}.zip