Skip to content

Commit

Permalink
Compile linux x86_64 binaries with github actions workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
tmaklin committed Jun 6, 2024
1 parent 77e01ea commit e342b80
Showing 1 changed file with 166 additions and 0 deletions.
166 changes: 166 additions & 0 deletions .github/workflows/make_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
name: Build binaries
on:
push:
tags:
- "v*.*.*"
branches:
- alignment-writer-release-testing

jobs:
build_linux-x86_64:
runs-on: ubuntu-latest
container: phusion/holy-build-box-64:3.0.2
steps:
- name: Activate Holy Build Box
id: activate-hbb
run: |
source /hbb_exe/activate
export LDFLAGS="-L/lib64 -static-libstdc++"

- name: Install dependencies
id: install-dependencies
run: |
yum install -y git
rm --force /hbb/bin/git
ln -s /usr/bin/git /hbb/bin/git

- name: Create io directories
id: mkdir-io
run: |
mkdir /io
cd /io
mkdir tmp
cd tmp

- name: Clone source tree
id: run-git-clone
run: |
git clone https://github.com/tmaklin/alignment-writer
cd alignment-writer
git checkout ${{ github.ref_name }}

- name: Configure source build
id: run-cmake
run: |
mkdir build
cd build
cmake -DCMAKE_CXX_FLAGS="-march=x86-64 -mtune=generic -m64" -DCMAKE_C_FLAGS="-march=x86-64 -mtune=generic -m64" -DCMAKE_WITH_FLTO=1 -DCMAKE_WITH_NATIVE_INSTRUCTIONS=OFF ..

- name: Compile Linux x86_64 binary
id: run-make
run: make VERBOSE=1 -j

- name: Create distributable archive
id: gather-stuff
run: |
target=alignment-writer-${{ github.ref_name }}}-$(gcc -v 2>&1 | grep "^Target" | cut -f2 -d':' | sed 's/[[:space:]]*//g')
path=/io/tmp/$target
mkdir $path
cp ../build/bin/alignment-writer $path/
cp ../README.md $path/
cp ../LICENSE $path/
cd /io/tmp
tar -zcvf $target.tar.gz $target
mv $target.tar.gz /io/
cd /io/
rm -rf tmp cache

- name: Upload linux-x86_64 binary
if: success()
uses: actions/upload-artifact@v3
with:
name: themisto-${{ github.ref_name }}-x86_64-redhat-linux
path: /io/themisto-${{ github.ref_name }}-x86_64-redhat-linux.tar.gz

## build_macOS-x86_64:
## runs-on: ubuntu-latest
## container: ghcr.io/shepherdjerred/macos-cross-compiler:latest
## steps:
## - name: Install wget
## id: install-wget
## run: apt install -y wget

## - name: Create io directory
## id: mkdir-io
## run: mkdir /io && cd /io

## - name: Download x86_64 toolchain file
## id: dl-toolchain-file
## run: wget https://raw.githubusercontent.com/algbio/themisto/${{ github.ref_name }}/deploy/macOS/x86-64-toolchain_GNU.cmake && cp x86-64-toolchain_GNU.cmake /io/x86-64-toolchain_GNU.cmake && cp x86-64-toolchain_GNU.cmake /x86-64-toolchain_GNU.cmake

## - name: Download build script
## id: dl-build-script
## run: wget https://raw.githubusercontent.com/algbio/themisto/${{ github.ref_name }}/deploy/macOS/build.sh

## - name: Compile binary in macOS Cross Compiler container
## id: compile-in-container
## run: chmod +x build.sh && ./build.sh ${{ github.ref_name }} x86-64

## - name: Upload macOS-x86_64 binary
## if: success()
## uses: actions/upload-artifact@v3
## with:
## name: themisto-${{ github.ref_name }}-x86_64-apple-darwin22
## path: /io/themisto-${{ github.ref_name }}-x86_64-apple-darwin22.tar.gz

## build_macOS-arm64:
## runs-on: ubuntu-latest
## container: ghcr.io/shepherdjerred/macos-cross-compiler:latest
## steps:
## - name: Install wget
## id: install-wget
## run: apt install -y wget

## - name: Create io directory
## id: mkdir-io
## run: mkdir /io && cd /io

## - name: Download arm64 toolchain file
## id: dl-toolchain-file
## run: wget https://raw.githubusercontent.com/algbio/themisto/${{ github.ref_name }}/deploy/macOS/arm64-toolchain_GNU.cmake && cp arm64-toolchain_GNU.cmake /io/arm64-toolchain_GNU.cmake && cp arm64-toolchain_GNU.cmake /arm64-toolchain_GNU.cmake

## - name: Download build script
## id: dl-build-script
## run: wget https://raw.githubusercontent.com/algbio/themisto/${{ github.ref_name }}/deploy/macOS/build.sh

## - name: Compile binary in macOS Cross Compiler container
## id: compile-in-container
## run: chmod +x build.sh && ./build.sh ${{ github.ref_name }} arm64

## - name: Upload macOS-arm64 binary
## if: success()
## uses: actions/upload-artifact@v3
## with:
## name: themisto-${{ github.ref_name }}-aarch64-apple-darwin22
## path: /io/themisto-${{ github.ref_name }}-aarch64-apple-darwin22.tar.gz

create-release:
runs-on: ubuntu-latest

needs: [ build_linux-x86_64 ] ##, build_macOS-x86_64, build_macOS-arm64 ]

steps:
- uses: actions/checkout@v2

- uses: actions/download-artifact@v2
with:
path: build

- name: Organise files
shell: bash
run: |
## cp build/themisto-${{ github.ref_name }}-aarch64-apple-darwin22/themisto-${{ github.ref_name }}-aarch64-apple-darwin22.tar.gz .
## cp build/themisto-${{ github.ref_name }}-x86_64-apple-darwin22/themisto-${{ github.ref_name }}-x86_64-apple-darwin22.tar.gz .
cp build/themisto-${{ github.ref_name }}-x86_64-redhat-linux/themisto-${{ github.ref_name }}-x86_64-redhat-linux.tar.gz .

- name: Create release
id: create_release
uses: softprops/action-gh-release@v1
with:
name: Release ${{ github.ref_name }}
draft: false
prerelease: false
fail_on_unmatched_files: true
generate_release_notes: true
files: |
themisto-*.tar.gz

0 comments on commit e342b80

Please sign in to comment.