Skip to content

Commit

Permalink
Setup CI: check format, clippy, upload artifacts and publish to crate…
Browse files Browse the repository at this point in the history
…s.io

Issue #32
  • Loading branch information
AngheloAlf committed Feb 22, 2024
1 parent 2253908 commit e44cfd2
Show file tree
Hide file tree
Showing 4 changed files with 178 additions and 0 deletions.
17 changes: 17 additions & 0 deletions .github/workflows/md_lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Lint markdown files

# Build on every branch push, tag push, and pull request change:
on: [push, pull_request]

jobs:
checks:
runs-on: ubuntu-latest
name: Lint md files
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Lint markdown files
uses: articulate/[email protected]
with:
config: .markdownlint.jsonc
140 changes: 140 additions & 0 deletions .github/workflows/publish_crate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: Build and upload Rust crate

# Build on every branch push, tag push, and pull request change:
on: [push, pull_request]

jobs:
check_fmt:
name: Check format
runs-on: ubuntu-latest

steps:
- name: Checkout reposistory
uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Check format
run: cargo fmt --check

check_clippy:
name: Check clippy
runs-on: ubuntu-latest

steps:
- name: Checkout reposistory
uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Setup clippy
run: rustup component add clippy

- name: Run clippy
run: cargo clippy --all-targets -- -D warnings

# run_tests:
# name: Run tests
# runs-on: ubuntu-latest
#
# steps:
# - name: Checkout reposistory
# uses: actions/checkout@v4
#
# - name: Setup Rust toolchain
# uses: actions-rs/toolchain@v1
# with:
# toolchain: stable
# override: true
#
# - name: Run tests
# run: cargo test --workspace


release:
name: release ${{ matrix.target }}
runs-on: ubuntu-latest
needs: [check_fmt, check_clippy] # run_tests

strategy:
fail-fast: false
matrix:
- target:
- x86_64-pc-windows-gnu
- x86_64-pc-windows-msvc
- x86_64-apple-darwin
- aarch64-apple-darwin
- x86_64-unknown-linux-musl
- x86_64-unknown-linux-gnu

steps:
- name: Checkout repo
uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}

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

- name: Move files for packaging
run: |
mkdir -p package/
cp target/${{ matrix.target }}/release/slinky-cli package/ || cp target/${{ matrix.target }}/release/slinky-cli.exe package/
cp LICENSE package/slinky-cli.LICENSE
cp README.md package/slinky-cli.README.md
tree package
- name: Package .tar.gz
run: |
cd package && tar -czf ../slinky-cli-${{ matrix.crate-type }}-${{ matrix.target }}.tar.gz *
- name: Upload .tar.gz artifact
uses: actions/upload-artifact@v3
with:
name: slinky-cli-${{ matrix.crate-type }}-${{ matrix.target }}
path: |
slinky-cli-${{ matrix.crate-type }}-${{ matrix.target }}.tar.gz
if-no-files-found: error

- name: Publish .tar.gz release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/') && matrix.archive == 'tar.gz'
with:
files: slinky-cli-${{ matrix.crate-type }}-${{ matrix.target }}.tar.gz

publish:
name: Publish
runs-on: ubuntu-latest
needs: [check_fmt, check_clippy] # run_tests

steps:
- name: Checkout reposistory
uses: actions/checkout@v4

- name: Setup Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true

- name: Build Rust package
run: cargo build --release --workspace

- name: Publish dry run
if: github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/')
run: cargo publish --dry-run

- name: Upload crate
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}
14 changes: 14 additions & 0 deletions .markdownlint.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
// https://github.com/DavidAnson/markdownlint/blob/main/doc/md024.md
// MD024 - Multiple headings with the same content
"MD024": {
"siblings_only": true
},

// https://github.com/DavidAnson/markdownlint/blob/main/doc/md013.md
// MD013 - Line length
"MD013": {
"code_block_line_length": 120,
"headings": false
}
}
7 changes: 7 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
// See https://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"davidanson.vscode-markdownlint"
]
}

0 comments on commit e44cfd2

Please sign in to comment.