Skip to content

Commit

Permalink
Merge pull request #1 from Hubro/build-workflow
Browse files Browse the repository at this point in the history
CI/CD workflow
  • Loading branch information
Hubro committed Apr 15, 2023
2 parents 319b0f7 + 946e523 commit 76b3bae
Show file tree
Hide file tree
Showing 3 changed files with 131 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .cargo/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
126 changes: 126 additions & 0 deletions .github/workflows/cicd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: CI/CD

on: push

jobs:
test:
name: Check
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Test
run: cargo test --verbose

build-linux:
name: Build Linux binary
needs: [test]
runs-on: ubuntu-latest

strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-gnu
- i686-unknown-linux-gnu

steps:
- uses: actions/checkout@v3

- name: Install gcc-aarch64-linux-gnu
if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }}
run: sudo apt-get update && sudo apt-get install gcc-aarch64-linux-gnu

- name: Install 32-bit gcc
if: ${{ matrix.target == 'i686-unknown-linux-gnu' }}
run: sudo apt-get update && sudo apt-get install gcc-multilib

- name: Add target with rustup
run: rustup target add ${{ matrix.target }}

- name: Build release
run: cargo build --release --target=${{ matrix.target }}

- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.target }}
path: target/${{ matrix.target }}/release/yangfmt

build-macos:
name: Build MacOS binary
needs: [test]
runs-on: macos-latest

strategy:
matrix:
target:
- x86_64-apple-darwin
- aarch64-apple-darwin

steps:
- uses: actions/checkout@v3

- name: Add target with rustup
run: rustup target add ${{ matrix.target }}

- name: Build release
run: cargo build --release --target=${{ matrix.target }}

- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.target }}
path: target/${{ matrix.target }}/release/yangfmt

build-windows:
name: Build Windows binary
needs: [test]
runs-on: windows-latest

strategy:
matrix:
target:
- x86_64-pc-windows-msvc
- i686-pc-windows-msvc

steps:
- uses: actions/checkout@v3

- name: Add target with rustup
run: rustup target add ${{ matrix.target }}

- name: Build release
run: cargo build --release --target=${{ matrix.target }}

- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.target }}
path: target/${{ matrix.target }}/release/yangfmt.exe

create-release:
name: Create release
needs: [build-linux, build-macos, build-windows]
if: ${{ startsWith(github.ref, 'refs/tags/v') }}
runs-on: ubuntu-latest

steps:
- name: Create release temporary directory
run: mkdir artifacts && mkdir releases

- uses: actions/download-artifact@v3
with:
path: artifacts

- name: Mark build artifacts as executable
run: find artifacts -type f -exec chmod 755 {} \;

- name: Zip up the build artifacts
run: find artifacts -type f -exec bash -c 'zip -r releases/$(basename $(dirname {})).zip -j {}' \;

- name: Create release
uses: softprops/action-gh-release@v1
with:
files: releases/*.zip
3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,6 @@ lazy_static = "1.4.0"
pretty_assertions = "1.2.1"
regex = "1.7.3"
textwrap = "0.16"

[profile.release]
strip = true

0 comments on commit 76b3bae

Please sign in to comment.