Skip to content

Commit

Permalink
workflows: update build and packaging to fix
Browse files Browse the repository at this point in the history
Signed-off-by: Patrick Stephens <[email protected]>
  • Loading branch information
patrick-stephens committed Dec 19, 2024
1 parent 1fc7db1 commit 00baf54
Show file tree
Hide file tree
Showing 5 changed files with 208 additions and 0 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,29 @@ jobs:
shell: bash
working-directory: cprofiles/build

build-debian:
name: Debian Buster build to confirm no issues once used downstream
runs-on: ubuntu-latest
container: debian:buster
steps:
- name: Set up base image dependencies
run: |
apt-get update
apt-get install -y build-essential cmake make git
shell: bash

- uses: actions/checkout@v4
with:
submodules: true

- name: Run compilation
run: |
cmake -DCPROF_TESTS=On ../
cmake --build .
CTEST_OUTPUT_ON_FAILURE=1 ctest
shell: bash
working-directory: build

build-unix-arm64:
name: Build sources on arm64 for ${{ matrix.os }} - ${{ matrix.compiler }}
runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -161,3 +184,29 @@ jobs:
# dependencies_debian: ''
cmakeflags: '-DCPROF_TESTS=On -DCPROF_DEV=on .'
build_command: make all

# this job provides the single required status for PRs to be merged into main.
# instead of updating the protected branch status in github, developers can update the needs section below
# to require additional status checks to protect main.
# the job uses the alls-green action to get around the github issue that treats a "skipped" required status check
# as passed. github will skip a job if an upstream needed job fails, which would defeat the purpose of this required
# status check.
test-required-checks-complete:
# note: this step always has to run in order to check if the dependent jobs passed. by default github skips running a job
# if the needed jobs upstream failed.
if: always()
needs:
- build-windows
- build-centos
- build-debian
- build-unix-arm64
- build-unix-amd64
- build-analysis-tests
name: Required checks complete
runs-on: ubuntu-latest
permissions: {}
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
135 changes: 135 additions & 0 deletions .github/workflows/packages.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
name: Build packages for master or a tagged release

on:
push:
branches:
- master
# Any tag starting with 'v'
tags:
- 'v*'
workflow_dispatch:

jobs:
build-distro-packages-arm64:
runs-on: ubuntu-latest
name: build arm64 packages
strategy:
fail-fast: false
matrix:
format: [ rpm, deb ]
steps:
- uses: actions/checkout@v4
with:
submodules: true

- uses: uraimo/[email protected]
name: Build the ${{matrix.format}} packages
with:
arch: aarch64
distro: ubuntu_latest
run: |
apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
cmake \
file \
rpm \
make
cmake .
echo ${{ matrix.format }} | awk '{print toupper($0)}' | xargs -I{} cpack -G {}
- name: Store the master package artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.format }}-arm64
path: |
./*.${{matrix.format}}
build-distro-packages-amd64:
name: build amd64 packages
strategy:
fail-fast: false
matrix:
format: [ rpm, deb ]
runs-on: [ ubuntu-latest ]
steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Build the ${{matrix.format}} packages
run: |
cmake .
echo ${{ matrix.format }} | awk '{print toupper($0)}' | xargs -I{} cpack -G {}
- name: Store the master package artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.format }}-amd64
path: |
./*.${{matrix.format}}
build-macos-packages-arm64:
name: build macOS Apple Silicon packages
strategy:
fail-fast: true
matrix:
config:
- format: productbuild
arch: apple
ext: pkg
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Build the ${{matrix.config.format}} packages
run: |
cmake . -DCPACK_GENERATOR=${{ matrix.config.format }}
echo ${{ matrix.config.format }} | xargs -I{} cpack -G {}
- name: Store the master package artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.config.format }}-${{matrix.config.arch}}
path: |
./*-${{matrix.config.arch}}.${{matrix.config.ext}}
release:
name: Create release and upload packages
needs:
- build-distro-packages-amd64
- build-distro-packages-arm64
- build-macos-packages-arm64
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artefacts
uses: actions/download-artifact@v4
with:
path: artifacts/

- name: Display structure of downloaded files
run: ls -R
working-directory: artifacts
shell: bash

- name: Unstable release on push to master to make it easier to download
uses: pyTooling/Actions/releaser@r0
continue-on-error: true
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: 'unstable'
rm: true
files: |
artifacts/**/*
- name: Release on tag
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
generate_release_notes: true
files: |
artifacts/**/*
1 change: 1 addition & 0 deletions .mdlrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
style "#{File.dirname(__FILE__)}/markdownlint.rb"
7 changes: 7 additions & 0 deletions CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Global Owners
# -------------
* @edsiper @leonardo-albertovich

# CI
# -------------------------
/.github/ @niedbalski @patrick-stephens @celalettin1286
16 changes: 16 additions & 0 deletions markdownlint.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/ruby

# Enable all rules by default
all

# Extend line length, since each sentence should be on a separate line.
rule 'MD013', :line_length => 99999, :ignore_code_blocks => true

# Allow in-line HTML
exclude_rule 'MD033'

# Nested lists should be indented with two spaces.
rule 'MD007', :indent => 2

# Bash defaulting confuses this and now way to ignore code blocks
exclude_rule 'MD029'

0 comments on commit 00baf54

Please sign in to comment.