Skip to content

Commit

Permalink
feat: add ci, release info and workspace
Browse files Browse the repository at this point in the history
  • Loading branch information
baszalmstra committed Sep 26, 2023
1 parent 511ba7d commit 5c3a101
Show file tree
Hide file tree
Showing 6 changed files with 260 additions and 9 deletions.
20 changes: 20 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
version: 2
updates:
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "daily"
time: "04:00" # UTC
labels:
- "dependencies"
commit-message:
prefix: "bump"
open-pull-requests-limit: 10
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
labels:
- "dependencies"
commit-message:
prefix: "chore(ci)"
70 changes: 70 additions & 0 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: Deploy Docs

on:
push:
branches:
- main

env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
RUSTDOCFLAGS: --html-in-header header.html


# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true

jobs:
build-and-deploy:
if: github.repository == 'prefix-dev/rattler_installs_packages'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- uses: actions-rs/toolchain@v1
with:
profile: minimal

- name: Setup Pages
uses: actions/configure-pages@v3

# This does the following:
# - Replaces the docs icon with one that clearly denotes it's not the released package on crates.io
# - Adds a meta tag that forces Google not to index any page on the site.
- name: Pre-docs-build
run: |
echo "<meta name=\"robots\" content=\"noindex\">" > header.html
- name: Build Documentation
run: cargo doc --workspace --no-deps --all-features --lib

# This adds the following:
# - A top level redirect to the rattler_installs_packages crate documentation
# - A robots.txt file to forbid any crawling of the site (to defer to the docs.rs site on search engines).
# - A .nojekyll file to disable Jekyll GitHub Pages builds.
- name: Finalize documentation
run: |
echo "<meta http-equiv=\"refresh\" content=\"0; url=rattler_installs_packages/index.html\">" > target/doc/index.html
echo "User-Agent: *\nDisallow: /" > target/doc/robots.txt
touch target/doc/.nojekyll
# https://github.com/actions/upload-pages-artifact#file-permissions
- run: chmod -c -R +rX target/doc/

- name: Upload artifact
uses: actions/upload-pages-artifact@v2
with:
path: 'target/doc'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v2
126 changes: 126 additions & 0 deletions .github/workflows/rust-compile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
on:
push:
branches: ["main"]
pull_request:

name: Rust

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
RUST_LOG: info
RUST_BACKTRACE: 1
RUSTFLAGS: "-D warnings"
CARGO_TERM_COLOR: always
DEFAULT_FEATURES:

jobs:
check-rustdoc-links:
name: Check intra-doc links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
- run: |
for package in $(cargo metadata --no-deps --format-version=1 | jq -r '.packages[] | .name'); do
cargo rustdoc -p "$package" --all-features -- -D warnings -W unreachable-pub
done
format_and_lint:
name: Format and Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy, rustfmt
- name: Run rustfmt
uses: actions-rust-lang/rustfmt@v1
- name: Run clippy
run: cargo clippy

build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
needs: [ format_and_lint ]
strategy:
fail-fast: false
matrix:
include:
- { name: "Linux-x86_64", target: x86_64-unknown-linux-musl, os: ubuntu-latest }
# - { name: "Linux-aarch64", target: aarch64-unknown-linux-musl, os: ubuntu-latest, skip-tests: true }
# - { name: "Linux-arm", target: arm-unknown-linux-musleabi, os: ubuntu-latest, use-cross: true }

# - { name: "Linux-mips", target: mips-unknown-linux-musl, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-mipsel", target: mipsel-unknown-linux-musl, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-mips64", target: mips64-unknown-linux-muslabi64, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-mips64el", target: mips64el-unknown-linux-muslabi64, os: ubuntu-latest, use-cross: true, skip-tests: true }

# - { name: "Linux-powerpc", target: powerpc-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-powerpc64", target: powerpc64-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }
# - { name: "Linux-powerpc64le", target: powerpc-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }

# - { name: "Linux-s390x", target: s390x-unknown-linux-gnu, os: ubuntu-latest, use-cross: true, skip-tests: true }

- { name: "macOS-x86_64", target: x86_64-apple-darwin, os: macOS-latest }
# - { name: "macOS-aarch64", target: aarch64-apple-darwin, os: macOS-latest, skip-tests: true }

- { name: "Windows-x86_64", target: x86_64-pc-windows-msvc, os: windows-latest }
# - { name: "Windows-aarch64", target: aarch64-pc-windows-msvc, os: windows-latest, skip-tests: true }
steps:
- name: Checkout source code
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: ${{ matrix.target }}
components: rustfmt
cache: false

- uses: taiki-e/setup-cross-toolchain-action@v1
with:
target: ${{ matrix.target }}

- uses: Swatinem/rust-cache@v2

- name: Show version information (Rust, cargo, GCC)
shell: bash
run: |
gcc --version || true
rustup -V
rustup toolchain list
cargo -V
rustc -V
- name: Use rustls on musl targets.
id: build-options
if: contains(matrix.target, '-musl')
run: |
echo "CARGO_BUILD_OPTIONS=${CARGO_BUILD_OPTIONS} --no-default-features --features rustls-tls" >> $GITHUB_OUTPUT
- name: Build
run: >
cargo build
--all-targets
--features ${{ env.DEFAULT_FEATURES }}
${{ steps.build-options.outputs.CARGO_BUILD_OPTIONS}}
- name: Disable testing the tools crate if cross compiling
id: test-options
if: ${{ !matrix.skip-tests }}
run: |
echo "CARGO_TEST_OPTIONS=${CARGO_TEST_OPTIONS} --exclude tools" >> $GITHUB_OUTPUT
- name: Run tests
if: ${{ !matrix.skip-tests }}
run: >
cargo test
--workspace
--features ${{ env.DEFAULT_FEATURES }}
${{ steps.build-options.outputs.CARGO_BUILD_OPTIONS}}
${{ steps.test-options.outputs.CARGO_TEST_OPTIONS}}
--
--nocapture
21 changes: 21 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
[workspace]
resolver = "2"
members = ["crates/*"]

[profile.dev.package.insta]
opt-level = 3

[profile.dev.package.similar]
opt-level = 3

[workspace.package]
version = "0.1.0"
categories = ["conda"]
homepage = "https://github.com/mamba-org/rattler"
repository = "https://github.com/mamba-org/rattler"
license = "BSD-3-Clause"
edition = "2021"
readme = "README.md"
rust-version = "1.70"

[workspace.metadata.release]
allow-branch = ["main"]
consolidate-commits = true
tag-prefix = ""
15 changes: 10 additions & 5 deletions crates/rattler_installs_packages/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,15 @@
[package]
name = "rattler_installs_packages"
version = "0.1.0"
edition = "2021"
rust-version = "1.70"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
version.workspace = true
edition.workspace = true
authors = ["Bas Zalmstra <[email protected]>"]
description = "Datastructures and algorithms to interact with Python packaging ecosystem"
categories.workspace = true
homepage.workspace = true
repository.workspace = true
license.workspace = true
readme.workspace = true
rust-version.workspace = true

[dependencies]
async-trait = "0.1.71"
Expand Down
17 changes: 13 additions & 4 deletions crates/rip/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
[package]
name = "rip"
version = "0.1.0"
edition = "2021"
version.workspace = true
edition.workspace = true
authors = ["Bas Zalmstra <[email protected]>"]
description = "Binary to verify and play around with rattler_installs_packages"
categories.workspace = true
homepage.workspace = true
repository.workspace = true
license.workspace = true
readme.workspace = true
default-run = "rip"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[[bin]]
name = "index"



[dependencies]
clap = { version = "4.3.23", features = ["derive"] }
console = { version = "0.15.7", features = ["windows-console-colors"] }
Expand All @@ -32,3 +37,7 @@ serde = "1.0.188"
serde_with = "3.0.0"
serde_json = "1.0.107"
rusqlite = { version = "0.29.0", features = ["bundled"] }

[package.metadata.release]
# Dont publish the binary
release = false

0 comments on commit 5c3a101

Please sign in to comment.