diff --git a/.github/workflows/make_release.yml b/.github/workflows/make_release.yml new file mode 100644 index 0000000..4668d74 --- /dev/null +++ b/.github/workflows/make_release.yml @@ -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