Skip to content

Release

Release #55

Workflow file for this run

#
# Copyright (c) 2024 ZettaScale Technology
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
# which is available at https://www.apache.org/licenses/LICENSE-2.0.
#
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
#
# Contributors:
# ZettaScale Zenoh Team, <[email protected]>
#
name: Release
on:
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
zenoh-version:
type: string
description: Release number of Zenoh
required: false
branch:
type: string
description: Release branch
required: false
jobs:
tag:
name: Branch, Bump & tag crates
runs-on: ubuntu-latest
outputs:
version: ${{ steps.create-release-branch.outputs.version }}
branch: ${{ steps.create-release-branch.outputs.branch }}
steps:
- id: create-release-branch
uses: eclipse-zenoh/ci/create-release-branch@main
with:
repo: ${{ github.repository }}
live-run: ${{ inputs.live-run || false }}
version: ${{ inputs.version }}
branch: ${{ inputs.branch }}
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:
LIVE_RUN: ${{ inputs.live-run }}
VERSION: ${{ steps.create-release-branch.outputs.version }}
BUMP_DEPS_VERSION: ${{ inputs.zenoh-version }}
BUMP_DEPS_PATTERN: ${{ inputs.zenoh-version && 'zenoh.*' || '' }}
BUMP_DEPS_BRANCH: ${{ inputs.zenoh-version && format('release/{0}', inputs.zenoh-version) || '' }}
GIT_USER_NAME: eclipse-zenoh-bot
GIT_USER_EMAIL: [email protected]
build-ts:
name: Build Typescript
runs-on: ubuntu-latest
needs: tag
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ needs.tag.outputs.branch }}
- name: Install Dependencies
uses: borales/actions-yarn@v4
with:
cmd: install
dir: ./zenoh-ts
- name: Transpile Code
working-directory: ./zenoh-ts
run: |
yarn run build
- name: Upload zenoh-ts-build
uses: actions/upload-artifact@v4
with:
name: zenoh-ts-build
include-hidden-files: true
path: |
zenoh-ts/dist/
zenoh-ts/package.json
zenoh-ts/LICENSE
zenoh-ts/README.md
- name: Cleanup
working-directory: ./zenoh-ts
if: always()
run: |
rm -rf node_modules
rm -rf dist
rm -rf package-lock.json
build-debian:
name: Build Debian packages
needs: tag
uses: eclipse-zenoh/ci/.github/workflows/build-crates-debian.yml@main
with:
repo: ${{ github.repository }}
version: ${{ needs.tag.outputs.version }}
branch: ${{ needs.tag.outputs.branch }}
secrets: inherit
build-standalone:
name: Build executables and libraries
needs: tag
uses: eclipse-zenoh/ci/.github/workflows/build-crates-standalone.yml@main
with:
repo: ${{ github.repository }}
version: ${{ needs.tag.outputs.version }}
branch: ${{ needs.tag.outputs.branch }}
artifact-patterns: |
^libzenoh_plugin_remote_api(2)?\.(dylib|so)$
^zenoh_plugin_remote_api(2)?\.dll$
secrets: inherit
npm:
name: Release Zenoh-ts to NPM
runs-on: ubuntu-latest
needs: [tag, build-ts]
steps:
- name: Download zenoh-ts-build
uses: actions/download-artifact@v4
with:
name: zenoh-ts-build
- name: Publish Typescript to NPM
id: publish
shell: bash
env:
ORG_NPMJS_TOKEN: ${{ secrets.ORG_NPMJS_TOKEN }}
LIVE_RUN: ${{ inputs.live-run || false }}
run: |
readonly live_run=${LIVE_RUN:-false}
npm config set //registry.npmjs.org/:_authToken=\${ORG_NPMJS_TOKEN}
if [ ${live_run} = true ]; then
echo "Releasing to NPM"
npm publish --access public
else
echo "Dry Run"
npm publish --dry-run
fi
cargo:
needs: [tag, build-standalone, build-ts]
name: Publish Cargo crates
uses: eclipse-zenoh/ci/.github/workflows/release-crates-cargo.yml@main
with:
repo: ${{ github.repository }}
live-run: ${{ inputs.live-run || false }}
branch: ${{ needs.tag.outputs.branch }}
# - In dry-run mode, we need to publish eclipse-zenoh/zenoh before this
# repository, in which case the version of zenoh dependecies are left as
# is and thus point to the main branch of eclipse-zenoh/zenoh.
# - In live-run mode, we assume that eclipse-zenoh/zenoh is already
# published as this workflow can't be responsible for publishing it
unpublished-deps-patterns: ${{ !(inputs.live-run || false) && 'zenoh.*' || '' }}
unpublished-deps-repos: ${{ !(inputs.live-run || false) && 'eclipse-zenoh/zenoh' || '' }}
secrets: inherit
debian:
name: Publish Debian packages
needs: [tag, build-debian, build-ts, cargo]
uses: eclipse-zenoh/ci/.github/workflows/release-crates-debian.yml@main
with:
no-build: true
live-run: ${{ inputs.live-run || false }}
version: ${{ needs.tag.outputs.version }}
repo: ${{ github.repository }}
branch: ${{ needs.tag.outputs.branch }}
installation-test: false
secrets: inherit
homebrew:
name: Publish Homebrew formulae
needs: [tag, build-standalone, build-ts, cargo]
uses: eclipse-zenoh/ci/.github/workflows/release-crates-homebrew.yml@main
with:
no-build: true
repo: ${{ github.repository }}
live-run: ${{ inputs.live-run || false }}
version: ${{ needs.tag.outputs.version }}
branch: ${{ needs.tag.outputs.branch }}
artifact-patterns: |
^libzenoh_plugin_remote_api(2)?\.dylib$
formulae: |
zenoh-plugin-remote-api
secrets: inherit
eclipse:
name: Publish artifacts to Eclipse downloads
needs: [tag, build-standalone, build-ts, cargo]
uses: eclipse-zenoh/ci/.github/workflows/release-crates-eclipse.yml@main
with:
no-build: true
live-run: ${{ inputs.live-run || false }}
version: ${{ needs.tag.outputs.version }}
repo: ${{ github.repository }}
branch: ${{ needs.tag.outputs.branch }}
artifact-patterns: |
^libzenoh_plugin_remote_api(2)?\.(dylib|so)$
^zenoh_plugin_remote_api(2)?\.dll$
name: zenoh-plugin-remote-api
secrets: inherit
github:
name: Publish artifacts to GitHub Releases
needs: [tag, build-standalone, build-ts, cargo]
uses: eclipse-zenoh/ci/.github/workflows/release-crates-github.yml@main
with:
no-build: true
live-run: ${{ inputs.live-run || false }}
version: ${{ needs.tag.outputs.version }}
repo: ${{ github.repository }}
branch: ${{ needs.tag.outputs.branch }}
artifact-patterns: |
^libzenoh_plugin_remote_api(2)?\.(dylib|so)$
^zenoh_plugin_remote_api(2)?\.dll$
secrets: inherit