Skip to content
This repository has been archived by the owner on Aug 13, 2024. It is now read-only.

Commit

Permalink
More tweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
jbeemster committed Feb 7, 2021
1 parent fa28264 commit 59370d1
Show file tree
Hide file tree
Showing 4 changed files with 174 additions and 8 deletions.
104 changes: 104 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: cd

on:
push:
tags:
- '*'

jobs:
release-ubuntu:
name: Release
strategy:
matrix:
os: [ubuntu-20.04, ubuntu-18.04, ubuntu-16.04]
runs-on: ${{ matrix.os }}

steps:
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true

- name: Checkout code
uses: actions/checkout@v2

- name: Test
run: make test

- name: Extract tag version from ref
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}

- name: Build
run: make zip
env:
PLATFORM: ${{ matrix.os }}
BUILD_VERSION: ${{ steps.get_version.outputs.VERSION }}

- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false

- name: Upload release binaries
uses: alexellis/upload-assets@0.2.3
env:
GITHUB_TOKEN: ${{ github.token }}
with:
asset_paths: '["./build/compiled/*"]'

release-macos:
name: Release
strategy:
matrix:
os: [macos-10.15]
runs-on: ${{ matrix.os }}

steps:
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
target: x86_64-apple-darwin
default: true
override: true

- name: Checkout code
uses: actions/checkout@v2

- name: Test
run: make test

- name: Extract tag version from ref
id: get_version
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}

- name: Build
run: make zip
env:
PLATFORM: ${{ matrix.os }}
BUILD_VERSION: ${{ steps.get_version.outputs.VERSION }}

- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false

- name: Upload release binaries
uses: alexellis/upload-assets@0.2.3
env:
GITHUB_TOKEN: ${{ github.token }}
with:
asset_paths: '["./build/compiled/*"]'
16 changes: 8 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ jobs:
- name: Checkout code
uses: actions/checkout@v2

- name: Build
run: cargo build --verbose

- name: Test
run: cargo test --verbose
run: make test

- name: Build
run: make debug

- uses: Swatinem/rust-cache@v1

Expand All @@ -53,10 +53,10 @@ jobs:
- name: Checkout code
uses: actions/checkout@v2

- name: Build
run: cargo build --verbose

- name: Test
run: cargo test --verbose
run: make test

- name: Build
run: make debug

- uses: Swatinem/rust-cache@v1
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,5 @@ Cargo.lock
.factotum
.vagrant

# Project
build/
60 changes: 60 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
.PHONY: debug release zip test check-env clean

# -----------------------------------------------------------------------------
# CONSTANTS
# -----------------------------------------------------------------------------

version = $(shell cat Cargo.toml | grep "^version = \"" | sed -n 's/^.*version = "\(.*\)".*/\1/p' | xargs)

build_dir = build
target_dir = target
factotum_dir = .factotum

compiled_dir = $(build_dir)/compiled

# -----------------------------------------------------------------------------
# BUILDING
# -----------------------------------------------------------------------------

debug:
cargo build --verbose

release:
cargo build --verbose --release

zip: release check-env
ifeq ($(version),$(BUILD_VERSION))
mkdir -p $(compiled_dir)
(cd target/release && zip -r staging.zip factotum)
mv target/release/staging.zip $(compiled_dir)/factotum_$(version)_$(PLATFORM)_x86_64.zip
else
$(error BUILD_VERSION and Cargo.toml version do not match - cannot release)
endif

# -----------------------------------------------------------------------------
# TESTING
# -----------------------------------------------------------------------------

test:
cargo test --verbose

# -----------------------------------------------------------------------------
# HELPERS
# -----------------------------------------------------------------------------

check-env:
ifndef PLATFORM
$(error PLATFORM is undefined)
endif
ifndef BUILD_VERSION
$(error BUILD_VERSION is undefined)
endif

# -----------------------------------------------------------------------------
# CLEANUP
# -----------------------------------------------------------------------------

clean:
rm -rf $(build_dir)
rm -rf $(target_dir)
rm -rf $(factotum_dir)

0 comments on commit 59370d1

Please sign in to comment.