Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Align version with zenoh-c (#438) #441

Merged
merged 4 commits into from
Jun 25, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions .github/workflows/enforce-linking-issues.yml

This file was deleted.

280 changes: 126 additions & 154 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,188 +14,160 @@
name: Release

on:
release:
types: [published]
schedule:
- cron: "0 0 * * 1-5"
workflow_dispatch:

inputs:
live-run:
type: boolean
description: Live-run
required: false
version:
type: string
description: Release number
required: false
jobs:
preps:
name: Preparation
tag:
name: Branch, Bump & tag
runs-on: ubuntu-latest
outputs:
version: ${{ steps.create-release-branch.outputs.version }}
branch: ${{ steps.create-release-branch.outputs.branch }}
steps:
- name: Clone this repository
- id: create-release-branch
uses: eclipse-zenoh/ci/create-release-branch@main
with:
repo: ${{ github.repository }}
live-run: ${{ inputs.live-run || false }}
# NOTE(fuzzypixelz): When the version is undefined (e.g. on schedule
# events) we cannot use git-describe as CMake doesn't support it.
# However, we still need some placeholder version to test that the
# version can be reliably bumped.
version: ${{ inputs.version || '0.0.0' }}
github-token: ${{ secrets.BOT_TOKEN_WORKFLOW }}

- name: Checkout this repository
uses: actions/checkout@v4
with:
ref: ${{ steps.create-release-branch.outputs.branch }}

- name: Bump and tag project
run: bash ci/scripts/bump-and-tag.bash
env:
VERSION: ${{ steps.create-release-branch.outputs.version }}
GIT_USER_NAME: eclipse-zenoh-bot
GIT_USER_EMAIL: [email protected]

- name: Environment setup
id: env
shell: bash
run: |
echo "GITHUB_REF=${GITHUB_REF}"
echo "GITHUB_SHA=${GITHUB_SHA:0:8}"
GIT_BRANCH=`[[ $GITHUB_REF =~ ^refs/heads/.* ]] && echo ${GITHUB_REF/refs\/heads\//} || true`
echo "GIT_BRANCH=${GIT_BRANCH}"
echo "GIT_BRANCH=${GIT_BRANCH}" >> $GITHUB_OUTPUT
GIT_TAG=`[[ $GITHUB_REF =~ ^refs/tags/.* ]] && echo ${GITHUB_REF/refs\/tags\//} || true`
echo "GIT_TAG=${GIT_TAG}"
echo "GIT_TAG=${GIT_TAG}" >> $GITHUB_OUTPUT

ZENOH_VERSION=$(sed -n 's/^project(libzenohpico VERSION \(.*\) LANGUAGES C)/\1/p' CMakeLists.txt | head -n1)
echo "ZENOH_VERSION=${ZENOH_VERSION}"
echo "ZENOH_VERSION=${ZENOH_VERSION}" >> $GITHUB_OUTPUT
if [ -n "${GIT_TAG}" ]; then
IS_RELEASE="true"
echo "IS_RELEASE=${IS_RELEASE}"
echo "IS_RELEASE=${IS_RELEASE}" >> $GITHUB_OUTPUT
PKG_VERSION=${GIT_TAG}
elif [ -n "${GIT_BRANCH}" ]; then
PKG_VERSION=${GIT_BRANCH}-${GITHUB_SHA:0:8}
else
PKG_VERSION=${ZENOH_VERSION}-${GITHUB_SHA:0:8}
fi
echo "PKG_VERSION=${PKG_VERSION}"
echo "PKG_VERSION=${PKG_VERSION}" >> $GITHUB_OUTPUT

CROSSBUILD_TARGETS=$(sed -n 's/^CROSSBUILD_TARGETS=\(.*\)/\1/p' GNUmakefile | head -n1)
echo "CROSSBUILD_TARGETS=$CROSSBUILD_TARGETS"
TARGET_MATRIX="{\"target\": [\"${CROSSBUILD_TARGETS// /\",\"}\"]}"
echo "TARGET_MATRIX=$TARGET_MATRIX"
echo "TARGET_MATRIX=$TARGET_MATRIX" >> $GITHUB_OUTPUT
pre-build:
name: Pre-Build
needs: tag
runs-on: ubuntu-latest
outputs:
GIT_BRANCH: ${{ steps.env.outputs.GIT_BRANCH }}
GIT_TAG: ${{ steps.env.outputs.GIT_TAG }}
IS_RELEASE: ${{ steps.env.outputs.IS_RELEASE }}
ZENOH_VERSION: ${{ steps.env.outputs.ZENOH_VERSION }}
PKG_VERSION: ${{ steps.env.outputs.PKG_VERSION }}
TARGET_MATRIX: ${{ steps.env.outputs.TARGET_MATRIX }}

macos-build:
name: Build on macos-x64
needs: preps
build-linux-matrix: ${{ steps.pre-build.outputs.build-linux-matrix }}
steps:
- name: Clone this repository
uses: actions/checkout@v4
with:
ref: ${{ needs.tag.outputs.branch }}

- id: pre-build
run: bash ci/scripts/pre-build.bash

build-macos:
name: Build for macOS (x64)
needs: [tag, pre-build]
runs-on: macos-latest
steps:
- name: Clone this repository
uses: actions/checkout@v4
with:
ref: ${{ needs.tag.outputs.branch }}

- name: MacOS build
run: make
- id: build-macos
run: bash ci/scripts/build-macos.bash
env:
BUILD_TYPE: RELEASE

- name: Packaging
id: package
shell: bash
run: |
LIB_PKG_NAME=${PWD}/zenoh-pico-${{ needs.preps.outputs.PKG_VERSION }}-macos-x64.zip
echo "Packaging ${LIB_PKG_NAME}:"
cd build && zip -r ${LIB_PKG_NAME} lib && cd -
zip -r ${LIB_PKG_NAME} include
echo "LIB_PKG_NAME=${LIB_PKG_NAME}" >> $GITHUB_OUTPUT

EXP_PKG_NAME=${PWD}/zenoh-pico-${{ needs.preps.outputs.PKG_VERSION }}-macos-x64-examples.zip
echo "Packaging ${EXP_PKG_NAME}:"
cd build/examples && zip ${EXP_PKG_NAME} * && cd -
echo "EXP_PKG_NAME=${EXP_PKG_NAME}" >> $GITHUB_OUTPUT

- name: "Upload x86_64 macos package"
uses: actions/upload-artifact@v3
REPO: ${{ github.repository }}
VERSION: ${{ needs.tag.outputs.version }}

- name: Upload macOS library archive
uses: actions/upload-artifact@v4
with:
name: macos-x64
path: |
${{ steps.package.outputs.LIB_PKG_NAME }}
${{ steps.package.outputs.EXP_PKG_NAME }}
name: ${{ steps.build-macos.outputs.archive-lib }}
path: ${{ steps.build-macos.outputs.archive-lib }}

linux-builds:
- name: Upload macOS examples archive
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build-macos.outputs.archive-examples }}
path: ${{ steps.build-macos.outputs.archive-examples }}

build-linux:
name: Crossbuild for ${{ matrix.target }}
needs: preps
needs: [tag, pre-build]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{fromJson(needs.preps.outputs.TARGET_MATRIX)}}
matrix: ${{ fromJson(needs.pre-build.outputs.build-linux-matrix) }}
steps:
- name: Clone this repository
uses: actions/checkout@v4
with:
ref: ${{ needs.tag.outputs.branch }}

- name: make for ${{ matrix.target }}
- id: build-linux
run: bash ci/scripts/build-linux.bash
env:
BUILD_TYPE: RELEASE
run: make ${{ matrix.target }}

- name: Packaging
id: package
shell: bash
run: |
TARGET=${{ matrix.target }}
LIB_PKG_NAME=${PWD}/zenoh-pico-${{ needs.preps.outputs.PKG_VERSION }}-${TARGET}.zip
DEB_PKG_NAME=${PWD}/zenoh-pico-${{ needs.preps.outputs.PKG_VERSION }}-${TARGET}-deb-pkgs.zip
RPM_PKG_NAME=${PWD}/zenoh-pico-${{ needs.preps.outputs.PKG_VERSION }}-${TARGET}-rpm-pkgs.zip
EXP_PKG_NAME=${PWD}/zenoh-pico-${{ needs.preps.outputs.PKG_VERSION }}-${TARGET}-examples.zip

echo "Packaging ${LIB_PKG_NAME}:"
cd crossbuilds/${TARGET} && zip -r ${LIB_PKG_NAME} lib && cd -
zip -r ${LIB_PKG_NAME} include
echo "LIB_PKG_NAME=${LIB_PKG_NAME}" >> $GITHUB_OUTPUT

cd crossbuilds/${TARGET}/packages
echo "Packaging ${DEB_PKG_NAME}:"
zip ${DEB_PKG_NAME} *.deb
echo "DEB_PKG_NAME=${DEB_PKG_NAME}" >> $GITHUB_OUTPUT
echo "Packaging ${RPM_PKG_NAME}:"
zip ${RPM_PKG_NAME} *.rpm
echo "RPM_PKG_NAME=${RPM_PKG_NAME}" >> $GITHUB_OUTPUT
cd -

echo "Packaging ${EXP_PKG_NAME}:"
cd crossbuilds/${TARGET}/examples && zip ${EXP_PKG_NAME} * && cd -
echo "EXP_PKG_NAME=${EXP_PKG_NAME}" >> $GITHUB_OUTPUT

- name: "Upload packages"
uses: actions/upload-artifact@v3
REPO: ${{ github.repository }}
VERSION: ${{ needs.tag.outputs.version }}
TARGET: ${{ matrix.target }}

- name: Upload Linux library archive for ${{ matrix.target }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}
path: |
${{ steps.package.outputs.LIB_PKG_NAME }}
${{ steps.package.outputs.DEB_PKG_NAME }}
${{ steps.package.outputs.RPM_PKG_NAME }}
${{ steps.package.outputs.EXP_PKG_NAME }}

publication:
name: Publish the release
if: needs.preps.outputs.IS_RELEASE == 'true'
needs: [preps, macos-build, linux-builds]
runs-on: ubuntu-latest
steps:
- name: Download result of previous builds
uses: actions/download-artifact@v3
name: ${{ steps.build-linux.outputs.archive-lib }}
path: ${{ steps.build-linux.outputs.archive-lib }}

- name: Upload Linux examples archive for ${{ matrix.target }}
uses: actions/upload-artifact@v4
with:
path: ARTIFACTS
name: ${{ steps.build-linux.outputs.archive-examples }}
path: ${{ steps.build-linux.outputs.archive-examples }}

- name: Publish as github release
uses: softprops/action-gh-release@v1
- name: Upload Linux RPM archive for ${{ matrix.target }}
uses: actions/upload-artifact@v4
with:
files: ARTIFACTS/*/*.*
name: ${{ steps.build-linux.outputs.archive-rpm }}
path: ${{ steps.build-linux.outputs.archive-rpm }}

- name: Publish to download.eclipse.org/zenoh
env:
SSH_TARGET: [email protected]
ECLIPSE_BASE_DIR: /home/data/httpd/download.eclipse.org/zenoh/zenoh-pico
shell: bash
run: |
echo "--- setup ssh-agent"
eval "$(ssh-agent -s)"
echo 'echo "${{ secrets.SSH_PASSPHRASE }}"' > ~/.ssh_askpass && chmod +x ~/.ssh_askpass
echo "${{ secrets.SSH_PRIVATE_KEY }}" | tr -d '\r' | DISPLAY=NONE SSH_ASKPASS=~/.ssh_askpass ssh-add - > /dev/null 2>&1
rm -f ~/.ssh_askpass
echo "--- test ssh:"
ssh -o "StrictHostKeyChecking=no" ${SSH_TARGET} ls -al
echo "---- list artifacts to upload:"
ls -R ARTIFACTS || true
DOWNLOAD_DIR=${ECLIPSE_BASE_DIR}/${{ needs.preps.outputs.PKG_VERSION }}
echo "---- copy artifacts into ${DOWNLOAD_DIR}"
ssh -o "StrictHostKeyChecking=no" ${SSH_TARGET} mkdir -p ${DOWNLOAD_DIR}
cd ARTIFACTS
sha256sum */* > sha256sums.txt
scp -o "StrictHostKeyChecking=no" -r * ${SSH_TARGET}:${DOWNLOAD_DIR}/
echo "---- cleanup identity"
ssh-add -D
- name: Upload Linux DEB archive for ${{ matrix.target }}
uses: actions/upload-artifact@v4
with:
name: ${{ steps.build-linux.outputs.archive-deb }}
path: ${{ steps.build-linux.outputs.archive-deb }}

eclipse:
needs: [tag, build-macos, build-linux]
runs-on: ubuntu-latest
steps:
- uses: eclipse-zenoh/ci/publish-crates-eclipse@main
with:
live-run: ${{ inputs.live-run || false }}
version: ${{ needs.tag.outputs.version }}
ssh-host: [email protected]
ssh-host-path: /home/data/httpd/download.eclipse.org/zenoh/zenoh-pico
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
ssh-passphrase: ${{ secrets.SSH_PASSPHRASE }}
archive-patterns: '.*\.zip'

github:
needs: [tag, build-macos, build-linux]
runs-on: ubuntu-latest
steps:
- uses: eclipse-zenoh/ci/publish-crates-github@main
with:
repo: ${{ github.repository }}
live-run: ${{ inputs.live-run || false }}
version: ${{ needs.tag.outputs.version }}
branch: ${{ needs.tag.outputs.branch }}
github-token: ${{ secrets.BOT_TOKEN_WORKFLOW }}
archive-patterns: '.*\.zip'
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# CMake
build
crossbuilds
CMakeFiles

# vscode
.vscode
Expand Down
29 changes: 28 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,34 @@
#
cmake_minimum_required(VERSION 3.13)

project(zenohpico VERSION 0.11.0.0 LANGUAGES C)
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/version.txt version)

project(zenohpico VERSION ${version} LANGUAGES C)

set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
include(helpers)

# Configure header file to define the project version
set(ZENOH_PICO ${PROJECT_VERSION})
set(ZENOH_PICO_MAJOR ${PROJECT_VERSION_MAJOR})
set(ZENOH_PICO_MINOR ${PROJECT_VERSION_MINOR})
set(ZENOH_PICO_PATCH ${PROJECT_VERSION_PATCH})
set(ZENOH_PICO_TWEAK ${PROJECT_VERSION_TWEAK})
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/include/zenoh-pico.h.in
${CMAKE_CURRENT_SOURCE_DIR}/include/zenoh-pico.h
@ONLY
)
set(project_version "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
if(NOT DEFINED PROJECT_VERSION_TWEAK)
set(project_version "${project_version}")
elseif(PROJECT_VERSION_TWEAK EQUAL 0)
set(project_version "${project_version}-dev")
elseif(PROJECT_VERSION_TWEAK GREATER 1)
set(project_version "${project_version}-pre.${PROJECT_VERSION_TWEAK}")
endif()
status_print(project_version)


include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
Expand Down
Loading
Loading