Using a matrix and job separation we can make the architectures compile parallel to eachother, hopefully reducing the time required for builds and also simplifying the process of building a single architecture. A problem that we encountered is that with Python the resulting packed tars are very large. Each release is in the order of tens of megabytes. Using artifacts in our pipeline can easily make us surpass the maximum size limit for free GitHub accounts (500 MB). Because of this, we use the regular non-parallel pipeline for release build. Releasing the version from the same job the build was performed in allows us to directly access the build files instead of using artifacts. Separated release and MR pipelines.
30 lines
658 B
YAML
30 lines
658 B
YAML
name: gdb-static-release-pipeline
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
# Use a non-parallel single job pipeline because artifacts weigh too much. Instead,
|
|
# simply build the files in the same job they are released.
|
|
jobs:
|
|
build_and_publish:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Install dependencies
|
|
run: sudo apt-get install -y wget
|
|
|
|
- name: Build
|
|
run: make build -j$((`nproc`+1))
|
|
|
|
- name: Pack
|
|
run: make pack
|
|
|
|
- name: Publish release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
files: build/artifacts/gdb-static*.tar.gz |