diff --git a/.github/workflows/dusk.yml b/.github/workflows/dusk.yml new file mode 100644 index 0000000000000..a178a592467ce --- /dev/null +++ b/.github/workflows/dusk.yml @@ -0,0 +1,64 @@ +# Instructions for GitHub to build Dusk's smart contract compilers. + +on: + pull_request: + push: + tags: + - "v*.*.*" + branches: + - master + +name: Dusk Contract Compilers + +jobs: + target: + strategy: + matrix: + target: [ + x86_64-unknown-linux-gnu, + x86_64-apple-darwin, + aarch64-apple-darwin, + ] + include: + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + - os: macos-latest-large + target: x86_64-apple-darwin + - os: macos-latest-xlarge + target: aarch64-apple-darwin + runs-on: ${{ matrix.os }} + steps: + - name: Check out repository + uses: actions/checkout@v4 + with: + fetch-depth: 16 + + - name: Setup dependencies + if: matrix.os == 'ubuntu-latest' + run: sudo apt update && sudo apt install -y ninja-build + + - name: Setup dependencies + if: startsWith(matrix.os, 'macos') + run: | + brew install ninja gettext && + brew link --force gettext + - name: Generate configuration + run: | + HOST=${{ matrix.target }} envsubst < config.template.toml > config.toml && + cat config.toml + - name: Run build + run: ./x.py dist + + - name: Set artifact name + id: artifact-name + run: | + if [ "${{ github.ref_type }}" == "tag" ]; then + echo "name=duskc-${{ matrix.target }}-${{ github.ref_name }}" >> "$GITHUB_OUTPUT" + else + echo "name=duskc-${{ matrix.target }}-${{ github.sha }}" >> "$GITHUB_OUTPUT" + fi + - name: Upload build + uses: actions/upload-artifact@v3 + with: + name: ${{ steps.artifact-name.outputs.name }} + path: build/dist/ diff --git a/config.template.toml b/config.template.toml new file mode 100644 index 0000000000000..74e6bd7e77d5b --- /dev/null +++ b/config.template.toml @@ -0,0 +1,24 @@ +change-id = 131075 + +[llvm] +download-ci-llvm = false + +[build] +host = [ "${HOST}" ] +target = [ + "${HOST}", + "wasm32-unknown-unknown", + "wasm64-unknown-unknown" +] +docs = false +extended = true + +[rust] +channel = "nightly" +description = "Dusk Network's Smart Contract Compiler" + +lld = true + +[dist] +compression-formats = ["gz"] +compression-profile = "best"