Skip to content

Commit

Permalink
Release workflow prototype
Browse files Browse the repository at this point in the history
  • Loading branch information
pepone committed Jan 31, 2025
1 parent 2f089da commit f2a251d
Show file tree
Hide file tree
Showing 36 changed files with 2,779 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .github/actions/build-debian-package/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: "Build Debian Package"
description: "Builds a Debian source package using a Docker image"
inputs:
ice_version:
description: "The ICE version to build"
required: true
deb_build_options:
description: "DEB_BUILD_OPTIONS for the build"
required: false
default: ""
os:
description: "The target OS (e.g., ubuntu-24.04, ubuntu-24.04-arm)"
required: true
dockerfile_path:
description: "Path to the Dockerfile"
required: true

runs:
using: "composite"
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Build Docker Image
run: docker build -f ${{ inputs.dockerfile_path }} -t ${{ inputs.docker_image }} .
shell: bash

- name: Run Package Build with Mounted Source
run: |
mkdir -p output
docker run --rm \
-v $PWD/ice:/workspace/ice \
-v $PWD/output:/workspace/build \
-e ICE_VERSION=${{ inputs.ice_version }} \
-e DEB_BUILD_OPTIONS="${{ inputs.deb_build_options }}" \
ice-debian-package-builder
shell: bash

- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: debian-packages-${{ inputs.os }}
path: output/
37 changes: 37 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: "Release ICE Debian Packages"

on:
workflow_dispatch:
inputs:
ice_version:
description: "The ICE version to build"
required: true
default: "3.8.0~alpha0"
deb_build_options:
description: "DEB_BUILD_OPTIONS for the build"
required: false
default: "nocheck parallel=4"

jobs:
build:
name: "Build for ${{ matrix.os }}"
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
- os: ubuntu-24.04
runner: ubuntu-24.04
dockerfile_path: ice/packaging/dpkg/ubuntu-24.04/Dockerfile

- os: ubuntu-24.04-arm64
runner: ubuntu-24.04-arm64
dockerfile_path: ice/packaging/dpkg/ubuntu-24.04-arm/Dockerfile

steps:
- name: Call Build Debian Package Action
uses: ./.github/actions/build-debian-package
with:
ice_version: ${{ inputs.ice_version }}
deb_build_options: ${{ inputs.deb_build_options }}
os: ${{ matrix.os }}
dockerfile_path: ${{ matrix.dockerfile_path }}
25 changes: 25 additions & 0 deletions packaging/dpkg/build-package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash
set -eux # Exit on error, print commands

# Ensure ICE_VERSION is set
if [ -z "$ICE_VERSION" ]; then
echo "Error: ICE_VERSION is not set!"
exit 1
fi

# Set working directory
cd /workspace

# Generate the upstream tarball
echo "Creating tarball for ICE_VERSION=$ICE_VERSION"
tar -czf zeroc-ice_${ICE_VERSION}.orig.tar.gz --exclude=debian -C /workspace/ice .

# Create build directory and unpack
mkdir -p build
cd build
tar xzf ../zeroc-ice_${ICE_VERSION}.orig.tar.gz

# Copy Debian packaging files and build
cp -rfv ../ice/packaging/dpkg/debian .
dpkg-buildpackage -S
dpkg-buildpackage -b -uc -us
30 changes: 30 additions & 0 deletions packaging/dpkg/debian/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
*.debhelper
*.log
*.substvars
tmp/*

.gradle/*
.mh/*
debhelper-build-stamp
files
libzeroc-ice-java/*
libzeroc-ice-dev/*
libzeroc-ice3.7-java/*
libzeroc-ice3.7/*
libzeroc-icestorm3.7/*
php-zeroc-ice/*
python-zeroc-ice/*
python3-zeroc-ice/*
zeroc-glacier2/*
zeroc-ice-all-dev/*
zeroc-ice-all-runtime/*
zeroc-ice-compilers/*
zeroc-ice-slice/*
zeroc-ice-utils-java/*
zeroc-ice-utils/*
zeroc-icebridge/*
zeroc-icebox/*
zeroc-icegrid/*
zeroc-icegridgui/*
zeroc-icepatch2/*

37 changes: 37 additions & 0 deletions packaging/dpkg/debian/BuildInstructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Building DEB Packages

This document describes how to create source and binary DEB packages for Ice as
a regular (non-root) user on your Debian or Ubuntu Linux system.

## Setup the packaging software

First we'll install all the tools needed to build the Ice packages on your Ubuntu
system:

$ sudo apt-get install packaging-dev git-buildpackage

## Checkout Ice source

$ git clone [email protected]:zeroc-ice/ice-debian-packaging
$ git checkout -b upstream --track origin/upstream
$ git checkout master

## Install Ice third-party dependencies

Now we will install the necessary third-party packages from the system Software
repository.

$ sudo mk-build-deps --install ice-debian-packaging/debian/control

## Building the Ice packages


$ cd ice-debian-packaging
$ gbp buildpackage

## Applying a patch

Refer to the [Debian documentation][1] for information on incorporating patches
into the build.

[1]: https://www.debian.org/doc/manuals/maint-guide/dother.en.html#patches
58 changes: 58 additions & 0 deletions packaging/dpkg/debian/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
======================================================================
The Internet Communications Engine
======================================================================

Ice is a comprehensive RPC framework that helps you build distributed
applications with minimal effort using familiar object-oriented idioms.
Ice handles all interactions with low-level network programming
interfaces so that you can focus your efforts on your application logic.
When using Ice, there is no need to worry about details such as opening
network connections, serializing and deserializing data for network
transmission, or retrying failed connection attempts (just to name a
few things).

Feature highlights:

- Efficient, high-performance binary protocol
- Supports a wide range of programming languages and platforms
- Easy to use and type-safe API, with your own interfaces and types
defined in a programming language neutral IDL, Slice
- Supports secure, encrypted communications by taking advantage of
your platform's native SSL/TLS stack
- Familiar object-oriented programming model, with the ability to
transmit proxies (references to remote objects) to remote applications
- Supports synchronous and asynchronous calls, for both client-side
invocations and server-side dispatches
- Automatic discovery of remote objects through UDP multicast
- Comes with a number of optional services:
- IceGrid, the nerve-center of any large-scale application, with
support for server deployment, replication, monitoring,
load-balancing and more
- IceStorm, a lightweight topic-based pub-sub service
- Freeze, an embedded, transactional database for Ice datatypes
- Glacier2, a sysadmin-friendly solution for routing Ice
communications through firewalls
- IcePatch2, an efficient software distribution and patching service


Getting Started with Ice on Linux
---------------------------------

Please visit the 'Using the Linux Binary Distributions' section in the
Ice 3.7.10 release notes:

https://doc.zeroc.com/rel/ice-releases/ice-3-7/ice-3-7-10-release-notes

Documentation
-------------

The full documentation for Ice is available online:

https://doc.zeroc.com/ice/3.7/

Source Code
------------

The source code for Ice 3.7.10 is on GitHub:

https://github.com/zeroc-ice/ice/releases/tag/v3.7.10
Loading

0 comments on commit f2a251d

Please sign in to comment.