mirror of
https://github.com/rust-lang/mdBook
synced 2024-12-14 06:42:35 +00:00
Merge pull request #1071 from ehuss/github-actions
Switch to GitHub Actions.
This commit is contained in:
commit
2b649fe94f
11 changed files with 214 additions and 193 deletions
39
.github/workflows/deploy.yml
vendored
Normal file
39
.github/workflows/deploy.yml
vendored
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
name: Deploy
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [created]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
name: Deploy Release
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: Install hub
|
||||||
|
run: ci/install-hub.sh ${{ matrix.os }}
|
||||||
|
shell: bash
|
||||||
|
- name: Install Rustup
|
||||||
|
run: ci/install-rustup.sh stable
|
||||||
|
shell: bash
|
||||||
|
- name: Install Rust
|
||||||
|
run: ci/install-rust.sh stable
|
||||||
|
shell: bash
|
||||||
|
- name: Build and deploy artifacts
|
||||||
|
run: ci/make-release.sh ${{ matrix.os }}
|
||||||
|
shell: bash
|
||||||
|
pages:
|
||||||
|
name: GitHub Pages
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: Install Rust (rustup)
|
||||||
|
run: rustup update stable --no-self-update && rustup default stable
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
run: ci/deploy-gh-pages.sh
|
53
.github/workflows/main.yml
vendored
Normal file
53
.github/workflows/main.yml
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
name: CI
|
||||||
|
on:
|
||||||
|
# Only run when merging to master, or open/synchronize/reopen a PR.
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
name: Test
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
build: [stable, beta, nightly, macos, windows, msrv]
|
||||||
|
include:
|
||||||
|
- build: stable
|
||||||
|
os: ubuntu-latest
|
||||||
|
rust: stable
|
||||||
|
- build: beta
|
||||||
|
os: ubuntu-latest
|
||||||
|
rust: beta
|
||||||
|
- build: nightly
|
||||||
|
os: ubuntu-latest
|
||||||
|
rust: nightly
|
||||||
|
- build: macos
|
||||||
|
os: macos-latest
|
||||||
|
rust: stable
|
||||||
|
- build: windows
|
||||||
|
os: windows-latest
|
||||||
|
rust: stable
|
||||||
|
- build: msrv
|
||||||
|
os: ubuntu-latest
|
||||||
|
rust: 1.35.0
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: Install Rustup
|
||||||
|
run: bash ci/install-rustup.sh ${{ matrix.rust }}
|
||||||
|
- name: Install Rust
|
||||||
|
run: bash ci/install-rust.sh ${{ matrix.rust }}
|
||||||
|
- name: Build and run tests
|
||||||
|
run: cargo test
|
||||||
|
- name: Test no default
|
||||||
|
run: cargo test --no-default-features
|
||||||
|
|
||||||
|
rustfmt:
|
||||||
|
name: Rustfmt
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@master
|
||||||
|
- name: Install Rust
|
||||||
|
run: rustup update stable && rustup default stable && rustup component add rustfmt
|
||||||
|
- run: cargo fmt -- --check
|
82
.travis.yml
82
.travis.yml
|
@ -1,82 +0,0 @@
|
||||||
language: rust
|
|
||||||
|
|
||||||
cache:
|
|
||||||
directories:
|
|
||||||
- "$HOME/.cargo"
|
|
||||||
# - "$HOME/.cache/sccache"
|
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- CRATE_NAME=mdbook
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- rust: stable
|
|
||||||
env: TARGET=x86_64-unknown-linux-gnu
|
|
||||||
- rust: beta
|
|
||||||
env: TARGET=x86_64-unknown-linux-gnu
|
|
||||||
- rust: nightly
|
|
||||||
env: TARGET=x86_64-unknown-linux-gnu
|
|
||||||
- rust: 1.35.0 # Minimum required Rust version
|
|
||||||
env: TARGET=x86_64-unknown-linux-gnu
|
|
||||||
|
|
||||||
- rust: stable
|
|
||||||
os: osx
|
|
||||||
env: TARGET=x86_64-apple-darwin
|
|
||||||
|
|
||||||
before_install:
|
|
||||||
- |
|
|
||||||
# export RUSTC_WRAPPER=sccache;
|
|
||||||
cd "$(mktemp -d)";
|
|
||||||
case "$TRAVIS_OS_NAME" in
|
|
||||||
linux )
|
|
||||||
travis_retry curl -sSL 'https://github.com/mozilla/sccache/releases/download/0.2.9/sccache-0.2.9-x86_64-unknown-linux-musl.tar.gz' | tar -xzf - --strip-components=1 &&
|
|
||||||
sudo cp sccache /usr/local/bin/sccache;
|
|
||||||
;;
|
|
||||||
osx )
|
|
||||||
travis_retry curl -sSL 'https://github.com/mozilla/sccache/releases/download/0.2.9/sccache-0.2.9-x86_64-apple-darwin.tar.gz' | tar -xzf - --strip-components=1 &&
|
|
||||||
sudo cp sccache /usr/local/bin/sccache;
|
|
||||||
;;
|
|
||||||
* ) unset RUSTC_WRAPPER;;
|
|
||||||
esac;
|
|
||||||
cd "$TRAVIS_BUILD_DIR";
|
|
||||||
|
|
||||||
script:
|
|
||||||
- cargo test --all
|
|
||||||
- cargo test --all --no-default-features
|
|
||||||
- |
|
|
||||||
if [ "$TARGET" = x86_64-unknown-linux-gnu ] && [ "$TRAVIS_RUST_VERSION" = stable ]; then
|
|
||||||
rustup component add rustfmt && \
|
|
||||||
cargo fmt --all -- --check;
|
|
||||||
fi
|
|
||||||
|
|
||||||
before_deploy:
|
|
||||||
- cargo run -- build book-example
|
|
||||||
- sh ci/before_deploy.sh
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
- provider: releases
|
|
||||||
api_key: "$GITHUB_TOKEN"
|
|
||||||
file_glob: true
|
|
||||||
file: "$CRATE_NAME-$TRAVIS_TAG-$TARGET.*"
|
|
||||||
on:
|
|
||||||
condition: "$TRAVIS_RUST_VERSION = stable"
|
|
||||||
tags: true
|
|
||||||
skip_cleanup: true
|
|
||||||
- provider: pages
|
|
||||||
local_dir: book-example/book
|
|
||||||
skip_cleanup: true
|
|
||||||
github_token: "$GITHUB_TOKEN"
|
|
||||||
keep_history: false
|
|
||||||
on:
|
|
||||||
condition: $TRAVIS_OS_NAME = "linux" && $TRAVIS_RUST_VERSION = "stable"
|
|
||||||
tags: true
|
|
||||||
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /^v\d+\.\d+\.\d+.*$/
|
|
||||||
|
|
||||||
notifications:
|
|
||||||
email:
|
|
||||||
on_success: never
|
|
23
README.md
23
README.md
|
@ -1,25 +1,8 @@
|
||||||
# mdBook
|
# mdBook
|
||||||
|
|
||||||
<table>
|
[![Build Status](https://github.com/rust-lang-nursery/mdBook/workflows/CI/badge.svg)](https://github.com/rust-lang-nursery/mdBook/actions?workflow=CI)
|
||||||
<tr>
|
[![crates.io](https://img.shields.io/crates/v/mdbook.svg)](https://crates.io/crates/mdbook)
|
||||||
<td><strong>Linux / OS X</strong></td>
|
[![LICENSE](https://img.shields.io/github/license/rust-lang-nursery/mdBook.svg)](LICENSE)
|
||||||
<td>
|
|
||||||
<a href="https://travis-ci.com/rust-lang-nursery/mdBook"><img src="https://travis-ci.com/rust-lang-nursery/mdBook.svg?branch=master"></a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>Windows</strong></td>
|
|
||||||
<td>
|
|
||||||
<a href="https://ci.appveyor.com/project/rust-lang-libs/mdbook"><img src="https://ci.appveyor.com/api/projects/status/ysyke2rvo85sni55?svg=true"></a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2">
|
|
||||||
<a href="https://crates.io/crates/mdbook"><img src="https://img.shields.io/crates/v/mdbook.svg"></a>
|
|
||||||
<a href="LICENSE"><img src="https://img.shields.io/github/license/rust-lang-nursery/mdBook.svg"></a>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
mdBook is a utility to create modern online books from Markdown files.
|
mdBook is a utility to create modern online books from Markdown files.
|
||||||
|
|
||||||
|
|
59
appveyor.yml
59
appveyor.yml
|
@ -1,59 +0,0 @@
|
||||||
environment:
|
|
||||||
global:
|
|
||||||
PROJECT_NAME: mdBook
|
|
||||||
matrix:
|
|
||||||
# Stable channel
|
|
||||||
- TARGET: i686-pc-windows-msvc
|
|
||||||
RUST_CHANNEL: stable
|
|
||||||
- TARGET: x86_64-pc-windows-msvc
|
|
||||||
RUST_CHANNEL: stable
|
|
||||||
# Nightly channel
|
|
||||||
- TARGET: x86_64-pc-windows-msvc
|
|
||||||
RUST_CHANNEL: nightly
|
|
||||||
|
|
||||||
# Install Rust and Cargo
|
|
||||||
install:
|
|
||||||
# Since rust-lang-libs is currently sharing 1 builder, only run 1 job when a
|
|
||||||
# PR is opened. Merges to master or tags will run all jobs.
|
|
||||||
- ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -gt 0 -and ($env:TARGET -ne "x86_64-pc-windows-msvc" -or $env:RUST_CHANNEL -ne "stable") ) {Exit-AppveyorBuild}
|
|
||||||
- ps: >-
|
|
||||||
If ($Env:TARGET -eq 'x86_64-pc-windows-gnu') {
|
|
||||||
$Env:PATH += ';C:\msys64\mingw64\bin'
|
|
||||||
} ElseIf ($Env:TARGET -eq 'i686-pc-windows-gnu') {
|
|
||||||
$Env:PATH += ';C:\msys64\mingw32\bin'
|
|
||||||
}
|
|
||||||
- curl -sSf -o rustup-init.exe https://win.rustup.rs/
|
|
||||||
- rustup-init.exe -y --default-host %TARGET% --default-toolchain %RUST_CHANNEL%
|
|
||||||
- set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
|
|
||||||
- rustc -Vv
|
|
||||||
- cargo -V
|
|
||||||
|
|
||||||
build: false
|
|
||||||
|
|
||||||
# Equivalent to Travis' `script` phase
|
|
||||||
test_script:
|
|
||||||
- cargo test --all
|
|
||||||
- cargo test --all --no-default-features
|
|
||||||
|
|
||||||
before_deploy:
|
|
||||||
# Generate artifacts for release
|
|
||||||
- cargo rustc --bin mdbook --release -- -C lto
|
|
||||||
- mkdir staging
|
|
||||||
- copy target\release\mdbook.exe staging
|
|
||||||
- cd staging
|
|
||||||
- 7z a ../%PROJECT_NAME%-%APPVEYOR_REPO_TAG_NAME%-%TARGET%.zip *
|
|
||||||
- appveyor PushArtifact ../%PROJECT_NAME%-%APPVEYOR_REPO_TAG_NAME%-%TARGET%.zip
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
description: 'Windows release'
|
|
||||||
artifact: /.*\.zip/
|
|
||||||
auth_token: $(GITHUB_TOKEN)
|
|
||||||
provider: GitHub
|
|
||||||
on:
|
|
||||||
RUST_CHANNEL: stable
|
|
||||||
appveyor_repo_tag: true
|
|
||||||
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- master
|
|
||||||
- /^v\d+\.\d+\.\d+.*$/
|
|
|
@ -1,32 +0,0 @@
|
||||||
# This script takes care of building your crate and packaging it for release
|
|
||||||
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
main() {
|
|
||||||
local src=$(pwd) \
|
|
||||||
stage=
|
|
||||||
|
|
||||||
case $TRAVIS_OS_NAME in
|
|
||||||
linux)
|
|
||||||
stage=$(mktemp -d)
|
|
||||||
;;
|
|
||||||
osx)
|
|
||||||
stage=$(mktemp -d -t tmp)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# This will slow down the build, but is necessary to not run out of disk space
|
|
||||||
cargo clean
|
|
||||||
|
|
||||||
cargo rustc --bin mdbook --target $TARGET --release -- -C lto
|
|
||||||
|
|
||||||
cp target/$TARGET/release/mdbook $stage/
|
|
||||||
|
|
||||||
cd $stage
|
|
||||||
tar czf $src/$CRATE_NAME-$TRAVIS_TAG-$TARGET.tar.gz *
|
|
||||||
cd $src
|
|
||||||
|
|
||||||
rm -rf $stage
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
14
ci/deploy-gh-pages.sh
Executable file
14
ci/deploy-gh-pages.sh
Executable file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Updates gh-pages with latest docs.
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
cargo run -- build book-example
|
||||||
|
cd book-example/book
|
||||||
|
touch .nojekyll
|
||||||
|
git init
|
||||||
|
git config --local user.email ""
|
||||||
|
git config --local user.name "GitHub Deployer"
|
||||||
|
git add .
|
||||||
|
git commit -m "Deploy to gh-pages"
|
||||||
|
remote="https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
|
||||||
|
git push "$remote" HEAD:gh-pages --force
|
24
ci/install-hub.sh
Executable file
24
ci/install-hub.sh
Executable file
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Installs the `hub` executable into hub/bin
|
||||||
|
set -ex
|
||||||
|
case $1 in
|
||||||
|
ubuntu*)
|
||||||
|
curl -LsSf https://github.com/github/hub/releases/download/v2.12.8/hub-linux-amd64-2.12.8.tgz -o hub.tgz
|
||||||
|
mkdir hub
|
||||||
|
tar -xzvf hub.tgz --strip=1 -C hub
|
||||||
|
;;
|
||||||
|
macos*)
|
||||||
|
curl -LsSf https://github.com/github/hub/releases/download/v2.12.8/hub-darwin-amd64-2.12.8.tgz -o hub.tgz
|
||||||
|
mkdir hub
|
||||||
|
tar -xzvf hub.tgz --strip=1 -C hub
|
||||||
|
;;
|
||||||
|
windows*)
|
||||||
|
curl -LsSf https://github.com/github/hub/releases/download/v2.12.8/hub-windows-amd64-2.12.8.zip -o hub.zip
|
||||||
|
7z x hub.zip -ohub
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "OS should be first parameter, was: $1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "##[add-path]$PWD/hub/bin"
|
19
ci/install-rust.sh
Executable file
19
ci/install-rust.sh
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Install/update rust.
|
||||||
|
# The first argument should be the toolchain to install.
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "First parameter must be toolchain to install."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
TOOLCHAIN="$1"
|
||||||
|
|
||||||
|
rustup set profile minimal
|
||||||
|
rustup component remove --toolchain=$TOOLCHAIN rust-docs || echo "already removed"
|
||||||
|
rustup update $TOOLCHAIN
|
||||||
|
rustup default $TOOLCHAIN
|
||||||
|
rustup -V
|
||||||
|
rustc -Vv
|
||||||
|
cargo -V
|
26
ci/install-rustup.sh
Executable file
26
ci/install-rustup.sh
Executable file
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Install/update rustup.
|
||||||
|
# The first argument should be the toolchain to install.
|
||||||
|
#
|
||||||
|
# It is helpful to have this as a separate script due to some issues on
|
||||||
|
# Windows where immediately after `rustup self update`, rustup can fail with
|
||||||
|
# "Device or resource busy".
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
if [ -z "$1" ]
|
||||||
|
then
|
||||||
|
echo "First parameter must be toolchain to install."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
TOOLCHAIN="$1"
|
||||||
|
|
||||||
|
# Install/update rustup.
|
||||||
|
if command -v rustup
|
||||||
|
then
|
||||||
|
echo `command -v rustup` `rustup -V` already installed
|
||||||
|
rustup self update
|
||||||
|
else
|
||||||
|
# macOS currently does not have rust pre-installed.
|
||||||
|
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $TOOLCHAIN --profile=minimal
|
||||||
|
echo "##[add-path]$HOME/.cargo/bin"
|
||||||
|
fi
|
36
ci/make-release.sh
Executable file
36
ci/make-release.sh
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# Builds the release and creates an archive and optionally deploys to GitHub.
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
if [[ -z "$GITHUB_REF" ]]
|
||||||
|
then
|
||||||
|
echo "GITHUB_REF must be set"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# Strip mdbook-refs/tags/ from the start of the ref.
|
||||||
|
TAG=${GITHUB_REF#*/tags/}
|
||||||
|
|
||||||
|
host=$(rustc -Vv | grep ^host: | sed -e "s/host: //g")
|
||||||
|
cargo rustc --bin mdbook --release -- -C lto
|
||||||
|
cd target/release
|
||||||
|
case $1 in
|
||||||
|
ubuntu* | macos*)
|
||||||
|
asset="mdbook-$TAG-$host.tar.gz"
|
||||||
|
tar czf ../../$asset mdbook
|
||||||
|
;;
|
||||||
|
windows*)
|
||||||
|
asset="mdbook-$TAG-$host.zip"
|
||||||
|
7z a ../../$asset mdbook.exe
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "OS should be first parameter, was: $1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
cd ../..
|
||||||
|
|
||||||
|
if [[ -z "$GITHUB_TOKEN" ]]
|
||||||
|
then
|
||||||
|
echo "$GITHUB_TOKEN not set, skipping deploy."
|
||||||
|
else
|
||||||
|
hub release edit -m "" --attach $asset $TAG
|
||||||
|
fi
|
Loading…
Reference in a new issue