Skip to content

Build

Build #112

Workflow file for this run

name: Build
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
inputs:
upload-to-tag:
description: 'Upload artifacts to a release, identified by its tag'
required: true
default: ''
concurrency:
group: ${{ github.ref_name }}-${{ github.event_name }}
cancel-in-progress: true
jobs:
verify-flake:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
cachix_token: ${{ secrets.CACHIX_AUTH_TOKEN }}
maximise-build-space: false
- name: Check formatting
run: nix fmt . -- --check
- name: Check Nix flake
run: nix flake check --all-systems
build-from-linux-for-linux:
runs-on: ubuntu-latest
needs: [verify-flake]
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
cachix_token: ${{ secrets.CACHIX_AUTH_TOKEN }}
# Lair Keystore
- name: Build Lair Keystore for x86_64-unknown-linux-gnu
run: |
nix build .#lair_keystore_x86_64-linux
./result/bin/lair-keystore --version
nix develop --command ./scripts/export-binary-x86_64-linux.sh lair-keystore ./deploy
- name: Build Lair Keystore for aarch64-unknown-linux-gnu
run: |
nix build .#lair_keystore_aarch64-linux
cp ./result/bin/lair-keystore deploy/lair-keystore-aarch64-linux
# Holochain
- name: Build Holochain for x86_64-unknown-linux-gnu
run: |
nix build .#holochain_x86_64-linux
./result/bin/holochain --version
nix develop --command ./scripts/export-binary-x86_64-linux.sh holochain ./deploy
- name: Build Holochain for aarch64-unknown-linux-gnu
run: |
nix build .#holochain_aarch64-linux
cp ./result/bin/holochain deploy/holochain-aarch64-linux
# hc CLI
- name: Build the `hc` CLI for x86_64-unknown-linux-gnu
run: |
nix build .#holochain_cli_x86_64-linux
./result/bin/hc --version
nix develop --command ./scripts/export-binary-x86_64-linux.sh hc ./deploy
- name: Build the `hc` CLI for aarch64-unknown-linux-gnu
run: |
nix build .#holochain_cli_aarch64-linux
cp ./result/bin/hc deploy/hc-aarch64-linux
# hc-run-local-services CLI
- name: Build the holochain-cli-run-local CLI for x86_64-unknown-linux-gnu
run: |
nix build .#holochain_cli_run_local_services_x86_64-linux
./result/bin/hc-run-local-services --version
nix develop --command ./scripts/export-binary-x86_64-linux.sh hc-run-local-services ./deploy
- name: Build the holochain-cli-run-local CLI for aarch64-unknown-linux-gnu
run: |
nix build .#holochain_cli_run_local_services_aarch64-linux
cp ./result/bin/hc-run-local-services deploy/hc-run-local-services-aarch64-linux
# hcterm CLI
- name: Build the hcterm CLI for x86_64-unknown-linux-gnu
run: |
nix build .#hcterm_x86_64-linux
./result/bin/hcterm --version
nix develop --command ./scripts/export-binary-x86_64-linux.sh hcterm ./deploy
- name: Build the hcterm CLI for aarch64-unknown-linux-gnu
run: |
nix build .#hcterm_aarch64-linux
cp ./result/bin/hcterm deploy/hcterm-aarch64-linux
- name: Upload artifacts to release
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload-to-tag != '' }}
env:
GH_TOKEN: ${{ secrets.HRA_GITHUB_TOKEN }}
run: |
gh release upload ${{ github.event.inputs.upload-to-tag }} deploy/* --clobber --repo holochain/holochain
build-from-linux-for-windows:
runs-on: ubuntu-latest
needs: [verify-flake]
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
cachix_token: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build Lair Keystore for x86_64-pc-windows-gnu
run: |
nix build .#lair_keystore_x86_64-windows
cp ./result/bin/lair-keystore.exe deploy/lair-keystore-x86_64-windows.exe
- name: Build Holochain for x86_64-pc-windows-gnu
run: |
nix build .#holochain_x86_64-windows
cp ./result/bin/holochain.exe deploy/holochain-x86_64-windows.exe
- name: Build the `hc` CLI for x86_64-pc-windows-gnu
run: |
nix build .#holochain_cli_x86_64-windows
cp ./result/bin/hc.exe deploy/hc-x86_64-windows.exe
- name: Build the holochain-cli-run-local CLI for x86_64-pc-windows-gnu
run: |
nix build .#holochain_cli_run_local_services_x86_64-windows
cp ./result/bin/hc-run-local-services.exe deploy/hc-run-local-services-x86_64-windows.exe
- name: Build the hcterm CLI for x86_64-pc-windows-gnu
run: |
nix build .#hcterm_x86_64-windows
cp ./result/bin/hcterm.exe deploy/hcterm-x86_64-windows.exe
- name: Upload artifacts to release
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload-to-tag != '' }}
env:
GH_TOKEN: ${{ secrets.HRA_GITHUB_TOKEN }}
run: |
gh release upload ${{ github.event.inputs.upload-to-tag }} deploy/* --clobber --repo holochain/holochain
build-from-apple:
runs-on: macos-latest
needs: [verify-flake]
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
cachix_token: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build Lair Keystore for aarch64-apple-darwin
run: |
nix build .#lair_keystore_aarch64-apple
./result/bin/lair-keystore --version
cp ./result/bin/lair-keystore deploy/lair-keystore-aarch64-apple
- name: Build Holochain for aarch64-apple-darwin
run: |
nix build .#holochain_aarch64-apple
./result/bin/holochain --version
cp ./result/bin/holochain deploy/holochain-aarch64-apple
- name: Build the `hc` CLI for aarch64-apple-darwin
run: |
nix build .#holochain_cli_aarch64-apple
./result/bin/hc --version
cp ./result/bin/hc deploy/hc-aarch64-apple
- name: Build the `holochain-cli-run-local` CLI for aarch64-apple-darwin
run: |
nix build .#holochain_cli_run_local_services_aarch64-apple
./result/bin/hc-run-local-services --version
cp ./result/bin/hc-run-local-services deploy/hc-run-local-services-aarch64-apple
- name: Build the `hcterm` CLI for aarch64-apple-darwin
run: |
nix build .#hcterm_aarch64-apple
./result/bin/hcterm --version
cp ./result/bin/hcterm deploy/hcterm-aarch64-apple
- name: Upload artifacts to release
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload-to-tag != '' }}
env:
GH_TOKEN: ${{ secrets.HRA_GITHUB_TOKEN }}
run: |
gh release upload ${{ github.event.inputs.upload-to-tag }} deploy/* --clobber --repo holochain/holochain
build-from-legacy-apple:
runs-on: macos-13
needs: [verify-flake]
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
cachix_token: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Build Lair Keystore for x86_64-apple-darwin
run: |
nix build .#lair_keystore_x86_64-apple
./result/bin/lair-keystore --version
cp ./result/bin/lair-keystore deploy/lair-keystore-x86_64-apple
- name: Build Holochain for x86_64-apple-darwin
run: |
nix build .#holochain_x86_64-apple
./result/bin/holochain --version
cp ./result/bin/holochain deploy/holochain-x86_64-apple
- name: Build the `hc` CLI for x86_64-apple-darwin
run: |
nix build .#holochain_cli_x86_64-apple
./result/bin/hc --version
cp ./result/bin/hc deploy/hc-x86_64-apple
- name: Build the `holochain-cli-run-local` CLI for x86_64-apple-darwin
run: |
nix build .#holochain_cli_run_local_services_x86_64-apple
./result/bin/hc-run-local-services --version
cp ./result/bin/hc-run-local-services deploy/hc-run-local-services-x86_64-apple
- name: Build the `hcterm` CLI for x86_64-apple-darwin
run: |
nix build .#hcterm_x86_64-apple
./result/bin/hcterm --version
cp ./result/bin/hcterm deploy/hcterm-x86_64-apple
- name: Upload artifacts to release
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload-to-tag != '' }}
env:
GH_TOKEN: ${{ secrets.HRA_GITHUB_TOKEN }}
run: |
gh release upload ${{ github.event.inputs.upload-to-tag }} deploy/* --clobber --repo holochain/holochain
bundle-x86-64-linux:
runs-on: ubuntu-latest
needs: [verify-flake]
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/common-setup
with:
cachix_token: ${{ secrets.CACHIX_AUTH_TOKEN }}
- name: Bundle Lair Keystore
run: |
nix bundle .#holonix_lair_keystore
./lair-keystore --version
cp ./lair-keystore deploy/lair-keystore-x86-64-linux-bundle
- name: Bundle Holochain
run: |
nix bundle .#holonix_holochain
./holochain --version
cp ./holochain deploy/holochain-x86-64-linux-bundle
- name: Bundle the `hc` CLI
run: |
nix bundle .#holonix_hc
./hc --version
cp ./hc deploy/hc-x86-64-linux-bundle
- name: Bundle the `hc-run-local-services` CLI
run: |
nix bundle .#holonix_hc_run_local_services
./hc-run-local-services --version
cp ./hc-run-local-services deploy/hc-run-local-services-x86-64-linux-bundle
- name: Bundle the `hcterm` CLI
run: |
nix bundle .#holonix_hcterm
./hcterm --version
cp ./hcterm deploy/hcterm-x86-64-linux-bundle
- name: Upload artifacts to release
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.upload-to-tag != '' }}
env:
GH_TOKEN: ${{ secrets.HRA_GITHUB_TOKEN }}
run: |
gh release upload ${{ github.event.inputs.upload-to-tag }} deploy/* --clobber --repo holochain/holochain