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

Release artifact for dev #1

Merged
merged 7 commits into from
Feb 9, 2024
Merged
Changes from all 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
220 changes: 220 additions & 0 deletions .github/workflows/release-artifacts-tchap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
# GitHub actions workflow which builds the release artifacts.

name: Build release artifacts

on:
# we build on PRs and develop to (hopefully) get early warning
# of things breaking (but only build one set of debs). PRs skip
# building wheels on macOS & ARM.
pull_request:
push:
branches: ["develop_tchap"]

# we do the full build on tags.
tags: ["tchap-v*"]
merge_group:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: write

jobs:
get-distros:
name: "Calculate list of debian distros"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.x'
- id: set-distros
run: |
# if we're running from a tag, get the full list of distros; otherwise just use debian:sid
# NOTE: inside the actual Dockerfile-dhvirtualenv, the image name is expanded into its full image path
dists='["debian:sid"]'
if [[ $GITHUB_REF == refs/tags/* ]]; then
dists=$(scripts-dev/build_debian_packages.py --show-dists-json)
fi
echo "distros=$dists" >> "$GITHUB_OUTPUT"
# map the step outputs to job outputs
outputs:
distros: ${{ steps.set-distros.outputs.distros }}

### Deactivate pipeline : not required for Tchap Synapse ###
# # now build the packages with a matrix build.
# build-debs:
# needs: get-distros
# name: "Build .deb packages"
# runs-on: ubuntu-latest
# strategy:
# matrix:
# distro: ${{ fromJson(needs.get-distros.outputs.distros) }}
#
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# with:
# path: src
#
# - name: Set up Docker Buildx
# id: buildx
# uses: docker/setup-buildx-action@v3
# with:
# install: true
#
# - name: Set up docker layer caching
# uses: actions/cache@v3
# with:
# path: /tmp/.buildx-cache
# key: ${{ runner.os }}-buildx-${{ github.sha }}
# restore-keys: |
# ${{ runner.os }}-buildx-
#
# - name: Set up python
# uses: actions/setup-python@v5
# with:
# python-version: '3.x'
#
# - name: Build the packages
# # see https://github.com/docker/build-push-action/issues/252
# # for the cache magic here
# run: |
# ./src/scripts-dev/build_debian_packages.py \
# --docker-build-arg=--cache-from=type=local,src=/tmp/.buildx-cache \
# --docker-build-arg=--cache-to=type=local,mode=max,dest=/tmp/.buildx-cache-new \
# --docker-build-arg=--progress=plain \
# --docker-build-arg=--load \
# "${{ matrix.distro }}"
# rm -rf /tmp/.buildx-cache
# mv /tmp/.buildx-cache-new /tmp/.buildx-cache
#
# - name: Upload debs as artifacts
# uses: actions/upload-artifact@v4
# with:
# name: debs
# path: debs/*

build-wheels:
name: Build wheels on ${{ matrix.os }} for ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
### Deactivate pipeline : not required for Tchap Synapse ###
# os: [ubuntu-20.04, macos-11]
os: [ubuntu-20.04]
### Deactivate pipeline : not required for Tchap Synapse ###
# arch: [x86_64, aarch64]
arch: [x86_64]
# is_pr is a flag used to exclude certain jobs from the matrix on PRs.
# It is not read by the rest of the workflow.
is_pr:
- ${{ startsWith(github.ref, 'refs/pull/') }}

exclude:
# Don't build macos wheels on PR CI.
- is_pr: true
os: "macos-11"
# Don't build aarch64 wheels on mac.
- os: "macos-11"
arch: aarch64
# Don't build aarch64 wheels on PR CI.
- is_pr: true
arch: aarch64

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
# setup-python@v4 doesn't impose a default python version. Need to use 3.x
# here, because `python` on osx points to Python 2.7.
python-version: "3.x"

- name: Install cibuildwheel
run: python -m pip install cibuildwheel==2.16.2

- name: Set up QEMU to emulate aarch64
if: matrix.arch == 'aarch64'
uses: docker/setup-qemu-action@v3
with:
platforms: arm64

- name: Build aarch64 wheels
if: matrix.arch == 'aarch64'
run: echo 'CIBW_ARCHS_LINUX=aarch64' >> $GITHUB_ENV

- name: Only build a single wheel on PR
if: startsWith(github.ref, 'refs/pull/')
run: echo "CIBW_BUILD="cp38-manylinux_${{ matrix.arch }}"" >> $GITHUB_ENV

- name: Build wheels
run: python -m cibuildwheel --output-dir wheelhouse
env:
# Skip testing for platforms which various libraries don't have wheels
# for, and so need extra build deps.
CIBW_TEST_SKIP: pp3*-* *i686* *musl*
# Fix Rust OOM errors on emulated aarch64: https://github.com/rust-lang/cargo/issues/10583
CARGO_NET_GIT_FETCH_WITH_CLI: true
CIBW_ENVIRONMENT_PASS_LINUX: CARGO_NET_GIT_FETCH_WITH_CLI

- uses: actions/upload-artifact@v4
with:
name: Wheel
path: ./wheelhouse/*.whl

build-sdist:
name: Build sdist
runs-on: ubuntu-latest
if: ${{ !startsWith(github.ref, 'refs/pull/') }}

steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'

- run: pip install build

- name: Build sdist
run: python -m build --sdist

- uses: actions/upload-artifact@v4
with:
name: Sdist
path: dist/*.tar.gz


# if it's a tag, create a release and attach the artifacts to it
attach-assets:
name: "Attach assets to release"
if: ${{ !failure() && !cancelled() && startsWith(github.ref, 'refs/tags/') }}
needs:
### Deactivate pipeline : not required for Tchap Synapse ###
# - build-debs
- build-wheels
- build-sdist
runs-on: ubuntu-latest
steps:
- name: Download all workflow run artifacts
uses: actions/download-artifact@v4
### Deactivate pipeline : not required for Tchap Synapse ###
# - name: Build a tarball for the debs
# run: tar -cvJf debs.tar.xz debs
- name: Attach to release
uses: softprops/action-gh-release@a929a66f232c1b11af63782948aa2210f981808a # PR#109
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
files: |
Sdist/*
Wheel/*
### Deactivate pipeline : not required for Tchap Synapse ###
# debs.tar.xz
# if it's not already published, keep the release as a draft.
draft: true
# mark it as a prerelease if the tag contains 'rc'.
prerelease: ${{ contains(github.ref, 'rc') }}
Loading