diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..dc3a647 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,108 @@ +name: Build + +on: [push, pull_request] + +jobs: + build: + name: Build in ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + env: + NAME: updns + + steps: + - uses: actions/checkout@v2 + + - name: Install Rust toolchain + uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + components: rustfmt, clippy + + - name: Cache cargo registry + uses: actions/cache@v1 + with: + path: ~/.cargo/registry + key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + + - name: Cache cargo index + uses: actions/cache@v1 + with: + path: ~/.cargo/git + key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} + + - name: Cache cargo build + uses: actions/cache@v1 + with: + path: target + key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + + - name: Cargo fmt + uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + - name: Cargo clippy + uses: actions-rs/cargo@v1 + with: + command: clippy + + - name: Cargo test + uses: actions-rs/cargo@v1 + with: + command: test + args: --release + + - name: Cargo build + uses: actions-rs/cargo@v1 + with: + command: build + args: --release + + # -------------- Relese -------------- + + - name: Get release version (windows) + if: startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows') + id: GITHUB_RELEASE + shell: bash + run: echo ::set-output name=TAG::${GITHUB_REF:10} + + - name: Package zip (linux) + if: startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'ubuntu') + run: | + cd ./target/release/ + zip ${{ env.NAME }}-${GITHUB_REF:10}-linux.zip ${{ env.NAME }} + + - name: Package zip (osx) + if: startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'macos') + run: | + cd ./target/release/ + zip ${{ env.NAME }}-${GITHUB_REF:10}-osx.zip ${{ env.NAME }} + + - name: Package zip (windows) + if: startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'windows') + run: | + cd ./target/release/ + Compress-Archive -CompressionLevel Optimal -Force -Path ${{ env.NAME }}.exe -DestinationPath ${{ env.NAME }}-${{ steps.GITHUB_RELEASE.outputs.TAG }}-windows.zip + + - name: GitHub release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + files: ./target/release/*.zip + + - name: Cargo publish + uses: actions-rs/cargo@v1 + if: startsWith(github.ref, 'refs/tags/') && startsWith(matrix.os, 'ubuntu') + with: + command: publish + args: --token ${{ secrets.CARGO_TOKEN }} -v + + diff --git a/Cargo.lock b/Cargo.lock index 3b5a521..20054e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -577,7 +577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "updns" -version = "0.2.0" +version = "0.1.2" dependencies = [ "ace 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index 17cfd53..598e569 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "updns" -version = "0.2.0" +version = "0.1.2" edition = "2018" authors = ["wyhaya "] diff --git a/README.md b/README.md index f3c6541..b5b97fc 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # updns - +[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/wyhaya/updns/Build?style=flat-square)](https://github.com/wyhaya/updns/actions) [![Build Status](https://img.shields.io/travis/wyhaya/updns.svg?style=flat-square)](https://travis-ci.org/wyhaya/updns) [![Crates.io](https://img.shields.io/crates/v/updns.svg?style=flat-square)](https://crates.io/crates/updns) [![Crates.io](https://img.shields.io/crates/l/updns.svg?style=flat-square)](https://github.com/wyhaya/updns/blob/master/LICENSE)