mirror of
https://github.com/Mozilla-Actions/sccache-action.git
synced 2026-04-08 17:42:13 +08:00
123 lines
2.9 KiB
Markdown
123 lines
2.9 KiB
Markdown
# sccache-action
|
|
|
|
The [sccache](https://github.com/mozilla/sccache/
|
|
) action can be used in GitHub Actions workflows to integrate sccache into the build process. The sccache action is a step in a workflow that can be used to cache compilation results for subsequent builds, reducing the build time and speeding up the overall development process.
|
|
|
|
sccache can easily use GitHub actions cache with almost no configuration.
|
|
|
|
This action is available on:
|
|
https://github.com/marketplace/actions/sccache-action
|
|
|
|
## Usage
|
|
|
|
Just copy and paste the following in your GitHub action:
|
|
|
|
### Use the latest version of sccache if no version is specified
|
|
|
|
```
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.6
|
|
```
|
|
|
|
### Conditionally run cache and enable it
|
|
|
|
```
|
|
- name: Run sccache-cache only on non-release runs
|
|
if: github.event_name != 'release' && github.event_name != 'workflow_dispatch'
|
|
uses: mozilla-actions/sccache-action@v0.0.6
|
|
- name: Set Rust caching env vars only on non-release runs
|
|
if: github.event_name != 'release' && github.event_name != 'workflow_dispatch'
|
|
run: |
|
|
echo "SCCACHE_GHA_ENABLED=true" >> $GITHUB_ENV
|
|
echo "RUSTC_WRAPPER=sccache" >> $GITHUB_ENV
|
|
```
|
|
|
|
### Specify a given version of sccache
|
|
|
|
```
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.6
|
|
with:
|
|
version: "v0.7.4"
|
|
```
|
|
|
|
### To get the execution stats
|
|
|
|
Note that using the previous declaration will automatically create a
|
|
`Post Run sccache-cache` task.
|
|
|
|
```
|
|
- name: Run sccache stat for check
|
|
shell: bash
|
|
run: ${SCCACHE_PATH} --show-stats
|
|
```
|
|
|
|
### disable stats report
|
|
|
|
```
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.6
|
|
with:
|
|
disable_annotations: true
|
|
```
|
|
|
|
### Rust code
|
|
|
|
For Rust code, the following environment variables should be set:
|
|
|
|
```
|
|
env:
|
|
SCCACHE_GHA_ENABLED: "true"
|
|
RUSTC_WRAPPER: "sccache"
|
|
```
|
|
|
|
### C/C++ code
|
|
|
|
For C/C++ code, the following environment variables should be set:
|
|
|
|
```
|
|
env:
|
|
SCCACHE_GHA_ENABLED: "true"
|
|
```
|
|
|
|
With cmake, add the following argument:
|
|
|
|
```
|
|
-DCMAKE_C_COMPILER_LAUNCHER=sccache
|
|
-DCMAKE_CXX_COMPILER_LAUNCHER=sccache
|
|
```
|
|
|
|
With configure, call it with:
|
|
```
|
|
# With gcc
|
|
./configure CC="sccache gcc" CXX="sccache gcc"
|
|
# With clang
|
|
./configure CC="sccache clang" CXX="sccache clang"
|
|
```
|
|
|
|
## Using on GitHub Enterprise Server (GHES)
|
|
|
|
When using the action on GitHub Enterprise Server installations a valid GitHub.com token must be provided.
|
|
|
|
```
|
|
- name: Run sccache-cache
|
|
uses: mozilla-actions/sccache-action@v0.0.6
|
|
with:
|
|
token: ${{ secrets.MY_GITHUB_TOKEN }}
|
|
```
|
|
|
|
Note that using https://github.com/actions/create-github-app-token is a better option than storing a fixed token in the repo secrets.
|
|
|
|
## Prepare a new release
|
|
|
|
1. Update the example in README.md
|
|
1. Update version in `package.json`
|
|
1. Run `npm i --package-lock-only`
|
|
1. Commit and push the local changes
|
|
1. Tag a new release (vX.X.X)
|
|
1. Create a new release in github
|
|
|
|
## License
|
|
|
|
Apache-2.0 (just like sccache)
|