1658013540
Rust Cache Action
A GitHub Action that implements smart caching for rust/cargo projects with sensible defaults.
- uses: actions/checkout@v2 # selecting a toolchain either by action or manual `rustup` calls should happen # before the plugin, as it uses the current rustc version as its cache key - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: Swatinem/rust-cache@v1
: key
An optional key that is added to the automatic cache key.
: sharedKey
An additional key that is stable over multiple jobs.
: working-directory
The working directory the action operates in, is case the cargo project is not located in the repo root.
: target-dir
The target directory that should be cleaned and persisted, defaults to ./target
.
: cache-on-failure
Cache even if the build fails, defaults to false
: cache-hit
This is a boolean flag that will be set to true
when there was an exact cache hit.
This action only caches the dependencies of a crate, so is more effective if the dependency / own code ratio is higher.
It is also most effective for repositories with a Cargo.lock
file. Library repositories with only a Cargo.toml
file have limited benefits, as cargo will always use the most up-to-date dependency versions, which may not be cached.
Usage with Stable Rust is most effective, as a cache is tied to the Rust version. Using it with Nightly Rust is less effective as it will throw away the cache every day.
I use the v1
branch similar to master
development, so if you want to have a more stable experience, please use a fixed revision or tag.
This action currently caches the following files/directories:
~/.cargo/bin
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git
~/.cargo/.crates.toml
~/.cargo/.crates2.json
./target
This cache is automatically keyed by:
job_id
,Cargo.lock
/ Cargo.toml
files found anywhere in the repository (if present).rust-toolchain
/ rust-toolchain.toml
files in the root of the repository (if present).An additional input key
can be provided if the builtin keys are not sufficient.
Before being persisted, the cache is cleaned of:
~/.cargo/bin
that were present before the action ran (for example rustc
).mtime
older than one week.In particular, the workspace crates themselves are not cached since doing so is generally not effective. For this reason, this action automatically sets CARGO_INCREMENTAL=0
to disable incremental compilation, so that the Rust compiler doesn't waste time creating the additional artifacts required for incremental builds.
The ~/.cargo/registry/src
directory is not cached since it is quicker for Cargo to recreate it from the compressed crate archives in ~/.cargo/registry/cache
.
The action will try to restore from a previous Cargo.lock
version as well, so lockfile updates should only re-build changed dependencies.
Additionally, the action automatically works around cargo#8603 / actions/cache#403 which would otherwise corrupt the cache on macOS builds.
./target/debug/
, so projects using release or cross-compiled builds will experience larger cache sizes.Download Details:
Author: rustsec
Source Code: https://github.com/rustsec/rust-cache
License: LGPL-3.0 license
#rust #rustlang #staticanalysis #typescript
1643176207
Serde
*Serde is a framework for serializing and deserializing Rust data structures efficiently and generically.*
You may be looking for:
#[derive(Serialize, Deserialize)]
Click to show Cargo.toml. Run this code in the playground.
[dependencies]
# The core APIs, including the Serialize and Deserialize traits. Always
# required when using Serde. The "derive" feature is only required when
# using #[derive(Serialize, Deserialize)] to make Serde work with structs
# and enums defined in your crate.
serde = { version = "1.0", features = ["derive"] }
# Each data format lives in its own crate; the sample code below uses JSON
# but you may be using a different one.
serde_json = "1.0"
use serde::{Serialize, Deserialize};
#[derive(Serialize, Deserialize, Debug)]
struct Point {
x: i32,
y: i32,
}
fn main() {
let point = Point { x: 1, y: 2 };
// Convert the Point to a JSON string.
let serialized = serde_json::to_string(&point).unwrap();
// Prints serialized = {"x":1,"y":2}
println!("serialized = {}", serialized);
// Convert the JSON string back to a Point.
let deserialized: Point = serde_json::from_str(&serialized).unwrap();
// Prints deserialized = Point { x: 1, y: 2 }
println!("deserialized = {:?}", deserialized);
}
Serde is one of the most widely used Rust libraries so any place that Rustaceans congregate will be able to help you out. For chat, consider trying the #rust-questions or #rust-beginners channels of the unofficial community Discord (invite: https://discord.gg/rust-lang-community), the #rust-usage or #beginners channels of the official Rust Project Discord (invite: https://discord.gg/rust-lang), or the #general stream in Zulip. For asynchronous, consider the [rust] tag on StackOverflow, the /r/rust subreddit which has a pinned weekly easy questions post, or the Rust Discourse forum. It's acceptable to file a support issue in this repo but they tend not to get as many eyes as any of the above and may get closed without a response after some time.
Download Details:
Author: serde-rs
Source Code: https://github.com/serde-rs/serde
License: View license
1658013540
Rust Cache Action
A GitHub Action that implements smart caching for rust/cargo projects with sensible defaults.
- uses: actions/checkout@v2 # selecting a toolchain either by action or manual `rustup` calls should happen # before the plugin, as it uses the current rustc version as its cache key - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: Swatinem/rust-cache@v1
: key
An optional key that is added to the automatic cache key.
: sharedKey
An additional key that is stable over multiple jobs.
: working-directory
The working directory the action operates in, is case the cargo project is not located in the repo root.
: target-dir
The target directory that should be cleaned and persisted, defaults to ./target
.
: cache-on-failure
Cache even if the build fails, defaults to false
: cache-hit
This is a boolean flag that will be set to true
when there was an exact cache hit.
This action only caches the dependencies of a crate, so is more effective if the dependency / own code ratio is higher.
It is also most effective for repositories with a Cargo.lock
file. Library repositories with only a Cargo.toml
file have limited benefits, as cargo will always use the most up-to-date dependency versions, which may not be cached.
Usage with Stable Rust is most effective, as a cache is tied to the Rust version. Using it with Nightly Rust is less effective as it will throw away the cache every day.
I use the v1
branch similar to master
development, so if you want to have a more stable experience, please use a fixed revision or tag.
This action currently caches the following files/directories:
~/.cargo/bin
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git
~/.cargo/.crates.toml
~/.cargo/.crates2.json
./target
This cache is automatically keyed by:
job_id
,Cargo.lock
/ Cargo.toml
files found anywhere in the repository (if present).rust-toolchain
/ rust-toolchain.toml
files in the root of the repository (if present).An additional input key
can be provided if the builtin keys are not sufficient.
Before being persisted, the cache is cleaned of:
~/.cargo/bin
that were present before the action ran (for example rustc
).mtime
older than one week.In particular, the workspace crates themselves are not cached since doing so is generally not effective. For this reason, this action automatically sets CARGO_INCREMENTAL=0
to disable incremental compilation, so that the Rust compiler doesn't waste time creating the additional artifacts required for incremental builds.
The ~/.cargo/registry/src
directory is not cached since it is quicker for Cargo to recreate it from the compressed crate archives in ~/.cargo/registry/cache
.
The action will try to restore from a previous Cargo.lock
version as well, so lockfile updates should only re-build changed dependencies.
Additionally, the action automatically works around cargo#8603 / actions/cache#403 which would otherwise corrupt the cache on macOS builds.
./target/debug/
, so projects using release or cross-compiled builds will experience larger cache sizes.Download Details:
Author: rustsec
Source Code: https://github.com/rustsec/rust-cache
License: LGPL-3.0 license
#rust #rustlang #staticanalysis #typescript
1624347085
In this blog, we are going to learn how to create our own custom GitHub action using javaScript.
Automate, customize, and execute your software development workflows right in your repository with GitHub Actions. You can discover, create, and share actions to perform any job you’d like, including CI/CD, and combine actions in a completely customized workflow.
There are three types of actions: Docker container actions, JavaScript actions, and composite run steps actions.
Let’s create a Custom GitHub Action using JavaScript by creating a public repo, once the repo is created, we can clone it to our local machine using VS Code or GitPod. You need to have Node.js 12.x or higher and npm installed on your machine to perform the steps described here. You can verify the node and npm versions with the following commands in a VS Code or GitPod terminal.
node --version
npm --version
#github #github-tutorial #github-actions #github-trend
1617437520
I recently deployed my portfolio site and wanted to try out github actions and this is my experience of automating the deployment.
This article is more focused on how you can use the GitHub actions and how easy it is to deploy your code to GitHub pages rather than the portfolio site code.So every time you make an update or build to your website ,the changes are automatically reflected and this automated deploying process makes work much faster.
The way GitHub action works is you create actions in your repositories by creating one or more yaml files and these are called workflows.Workflows now can handle build tasks like CI CD. This means you use the action to test your code and push the site to the desired hosting platform (in this case GitHub pages ) when the main branch changes .
First step assuming that you have a GitHub account is to create a repository having your website code in it.Now I have a bootstrap website but in the future I do plan on adding node JS so I already added package.json.
#workflow #portfolio #github #github-actions #github-pages
1603861600
If you have project code hosted on GitHub, chances are you might be interested in checking some numbers and stats such as stars, commits and pull requests.
You might also want to compare some similar projects in terms of the above mentioned stats, for whatever reasons that interest you.
We have the right tool for you: the simple and easy-to-use little tool called GitHub Stats.
Let’s dive right in to what we can get out of it.
This interactive tool is really easy to use. Follow the three steps below and you’ll get what you want in real-time:
1. Head to the GitHub repo of the tool
2. Enter as many projects as you need to check on
3. Hit the Update button beside each metric
In this article we are going to compare three most popular machine learning projects for you.
#github #tools #github-statistics-react #github-stats-tool #compare-github-projects #github-projects #software-development #programming