Skip to content

Commit

Permalink
ci: Update rust example
Browse files Browse the repository at this point in the history
  • Loading branch information
pplmx committed Sep 30, 2024
0 parents commit 44de13b
Show file tree
Hide file tree
Showing 35 changed files with 1,249 additions and 0 deletions.
10 changes: 10 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# all start with .(dot), including directories and files
.*
CHANGELOG.md
CODE_OF_CONDUCT.md
compose.yml
CONTRIBUTING.md
Dockerfile
LICENSE*
README.md
SECURITY.md
14 changes: 14 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
tab_width = 4
trim_trailing_whitespace = true

[Makefile]
indent_style = tab
44 changes: 44 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
name: Bug report
about: Create a report to help us improve
title: 'bug: '
labels: bug
assignees: ''

---

## Bug description

<!-- A clear and concise description of what the bug is. -->

- Would you like to work on a fix? [y/n]

## To Reproduce

Steps to reproduce the behavior:

1. ...
2. ...
3. ...
4. ...

<!-- Make sure you are able to reproduce the bug in the main branch, too. -->

## Expected behavior

<!-- A clear and concise description of what you expected to happen. -->

## Screenshots

<!-- If applicable, add screenshots to help explain your problem. -->

## Environment

<!-- Please fill the following information. -->

- OS: [e.g. Ubuntu 20.04]
- example_rs version: [e.g. 0.1.0]

## Additional context

<!-- Add any other context about the problem here. -->
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: true
28 changes: 28 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
name: Feature request
about: Suggest an idea for this project
title: 'Feature Request: '
labels: enhancement
assignees: ''

---

## Motivations

<!--
If your feature request is related to a problem, please describe it.
-->

- Would you like to implement this feature? [y/n]

## Solution

<!-- Describe the solution you'd like. -->

## Alternatives

<!-- Describe any alternative solutions or features you've considered. -->

## Additional context

<!-- Add any other context or screenshots about the feature request here. -->
9 changes: 9 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<!-- Please explain the changes you made -->

<!--
Please make sure:
- you have read the contributing guidelines:
https://github.com/x-pt/example-rs/blob/main/docs/CONTRIBUTING.md
- you have updated the changelog (if needed):
https://github.com/x-pt/example-rs/blob/main/CHANGELOG.md
-->
63 changes: 63 additions & 0 deletions .github/configs/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
version: 1

labels:
# Type: Build-related changes
- label: "@type/build"
title: '^build(?:\(.+\))?\!?:'

# Type: CI-related changes
- label: "@type/ci"
title: '^ci(?:\(.+\))?\!?:'
files:
- '\.github/.+'

# Type: Documentation changes
- label: "@type/docs"
title: '^docs(?:\(.+\))?\!?:'
files:
- "docs/.+"
- "**/*.md"

# Type: New feature
- label: "@type/feature"
title: '^feat(?:\(.+\))?\!?:'

# Type: Bug fix
- label: "@type/fix"
title: '^fix(?:\(.+\))?\!?:'

# Type: Improvements such as style changes, refactoring, or performance improvements
- label: "@type/improve"
title: '^(style|refactor|perf)(?:\(.+\))?\!?:'

# Type: Dependency changes
- label: "@type/dependency"
title: '^(chore|build)(?:\(deps\))?\!?:'

# Type: Test-related changes
- label: "@type/test"
title: '^test(?:\(.+\))?\!?:'
files:
- "tests/.+"
- "spec/.+"

# Type: Security-related changes
- label: "@type/security"
title: '^security(?:\(.+\))?\!?:'
files:
- "**/security/.+"

# Issue Type Only: Feature Request
- label: "Feature Request"
type: issue
title: "^Feature Request:"

# Issue Type Only: Documentation
- label: "Documentation"
type: issue
title: "^.*(\b[Dd]ocumentation|doc(s)?\b).*"

# Issue Type Only: Bug Report
- label: "Bug Report"
type: issue
title: "^.*(\b[Bb]ug|b(u)?g(s)?\b).*"
8 changes: 8 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
# Check for updates every Monday
schedule:
interval: "weekly"
open-pull-requests-limit: 10
6 changes: 6 additions & 0 deletions .github/renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
]
}
82 changes: 82 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: CD # Continuous Deployment

on:
push:
tags:
- '[v]?[0-9]+.[0-9]+.[0-9]+'

jobs:
publish:
name: Publishing for ${{ matrix.job.os }}
runs-on: ${{ matrix.job.os }}
strategy:
matrix:
rust: [ stable ]
job:
- { os: macos-latest, target: x86_64-apple-darwin, architecture: x86_64, binary-postfix: "", use-cross: false }
- { os: macos-latest, target: aarch64-apple-darwin, architecture: arm64, binary-postfix: "", use-cross: false }
- { os: ubuntu-latest, target: x86_64-unknown-linux-gnu, architecture: x86_64, binary-postfix: "", use-cross: false }
- { os: windows-latest, target: x86_64-pc-windows-msvc, architecture: x86_64, binary-postfix: ".exe", use-cross: false }
- { os: ubuntu-latest, target: aarch64-unknown-linux-gnu, architecture: arm64, binary-postfix: "", use-cross: true }
- { os: ubuntu-latest, target: i686-unknown-linux-gnu, architecture: i686, binary-postfix: "", use-cross: true }

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

- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.job.target }}
profile: minimal
override: true

- uses: Swatinem/rust-cache@v2

- name: Build Cargo package
uses: actions-rs/cargo@v1
with:
command: build
use-cross: ${{ matrix.job.use-cross }}
toolchain: ${{ matrix.rust }}
args: --release --target ${{ matrix.job.target }}

- name: Install strip command (if needed)
if: startsWith(matrix.job.target, 'aarch64')
run: sudo apt-get install -y binutils-aarch64-linux-gnu

- name: Package final binary
run: |
cd target/${{ matrix.job.target }}/release
BINARY_NAME=example-rs${{ matrix.job.binary-postfix }}
GCC_PREFIX=$( [ "${{ matrix.job.target }}" == "aarch64-unknown-linux-gnu" ] && echo "aarch64-linux-gnu-" || echo "" )
"$GCC_PREFIX"strip $BINARY_NAME
RELEASE_NAME=example-rs-${GITHUB_REF/refs\/tags\//}-${{ matrix.job.os-name }}-${{ matrix.job.architecture }}
tar czvf $RELEASE_NAME.tar.gz $BINARY_NAME
shasum -a 256 $RELEASE_NAME.tar.gz > $RELEASE_NAME.sha256
- name: Release assets
uses: softprops/action-gh-release@v2
with:
files: |
target/${{ matrix.job.target }}/release/example-rs-*.tar.gz
target/${{ matrix.job.target }}/release/example-rs-*.sha256
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish-cargo:
name: Publishing to Cargo
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- uses: Swatinem/rust-cache@v2

- run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
51 changes: 51 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: CI # Continuous Integration

on:
push:
branches:
- main
pull_request:
workflow_dispatch:

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy

- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2

- name: Check formatting
run: cargo fmt --all --check

- name: Clippy check
run: cargo clippy --all-targets --all-features --workspace -- -D warnings

- name: Check documentation
env:
RUSTDOCFLAGS: -D warnings
run: cargo doc --no-deps --document-private-items --all-features --workspace --examples

test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]

steps:
- uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Cache Rust dependencies
uses: Swatinem/rust-cache@v2

- name: Run tests
run: cargo test --all-features --workspace
54 changes: 54 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Build and Push Docker Image

on:
push:
tags:
- '^v[0-9]+\.[0-9]+\.[0-9]+.*$'

jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Acquire tag name
run: echo "RELEASE_VERSION=${GITHUB_REF_NAME#refs/*/}" >> $GITHUB_ENV
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
-
name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build and Export to Docker
uses: docker/build-push-action@v6
with:
context: .
load: true
tags: |
ghcr.io/x-pt/example-rs:latest
ghcr.io/x-pt/example-rs:${GITHUB_REF_NAME:1}
-
name: Test it before Push
run: |
docker run --rm ghcr.io/x-pt/example-rs:latest
docker run --rm ghcr.io/x-pt/example-rs:${GITHUB_REF_NAME:1}
-
name: Build and Push
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/amd64,linux/arm64
push: true
tags: |
ghcr.io/x-pt/example-rs:latest
ghcr.io/x-pt/example-rs:${GITHUB_REF_NAME:1}
15 changes: 15 additions & 0 deletions .github/workflows/labeler.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Labeler

on:
- pull_request
- issues

jobs:
labeler:
runs-on: ubuntu-latest
steps:
- uses: srvaroa/labeler@master
with:
config_path: .github/configs/labeler.yml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading

0 comments on commit 44de13b

Please sign in to comment.