Refactor github actions (#1028)
This commit is contained in:
parent
ee04975b31
commit
c49d534a27
@ -1,2 +0,0 @@
|
|||||||
[target.aarch64-unknown-linux-gnu]
|
|
||||||
linker = "aarch64-linux-gnu-gcc"
|
|
175
.github/workflows/build.yaml
vendored
175
.github/workflows/build.yaml
vendored
@ -1,175 +0,0 @@
|
|||||||
name: Build
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
tags:
|
|
||||||
- '*'
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
all:
|
|
||||||
name: All
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
target:
|
|
||||||
- aarch64-unknown-linux-gnu
|
|
||||||
- x86_64-apple-darwin
|
|
||||||
- x86_64-pc-windows-msvc
|
|
||||||
- x86_64-unknown-linux-musl
|
|
||||||
include:
|
|
||||||
- target: x86_64-unknown-linux-musl
|
|
||||||
os: ubuntu-latest
|
|
||||||
native: true
|
|
||||||
- target: x86_64-apple-darwin
|
|
||||||
os: macos-latest
|
|
||||||
native: true
|
|
||||||
- target: x86_64-pc-windows-msvc
|
|
||||||
os: windows-2016
|
|
||||||
native: true
|
|
||||||
- target: aarch64-unknown-linux-gnu
|
|
||||||
os: ubuntu-latest
|
|
||||||
native: false
|
|
||||||
|
|
||||||
runs-on: ${{matrix.os}}
|
|
||||||
|
|
||||||
env:
|
|
||||||
RUSTFLAGS: --deny warnings
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Download actionlint
|
|
||||||
id: actionlint
|
|
||||||
run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
|
|
||||||
|
|
||||||
- name: Check Github Actions Workflow
|
|
||||||
env:
|
|
||||||
SHELLCHECK_OPTS: "-e SC2006 -e SC2002 -e SC2050"
|
|
||||||
run: ${{ steps.actionlint.outputs.executable }} -color
|
|
||||||
|
|
||||||
# An issue with BSD Tar causes sporadic failures on macOS.
|
|
||||||
# c.f https://github.com/actions/cache/issues/403
|
|
||||||
- name: Install GNU Tar
|
|
||||||
if: ${{ matrix.os == 'macos-latest' }}
|
|
||||||
run: |
|
|
||||||
brew install gnu-tar
|
|
||||||
echo /usr/local/opt/gnu-tar/libexec/gnubin > "$GITHUB_PATH"
|
|
||||||
|
|
||||||
- name: Cache Cargo
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
~/.cargo/registry
|
|
||||||
~/.cargo/git
|
|
||||||
target
|
|
||||||
key: ${{ matrix.os }}-${{ matrix.target }} cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
||||||
|
|
||||||
- name: Update Ubuntu Packages
|
|
||||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
|
|
||||||
- name: Install Rust Toolchain
|
|
||||||
run: |
|
|
||||||
rustup component add clippy rustfmt
|
|
||||||
rustup target add ${{ matrix.target }}
|
|
||||||
rustup default "`cat rust-toolchain`-${{ matrix.target }}"
|
|
||||||
|
|
||||||
- name: Install AArch64 Toolchain
|
|
||||||
if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }}
|
|
||||||
run: sudo apt-get install gcc-aarch64-linux-gnu
|
|
||||||
|
|
||||||
- name: Info
|
|
||||||
run: |
|
|
||||||
rustup --version
|
|
||||||
cargo --version
|
|
||||||
cargo clippy --version
|
|
||||||
|
|
||||||
- name: Check Lockfile
|
|
||||||
run: |
|
|
||||||
cargo update --locked --package just
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: cargo build --all --target ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
if: ${{ matrix.native }}
|
|
||||||
run: cargo test --all --target ${{ matrix.target }}
|
|
||||||
|
|
||||||
- name: Clippy
|
|
||||||
run: cargo clippy --all --all-targets --all-features
|
|
||||||
|
|
||||||
- name: Format
|
|
||||||
run: cargo fmt --all -- --check
|
|
||||||
|
|
||||||
- name: Completion Scripts
|
|
||||||
if: ${{ matrix.os != 'windows-2016' }}
|
|
||||||
run: |
|
|
||||||
./bin/generate-completions
|
|
||||||
git diff --no-ext-diff --quiet --exit-code
|
|
||||||
|
|
||||||
- name: Check for Forbidden Words
|
|
||||||
if: ${{ matrix.os == 'ubuntu-latest' }}
|
|
||||||
run: |
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install ripgrep
|
|
||||||
./bin/forbid
|
|
||||||
|
|
||||||
- name: Ref Type
|
|
||||||
id: ref-type
|
|
||||||
run: cargo run --package ref-type -- --reference ${{ github.ref }}
|
|
||||||
|
|
||||||
- name: Test Install Script With Explicit Target
|
|
||||||
if: ${{ matrix.os != 'windows-2016' && steps.ref-type.outputs.value != 'release' }}
|
|
||||||
run: |
|
|
||||||
cd "`mktemp -d`"
|
|
||||||
cat "$GITHUB_WORKSPACE/docs/install.sh" | bash -s -- --target ${{ matrix.target }} --to .
|
|
||||||
if [[ ${{ matrix.native }} == true ]]; then
|
|
||||||
./just --version
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Test Install Script Without Explicit Target
|
|
||||||
if: ${{ matrix.os != 'windows-2016' && steps.ref-type.outputs.value != 'release' }}
|
|
||||||
run: |
|
|
||||||
cd "`mktemp -d`"
|
|
||||||
cat "$GITHUB_WORKSPACE/docs/install.sh" | bash -s -- --to .
|
|
||||||
./just --version
|
|
||||||
|
|
||||||
- name: Package
|
|
||||||
id: package
|
|
||||||
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
|
||||||
run: ./bin/package ${{github.ref}} ${{matrix.os}} ${{ matrix.target }}
|
|
||||||
shell: bash
|
|
||||||
|
|
||||||
- name: Publish Archive
|
|
||||||
uses: softprops/action-gh-release@v0.1.5
|
|
||||||
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
|
||||||
with:
|
|
||||||
draft: false
|
|
||||||
files: ${{ steps.package.outputs.archive }}
|
|
||||||
prerelease: ${{ steps.ref-type.outputs.value != 'release' }}
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Publish Changelog
|
|
||||||
uses: softprops/action-gh-release@v0.1.5
|
|
||||||
if: >-
|
|
||||||
${{
|
|
||||||
startsWith(github.ref, 'refs/tags/')
|
|
||||||
&& matrix.target == 'x86_64-unknown-linux-musl'
|
|
||||||
}}
|
|
||||||
with:
|
|
||||||
draft: false
|
|
||||||
files: CHANGELOG.md
|
|
||||||
prerelease: ${{ steps.ref-type.outputs.value != 'release' }}
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
112
.github/workflows/release.yaml
vendored
Normal file
112
.github/workflows/release.yaml
vendored
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
name: Release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
tags:
|
||||||
|
- '*'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
all:
|
||||||
|
name: All
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
target:
|
||||||
|
- aarch64-unknown-linux-gnu
|
||||||
|
- armv7-unknown-linux-gnueabihf
|
||||||
|
- x86_64-apple-darwin
|
||||||
|
- x86_64-pc-windows-msvc
|
||||||
|
- x86_64-unknown-linux-musl
|
||||||
|
include:
|
||||||
|
- target: aarch64-unknown-linux-gnu
|
||||||
|
os: ubuntu-latest
|
||||||
|
native: false
|
||||||
|
target_rustflags: '--codegen linker=aarch64-linux-gnu-gcc'
|
||||||
|
- target: armv7-unknown-linux-gnueabihf
|
||||||
|
os: ubuntu-latest
|
||||||
|
native: false
|
||||||
|
target_rustflags: '--codegen linker=arm-linux-gnueabihf-gcc'
|
||||||
|
- target: x86_64-apple-darwin
|
||||||
|
os: macos-latest
|
||||||
|
native: true
|
||||||
|
target_rustflags: ''
|
||||||
|
- target: x86_64-pc-windows-msvc
|
||||||
|
os: windows-2016
|
||||||
|
native: true
|
||||||
|
target_rustflags: ''
|
||||||
|
- target: x86_64-unknown-linux-musl
|
||||||
|
os: ubuntu-latest
|
||||||
|
native: true
|
||||||
|
target_rustflags: ''
|
||||||
|
|
||||||
|
runs-on: ${{matrix.os}}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust Toolchain Components
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
override: true
|
||||||
|
target: ${{ matrix.target }}
|
||||||
|
toolchain: stable
|
||||||
|
|
||||||
|
- name: Install AArch64 Toolchain
|
||||||
|
if: ${{ matrix.target == 'aarch64-unknown-linux-gnu' }}
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install gcc-aarch64-linux-gnu
|
||||||
|
|
||||||
|
- name: Install ARM7 Toolchain
|
||||||
|
if: ${{ matrix.target == 'armv7-unknown-linux-gnueabihf' }}
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install gcc-arm-linux-gnueabihf
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
if: matrix.native
|
||||||
|
run: cargo test --all --target ${{ matrix.target }}
|
||||||
|
|
||||||
|
- name: Ref Type
|
||||||
|
id: ref-type
|
||||||
|
run: cargo run --package ref-type -- --reference ${{ github.ref }}
|
||||||
|
|
||||||
|
- name: Package
|
||||||
|
id: package
|
||||||
|
env:
|
||||||
|
TARGET: ${{ matrix.target }}
|
||||||
|
REF: ${{ github.ref }}
|
||||||
|
OS: ${{ matrix.os }}
|
||||||
|
TARGET_RUSTFLAGS: ${{ matrix.target_rustflags }}
|
||||||
|
run: ./bin/package
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
- name: Publish Archive
|
||||||
|
uses: softprops/action-gh-release@v0.1.5
|
||||||
|
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
||||||
|
with:
|
||||||
|
draft: false
|
||||||
|
files: ${{ steps.package.outputs.archive }}
|
||||||
|
prerelease: ${{ steps.ref-type.outputs.value != 'release' }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Publish Changelog
|
||||||
|
uses: softprops/action-gh-release@v0.1.5
|
||||||
|
if: >-
|
||||||
|
${{
|
||||||
|
startsWith(github.ref, 'refs/tags/')
|
||||||
|
&& matrix.target == 'x86_64-unknown-linux-musl'
|
||||||
|
}}
|
||||||
|
with:
|
||||||
|
draft: false
|
||||||
|
files: CHANGELOG.md
|
||||||
|
prerelease: ${{ steps.ref-type.outputs.value != 'release' }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
61
.github/workflows/test.yaml
vendored
Normal file
61
.github/workflows/test.yaml
vendored
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
name: Test
|
||||||
|
|
||||||
|
on: pull_request
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: bash
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
all:
|
||||||
|
name: All
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
- macos-latest
|
||||||
|
- windows-2016
|
||||||
|
|
||||||
|
runs-on: ${{matrix.os}}
|
||||||
|
|
||||||
|
env:
|
||||||
|
RUSTFLAGS: --deny warnings
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Install Rust Toolchain Components
|
||||||
|
uses: actions-rs/toolchain@v1
|
||||||
|
with:
|
||||||
|
components: clippy, rustfmt
|
||||||
|
override: true
|
||||||
|
toolchain: 1.47.0
|
||||||
|
|
||||||
|
- uses: Swatinem/rust-cache@v1
|
||||||
|
|
||||||
|
- name: Check Lockfile
|
||||||
|
run: |
|
||||||
|
cargo update --locked --package just
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: cargo test --all
|
||||||
|
|
||||||
|
- name: Clippy
|
||||||
|
run: cargo clippy --all --all-targets
|
||||||
|
|
||||||
|
- name: Format
|
||||||
|
run: cargo fmt --all -- --check
|
||||||
|
|
||||||
|
- name: Completion Scripts
|
||||||
|
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||||
|
run: |
|
||||||
|
./bin/generate-completions
|
||||||
|
git diff --no-ext-diff --quiet --exit-code
|
||||||
|
|
||||||
|
- name: Check for Forbidden Words
|
||||||
|
if: ${{ matrix.os == 'ubuntu-latest' }}
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install ripgrep
|
||||||
|
./bin/forbid
|
@ -1829,7 +1829,7 @@ Before merging a particularly large or gruesome change, Janus should be run to m
|
|||||||
|
|
||||||
=== Minimum Supported Rust Version
|
=== Minimum Supported Rust Version
|
||||||
|
|
||||||
The minimum supported Rust version, or MSRV, can be found in link:rust-toolchain[].
|
The minimum supported Rust version, or MSRV, is Rust 1.47.0.
|
||||||
|
|
||||||
== Frequently Asked Questions
|
== Frequently Asked Questions
|
||||||
|
|
||||||
|
43
bin/package
43
bin/package
@ -2,49 +2,46 @@
|
|||||||
|
|
||||||
set -euxo pipefail
|
set -euxo pipefail
|
||||||
|
|
||||||
version=${1#"refs/tags/"}
|
VERSION=${REF#"refs/tags/"}
|
||||||
os=$2
|
SRC=`pwd`
|
||||||
target=$3
|
DIST=$SRC/dist
|
||||||
src=`pwd`
|
|
||||||
dist=$src/dist
|
|
||||||
bin=just
|
|
||||||
|
|
||||||
echo "Packaging $bin $version for $target..."
|
echo "Packaging just $VERSION for $TARGET..."
|
||||||
|
|
||||||
test -f Cargo.lock || cargo generate-lockfile
|
test -f Cargo.lock || cargo generate-lockfile
|
||||||
|
|
||||||
echo "Building $bin..."
|
echo "Building just..."
|
||||||
RUSTFLAGS='--deny warnings --codegen target-feature=+crt-static' \
|
RUSTFLAGS="--deny warnings --codegen target-feature=+crt-static $TARGET_RUSTFLAGS" \
|
||||||
cargo build --bin $bin --target $target --release
|
cargo build --bin just --target $TARGET --release
|
||||||
executable=target/$target/release/$bin
|
EXECUTABLE=target/$TARGET/release/just
|
||||||
|
|
||||||
if [[ $os == windows-2016 ]]; then
|
if [[ $OS == windows-2016 ]]; then
|
||||||
executable=$executable.exe
|
EXECUTABLE=$EXECUTABLE.exe
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Copying release files..."
|
echo "Copying release files..."
|
||||||
mkdir dist
|
mkdir dist
|
||||||
cp \
|
cp \
|
||||||
$executable \
|
$EXECUTABLE \
|
||||||
Cargo.lock \
|
Cargo.lock \
|
||||||
Cargo.toml \
|
Cargo.toml \
|
||||||
GRAMMAR.md \
|
GRAMMAR.md \
|
||||||
LICENSE \
|
LICENSE \
|
||||||
README.adoc \
|
README.adoc \
|
||||||
man/just.1 \
|
man/just.1 \
|
||||||
$dist
|
$DIST
|
||||||
|
|
||||||
cd $dist
|
cd $DIST
|
||||||
echo "Creating release archive..."
|
echo "Creating release archive..."
|
||||||
case $os in
|
case $OS in
|
||||||
ubuntu-latest | macos-latest)
|
ubuntu-latest | macos-latest)
|
||||||
archive=$dist/$bin-$version-$target.tar.gz
|
ARCHIVE=$DIST/just-$VERSION-$TARGET.tar.gz
|
||||||
tar czf $archive *
|
tar czf $ARCHIVE *
|
||||||
echo "::set-output name=archive::$archive"
|
echo "::set-output name=archive::$ARCHIVE"
|
||||||
;;
|
;;
|
||||||
windows-2016)
|
windows-2016)
|
||||||
archive=$dist/$bin-$version-$target.zip
|
ARCHIVE=$DIST/just-$VERSION-$TARGET.zip
|
||||||
7z a $archive *
|
7z a $ARCHIVE *
|
||||||
echo "::set-output name=archive::`pwd -W`/$bin-$version-$target.zip"
|
echo "::set-output name=archive::`pwd -W`/just-$VERSION-$TARGET.zip"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -1 +0,0 @@
|
|||||||
1.47.0
|
|
Loading…
Reference in New Issue
Block a user