summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorRuixi-rebirth <ruixirebirth@gmail.com>2023-05-27 20:49:55 -0600
committerGitHub <noreply@github.com>2023-05-27 22:49:55 -0400
commit20d51cf17a5e93cc20373423efeca72fd7c100d5 (patch)
treedca1d1be6cc5a31192c8a8acccef974649e1acce /.github
parent493af3185092036cbbae81ae620b101f66cf4e9a (diff)
Add flake support (#297)
Add flake support
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/automated-build.yml260
-rw-r--r--.github/workflows/clippy.yml2
-rw-r--r--.github/workflows/rust-linux-dev.yml2
-rw-r--r--.github/workflows/rust-linux-main.yml2
-rw-r--r--.github/workflows/rust-macos-dev.yml2
-rw-r--r--.github/workflows/rust-macos-main.yml2
6 files changed, 123 insertions, 147 deletions
diff --git a/.github/workflows/automated-build.yml b/.github/workflows/automated-build.yml
index 6e52b81..26b284e 100644
--- a/.github/workflows/automated-build.yml
+++ b/.github/workflows/automated-build.yml
@@ -1,15 +1,12 @@
name: Automated build
-
env:
CI_INTERMEDIATES_DIR: "_ci-intermediates"
-
on:
release:
types: [created]
push:
tags:
- 'v*'
-
jobs:
build:
name: ${{ matrix.job.os }} (${{ matrix.job.target }})
@@ -18,138 +15,127 @@ jobs:
fail-fast: false
matrix:
job:
- - { os: ubuntu-20.04, target: arm-unknown-linux-gnueabihf , use-cross: true }
- - { os: ubuntu-20.04, target: arm-unknown-linux-musleabihf, use-cross: true }
- - { os: ubuntu-20.04, target: aarch64-unknown-linux-gnu , use-cross: true }
- - { os: ubuntu-20.04, target: x86_64-unknown-linux-gnu }
- - { os: ubuntu-20.04, target: x86_64-unknown-linux-musl , use-cross: true }
- - { os: macos-10.15 , target: x86_64-apple-darwin }
-
+ - {os: ubuntu-20.04, target: arm-unknown-linux-gnueabihf, use-cross: true}
+ - {os: ubuntu-20.04, target: arm-unknown-linux-musleabihf, use-cross: true}
+ - {os: ubuntu-20.04, target: aarch64-unknown-linux-gnu, use-cross: true}
+ - {os: ubuntu-20.04, target: x86_64-unknown-linux-gnu}
+ - {os: ubuntu-20.04, target: x86_64-unknown-linux-musl, use-cross: true}
+ - {os: macos-10.15, target: x86_64-apple-darwin}
steps:
- - name: Checkout source code
- uses: actions/checkout@v2
-
- - name: Install prerequisites
- shell: bash
- run: |
- case ${{ matrix.job.target }} in
- arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
- aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
- esac
-
- - name: Extract crate information
- shell: bash
- run: |
- echo "PROJECT_NAME=joshuto" >> $GITHUB_ENV
- echo "PROJECT_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $GITHUB_ENV
- echo "PROJECT_MAINTAINER=$(sed -n 's/^authors = \["\(.*\)"\]/\1/p' Cargo.toml)" >> $GITHUB_ENV
- echo "PROJECT_HOMEPAGE=$(sed -n 's/^homepage = "\(.*\)"/\1/p' Cargo.toml)" >> $GITHUB_ENV
-
- - name: Install Rust toolchain
- uses: actions-rs/toolchain@v1
- with:
- toolchain: stable
- target: ${{ matrix.job.target }}
- override: true
- profile: minimal # minimal component installation (ie, no documentation)
-
- - name: Show version information (Rust, cargo, GCC)
- shell: bash
- run: |
- gcc --version || true
- rustup -V
- rustup toolchain list
- rustup default
- cargo -V
- rustc -V
-
- - name: Build
- uses: actions-rs/cargo@v1
- with:
- use-cross: ${{ matrix.job.use-cross }}
- command: build
- args: --locked --release --target=${{ matrix.job.target }}
-
- - name: Strip debug information from executable
- id: strip
- shell: bash
- run: |
- # Figure out suffix of binary
- EXE_suffix=""
- case ${{ matrix.job.target }} in
- *-pc-windows-*) EXE_suffix=".exe" ;;
- esac;
-
- # Figure out what strip tool to use if any
- STRIP="strip"
- case ${{ matrix.job.target }} in
- arm-unknown-linux-*) STRIP="arm-linux-gnueabihf-strip" ;;
- aarch64-unknown-linux-gnu) STRIP="aarch64-linux-gnu-strip" ;;
- *-pc-windows-msvc) STRIP="" ;;
- esac;
-
- # Setup paths
- BIN_DIR="${{ env.CI_INTERMEDIATES_DIR }}/stripped-release-bin/"
- mkdir -p "${BIN_DIR}"
- BIN_NAME="${{ env.PROJECT_NAME }}${EXE_suffix}"
- BIN_PATH="${BIN_DIR}/${BIN_NAME}"
-
- # Copy the release build binary to the result location
- cp "target/${{ matrix.job.target }}/release/${BIN_NAME}" "${BIN_DIR}"
-
- # Also strip if possible
- if [ -n "${STRIP}" ]; then
- "${STRIP}" "${BIN_PATH}"
- fi
-
- # Let subsequent steps know where to find the (stripped) bin
- echo ::set-output name=BIN_PATH::${BIN_PATH}
- echo ::set-output name=BIN_NAME::${BIN_NAME}
-
- - name: Create tarball
- id: package
- shell: bash
- run: |
- PKG_suffix=".tar.gz" ; case ${{ matrix.job.target }} in *-pc-windows-*) PKG_suffix=".zip" ;; esac;
- PKG_BASENAME=${PROJECT_NAME}-v${PROJECT_VERSION}-${{ matrix.job.target }}
- PKG_NAME=${PKG_BASENAME}${PKG_suffix}
- echo ::set-output name=PKG_NAME::${PKG_NAME}
- PKG_STAGING="${{ env.CI_INTERMEDIATES_DIR }}/package"
- ARCHIVE_DIR="${PKG_STAGING}/${PKG_BASENAME}/"
- mkdir -p "${ARCHIVE_DIR}"
-
- # Binary
- cp "${{ steps.strip.outputs.BIN_PATH }}" "$ARCHIVE_DIR"
-
- # base compressed package
- pushd "${PKG_STAGING}/" >/dev/null
- case ${{ matrix.job.target }} in
- *-pc-windows-*) 7z -y a "${PKG_NAME}" "${PKG_BASENAME}"/* | tail -2 ;;
- *) tar czf "${PKG_NAME}" "${PKG_BASENAME}"/* ;;
- esac;
- popd >/dev/null
-
- # Let subsequent steps know where to find the compressed package
- echo ::set-output name=PKG_PATH::"${PKG_STAGING}/${PKG_NAME}"
-
- - name: "Artifact upload: tarball"
- uses: actions/upload-artifact@master
- with:
- name: ${{ steps.package.outputs.PKG_NAME }}
- path: ${{ steps.package.outputs.PKG_PATH }}
-
- - name: Check for release
- id: is-release
- shell: bash
- run: |
- unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
- echo ::set-output name=IS_RELEASE::${IS_RELEASE}
-
- - name: Publish archives and packages
- uses: softprops/action-gh-release@v1
- if: steps.is-release.outputs.IS_RELEASE
- with:
- files: |
- ${{ steps.package.outputs.PKG_PATH }}
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ - name: Checkout source code
+ uses: actions/checkout@v2
+ - name: Install prerequisites
+ shell: bash
+ run: |
+ case ${{ matrix.job.target }} in
+ arm-unknown-linux-*) sudo apt-get -y update ; sudo apt-get -y install gcc-arm-linux-gnueabihf ;;
+ aarch64-unknown-linux-gnu) sudo apt-get -y update ; sudo apt-get -y install gcc-aarch64-linux-gnu ;;
+ esac
+ - name: Extract crate information
+ shell: bash
+ run: |
+ echo "PROJECT_NAME=joshuto" >> $GITHUB_ENV
+ echo "PROJECT_VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)" >> $GITHUB_ENV
+ echo "PROJECT_MAINTAINER=$(sed -n 's/^authors = \["\(.*\)"\]/\1/p' Cargo.toml)" >> $GITHUB_ENV
+ echo "PROJECT_HOMEPAGE=$(sed -n 's/^homepage = "\(.*\)"/\1/p' Cargo.toml)" >> $GITHUB_ENV
+ - name: Install Rust toolchain
+ uses: actions-rs/toolchain@v1
+ with:
+ toolchain: stable
+ target: ${{ matrix.job.target }}
+ override: true
+ profile: minimal # minimal component installation (ie, no documentation)
+ - name: Show version information (Rust, cargo, GCC)
+ shell: bash
+ run: |
+ gcc --version || true
+ rustup -V
+ rustup toolchain list
+ rustup default
+ cargo -V
+ rustc -V
+ - name: Build
+ uses: actions-rs/cargo@v1
+ with:
+ use-cross: ${{ matrix.job.use-cross }}
+ command: build
+ args: --locked --release --target=${{ matrix.job.target }}
+ - name: Strip debug information from executable
+ id: strip
+ shell: bash
+ run: |
+ # Figure out suffix of binary
+ EXE_suffix=""
+ case ${{ matrix.job.target }} in
+ *-pc-windows-*) EXE_suffix=".exe" ;;
+ esac;
+
+ # Figure out what strip tool to use if any
+ STRIP="strip"
+ case ${{ matrix.job.target }} in
+ arm-unknown-linux-*) STRIP="arm-linux-gnueabihf-strip" ;;
+ aarch64-unknown-linux-gnu) STRIP="aarch64-linux-gnu-strip" ;;
+ *-pc-windows-msvc) STRIP="" ;;
+ esac;
+
+ # Setup paths
+ BIN_DIR="${{ env.CI_INTERMEDIATES_DIR }}/stripped-release-bin/"
+ mkdir -p "${BIN_DIR}"
+ BIN_NAME="${{ env.PROJECT_NAME }}${EXE_suffix}"
+ BIN_PATH="${BIN_DIR}/${BIN_NAME}"
+
+ # Copy the release build binary to the result location
+ cp "target/${{ matrix.job.target }}/release/${BIN_NAME}" "${BIN_DIR}"
+
+ # Also strip if possible
+ if [ -n "${STRIP}" ]; then
+ "${STRIP}" "${BIN_PATH}"
+ fi
+
+ # Let subsequent steps know where to find the (stripped) bin
+ echo ::set-output name=BIN_PATH::${BIN_PATH}
+ echo ::set-output name=BIN_NAME::${BIN_NAME}
+ - name: Create tarball
+ id: package
+ shell: bash
+ run: |
+ PKG_suffix=".tar.gz" ; case ${{ matrix.job.target }} in *-pc-windows-*) PKG_suffix=".zip" ;; esac;
+ PKG_BASENAME=${PROJECT_NAME}-v${PROJECT_VERSION}-${{ matrix.job.target }}
+ PKG_NAME=${PKG_BASENAME}${PKG_suffix}
+ echo ::set-output name=PKG_NAME::${PKG_NAME}
+ PKG_STAGING="${{ env.CI_INTERMEDIATES_DIR }}/package"
+ ARCHIVE_DIR="${PKG_STAGING}/${PKG_BASENAME}/"
+ mkdir -p "${ARCHIVE_DIR}"
+
+ # Binary
+ cp "${{ steps.strip.outputs.BIN_PATH }}" "$ARCHIVE_DIR"
+
+ # base compressed package
+ pushd "${PKG_STAGING}/" >/dev/null
+ case ${{ matrix.job.target }} in
+ *-pc-windows-*) 7z -y a "${PKG_NAME}" "${PKG_BASENAME}"/* | tail -2 ;;
+ *) tar czf "${PKG_NAME}" "${PKG_BASENAME}"/* ;;
+ esac;
+ popd >/dev/null
+
+ # Let subsequent steps know where to find the compressed package
+ echo ::set-output name=PKG_PATH::"${PKG_STAGING}/${PKG_NAME}"
+ - name: "Artifact upload: tarball"
+ uses: actions/upload-artifact@master
+ with:
+ name: ${{ steps.package.outputs.PKG_NAME }}
+ path: ${{ steps.package.outputs.PKG_PATH }}
+ - name: Check for release
+ id: is-release
+ shell: bash
+ run: |
+ unset IS_RELEASE ; if [[ $GITHUB_REF =~ ^refs/tags/v[0-9].* ]]; then IS_RELEASE='true' ; fi
+ echo ::set-output name=IS_RELEASE::${IS_RELEASE}
+ - name: Publish archives and packages
+ uses: softprops/action-gh-release@v1
+ if: steps.is-release.outputs.IS_RELEASE
+ with:
+ files: |
+ ${{ steps.package.outputs.PKG_PATH }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/clippy.yml b/.github/workflows/clippy.yml
index aee7015..119528c 100644
--- a/.github/workflows/clippy.yml
+++ b/.github/workflows/clippy.yml
@@ -1,11 +1,9 @@
name: Clippy - Catch common mistakes and improve your Rust code
-
on:
push:
branches: [dev, main]
pull_request:
branches: [dev, main]
-
jobs:
check:
name: Clippy - Catch common mistakes and improve your Rust code
diff --git a/.github/workflows/rust-linux-dev.yml b/.github/workflows/rust-linux-dev.yml
index 5abc087..94649ef 100644
--- a/.github/workflows/rust-linux-dev.yml
+++ b/.github/workflows/rust-linux-dev.yml
@@ -1,11 +1,9 @@
name: Linux build dev
-
on:
push:
branches: [dev]
pull_request:
branches: [dev]
-
jobs:
check:
name: Rust Linux ${{ matrix.rust }}
diff --git a/.github/workflows/rust-linux-main.yml b/.github/workflows/rust-linux-main.yml
index ab48b78..d388e4c 100644
--- a/.github/workflows/rust-linux-main.yml
+++ b/.github/workflows/rust-linux-main.yml
@@ -1,11 +1,9 @@
name: Linux build
-
on:
push:
branches: [main]
pull_request:
branches: [main]
-
jobs:
check:
name: Rust Linux ${{ matrix.rust }}
diff --git a/.github/workflows/rust-macos-dev.yml b/.github/workflows/rust-macos-dev.yml
index 76a409e..982e217 100644
--- a/.github/workflows/rust-macos-dev.yml
+++ b/.github/workflows/rust-macos-dev.yml
@@ -1,11 +1,9 @@
name: MacOS build dev
-
on:
push:
branches: [dev]
pull_request:
branches: [dev]
-
jobs:
check:
name: Rust MacOS ${{ matrix.rust }}
diff --git a/.github/workflows/rust-macos-main.yml b/.github/workflows/rust-macos-main.yml
index bc5b1a8..38ba172 100644
--- a/.github/workflows/rust-macos-main.yml
+++ b/.github/workflows/rust-macos-main.yml
@@ -1,11 +1,9 @@
name: MacOS build
-
on:
push:
branches: [main]
pull_request:
branches: [main]
-
jobs:
check:
name: Rust MacOS ${{ matrix.rust }}