Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- name: Build Delta Compiler
- on:
- push:
- branches: [ master ]
- pull_request:
- branches: [ master ]
- release:
- types: [ created ]
- env:
- CARGO_TERM_COLOR: always
- jobs:
- build:
- name: Build on ${{ matrix.os }}
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- include:
- - os: ubuntu-latest
- target: x86_64-unknown-linux-gnu
- artifact_name: delta
- asset_name: delta-linux-x86_64
- - os: windows-latest
- target: x86_64-pc-windows-msvc
- artifact_name: delta.exe
- asset_name: delta-windows-x86_64.exe
- - os: macos-latest
- target: aarch64-apple-darwin
- artifact_name: delta
- asset_name: delta-macos-aarch64
- steps:
- - name: Checkout code
- uses: actions/checkout@v4
- - name: Install Rust
- uses: dtolnay/rust-toolchain@stable
- with:
- targets: ${{ matrix.target }}
- - name: Install LLVM (Ubuntu)
- if: matrix.os == 'ubuntu-latest'
- run: |
- sudo apt-get update
- sudo apt-get install -y llvm-17-dev libllvm17 clang-17 libpolly-17-dev
- echo "LLVM_SYS_170_PREFIX=/usr/lib/llvm-17" >> $GITHUB_ENV
- - name: Install LLVM (macOS)
- if: matrix.os == 'macos-latest'
- run: |
- brew install llvm@17
- echo "LLVM_SYS_170_PREFIX=$(brew --prefix llvm@17)" >> $GITHUB_ENV
- - name: Install LLVM (Windows)
- if: matrix.os == 'windows-latest'
- run: |
- choco install llvm --version=17.0.6 --force --no-progress
- echo "LLVM_SYS_170_PREFIX=C:\Program Files\LLVM" >> $env:GITHUB_ENV
- - name: Cache cargo registry
- uses: actions/cache@v4
- with:
- path: ~/.cargo/registry
- key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: |
- ${{ runner.os }}-cargo-registry-
- - name: Cache cargo index
- uses: actions/cache@v4
- with:
- path: ~/.cargo/git
- key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: |
- ${{ runner.os }}-cargo-index-
- - name: Cache target directory
- uses: actions/cache@v4
- with:
- path: target
- key: ${{ runner.os }}-${{ matrix.target }}-target-${{ hashFiles('**/Cargo.lock') }}
- restore-keys: |
- ${{ runner.os }}-${{ matrix.target }}-target-
- - name: Build
- run: cargo build --release --target ${{ matrix.target }}
- - name: Run tests
- run: cargo test --target ${{ matrix.target }}
- - name: Prepare artifact (Unix)
- if: matrix.os != 'windows-latest'
- run: |
- mkdir -p artifacts
- cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} artifacts/${{ matrix.asset_name }}
- chmod +x artifacts/${{ matrix.asset_name }}
- - name: Prepare artifact (Windows)
- if: matrix.os == 'windows-latest'
- run: |
- mkdir artifacts
- copy target\${{ matrix.target }}\release\${{ matrix.artifact_name }} artifacts\${{ matrix.asset_name }}
- - name: Upload artifacts
- uses: actions/upload-artifact@v4
- with:
- name: ${{ matrix.asset_name }}
- path: artifacts/${{ matrix.asset_name }}
- retention-days: 30
- create-release-artifacts:
- name: Create Release Archive
- runs-on: ubuntu-latest
- needs: build
- if: github.event_name == 'release'
- steps:
- - name: Download all artifacts
- uses: actions/download-artifact@v4
- with:
- path: ./artifacts
- - name: Create release archives
- run: |
- cd artifacts
- # Create individual archives for each platform
- tar -czf delta-linux-x86_64.tar.gz delta-linux-x86_64/
- tar -czf delta-macos-aarch64.tar.gz delta-macos-aarch64/
- zip -r delta-windows-x86_64.zip delta-windows-x86_64.exe/
- # Create a combined archive with all platforms
- mkdir -p delta-all-platforms
- cp delta-linux-x86_64/delta-linux-x86_64 delta-all-platforms/
- cp delta-macos-aarch64/delta-macos-aarch64 delta-all-platforms/
- cp delta-windows-x86_64.exe/delta-windows-x86_64.exe delta-all-platforms/
- tar -czf delta-all-platforms.tar.gz delta-all-platforms/
- - name: Upload release assets
- uses: softprops/action-gh-release@v2
- with:
- files: |
- artifacts/delta-linux-x86_64.tar.gz
- artifacts/delta-macos-aarch64.tar.gz
- artifacts/delta-windows-x86_64.zip
- artifacts/delta-all-platforms.tar.gz
- env:
- GITHUB_TOKEN: ${{ secrets.SECRET_TOKEN }}
Advertisement
Add Comment
Please, Sign In to add comment