Skip to content

First draft new GC feature. #228

First draft new GC feature.

First draft new GC feature. #228

Workflow file for this run

name: eucalypt build
on:
push:
pull_request:
workflow_dispatch:
inputs:
narrative:
description: 'Reason for build'
required: false
jobs:
check:
name: Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: check
test:
name: Test Suite
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v1
with:
path: ~/.cargo
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
${{ runner.os }}-cargo
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: test
fmt:
name: Rustfmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add rustfmt
- uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: rustup component add clippy
- uses: actions-rs/cargo@v1
with:
command: clippy
args: -- -D warnings
benchmark:
needs: [check, test, fmt, clippy]
runs-on: macos-latest
# if: ${{ github.event_name == 'pull_request' }}
# if: ${{ false }}
continue-on-error: true
steps:
- uses: actions/cache@v1
with:
path: ~/.cargo
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
${{ runner.os }}-cargo
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.base.sha }}
- run: |
cargo bench --bench alloc -- --save-baseline base
- uses: actions/checkout@v2
with:
clean: false
ref: ${{ github.event.pull_request.head.sha }}
- run: |
cargo bench --bench alloc -- --baseline base
- name: Save HTML report
uses: actions/upload-artifact@v2
with:
name: benchmark-report
path: |
target/criterion
release-candidate-linux:
needs: [check, test, fmt, clippy]
name: Release Linux
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- uses: actions/cache@v1
with:
path: ~/.cargo
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
${{ runner.os }}-cargo
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- uses: actions-rs/cargo@v1
with:
command: install
args: git-changelog
- name: build and install temporary eu
uses: actions-rs/cargo@v1
with:
command: install
args: --path .
- name: prepare build files for new version
run: |
export OSTYPE=$(uname)
export HOSTTYPE=$(uname -m)
eu -t build-meta > build-meta.yaml.new
mv -f build-meta.yaml.new build-meta.yaml
echo "TAG_NAME=$(eu -t version)" >> $GITHUB_ENV
- uses: actions-rs/cargo@v1
with:
command: test
args: --release
- uses: actions-rs/cargo@v1
with:
command: build
args: --all --release
- run: |
strip target/release/eu
mv target/release/eu target/release/eu_amd64
- name: run final test with release binary
run: |
target/release/eu_amd64 -v
target/release/eu_amd64 harness/test -T
- name: Ensure we have the latest tag
run: |
git fetch origin latest:latest
- name: Generate changelog
run: |
echo "$(git-changelog latest...)" > CHANGELOG.md
- name: Upload changelog
uses: actions/upload-artifact@v1
with:
name: CHANGELOG.md
path: CHANGELOG.md
- name: Upload binary
uses: actions/upload-artifact@v1
with:
name: eu_amd64
path: target/release/eu_amd64
release-candidate-macos:
needs: [check, test, fmt, clippy]
name: Release MacOS
runs-on: macos-latest
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v2
- uses: actions/cache@v1
with:
path: ~/.cargo
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}
${{ runner.os }}-cargo
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- name: Build and install temporary eu
uses: actions-rs/cargo@v1
with:
command: install
args: --path .
- name: Prepare build files for new version
run: |
export OSTYPE=$(uname)
export HOSTTYPE=$(uname -m)
eu -t build-meta > build-meta.yaml.new
mv -f build-meta.yaml.new build-meta.yaml
echo "TAG_NAME=$(eu -t version)" >> $GITHUB_ENV
- uses: actions-rs/cargo@v1
with:
command: test
args: --release
- uses: actions-rs/cargo@v1
with:
command: build
args: --all --release
- run: |
strip target/release/eu
mv target/release/eu target/release/eu_darwin
- name: Run final test with release binary
run: |
target/release/eu_darwin -v
target/release/eu_darwin harness/test -T
- name: Upload binary
uses: actions/upload-artifact@v1
with:
name: eu_darwin
path: target/release/eu_darwin
prepare-release:
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/master'
needs:
- release-candidate-linux
- release-candidate-macos
steps:
- uses: actions/download-artifact@v2
with:
name: eu_darwin
- uses: actions/download-artifact@v2
with:
name: eu_amd64
- uses: actions/download-artifact@v2
with:
name: CHANGELOG.md
- name: Prepare release packages
run: |
mkdir eucalypt-x86_64-linux
cp eu_amd64 eucalypt-x86_64-linux/eu
tar -cvzf eucalypt-x86_64-linux.tgz eucalypt-x86_64-linux
mkdir eucalypt-x86_64-osx
cp eu_darwin eucalypt-x86_64-osx/eu
tar -cvzf eucalypt-x86_64-osx.tgz eucalypt-x86_64-osx
- name: Query binary for version number
run: |
chmod +x eu_amd64
echo "RELEASE_VERSION=$(./eu_amd64 -e eu.build.version -x text)" >> $GITHUB_ENV
- name: Create release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.RELEASE_VERSION }}
draft: true
prerelease: false
body_path: CHANGELOG.md
files: |
eucalypt-x86_64-linux.tgz
eucalypt-x86_64-osx.tgz
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}