Skip to content

Commit

Permalink
Update CircleCI build and bump version
Browse files Browse the repository at this point in the history
Automatically upload binaries to GitHub Releases
  • Loading branch information
christobias committed Feb 10, 2019
1 parent 116c79b commit 758c891
Show file tree
Hide file tree
Showing 3 changed files with 186 additions and 133 deletions.
231 changes: 142 additions & 89 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,113 +1,157 @@
common: &common
docker:
- image: ubuntu:16.04
commands:
get_tag:
description: "Get tag from current commit"
steps:
- run: |
echo 'export VERSION="$(git tag -l --points-at HEAD)"' >> $BASH_ENV
update:
description: "Update APT index"
steps:
- run: apt update
install_deps:
description: "Install Dependencies"
parameters:
extra:
description: "Extra Packages"
type: string
default: ""
steps:
- run: >
apt install -y
ca-certificates
build-essential
cmake
pkg-config
libtool
automake
git
curl
gperf
<< parameters.extra >>
build_toolchain:
description: "Build depends Toolchain"
parameters:
version:
description: "OS Version"
type: string
steps:
- restore_cache:
key: deps-<< parameters.version >>-{{ checksum "contrib/depends/packages/packages.mk" }}
- run: make toolchain-<< parameters.version >>
- save_cache:
key: deps-<< parameters.version >>-{{ checksum "contrib/depends/packages/packages.mk" }}
paths:
- "contrib/depends"
initialize_submodules:
description: "Initialize Submodules"
steps:
- run: git submodule init && git submodule update
package_xz:
description: "Package Binaries (xz)"
parameters:
version:
description: "OS Version"
type: string
steps:
- run: |
mkdir -p workspace
cd build/<< parameters.version >>/$CIRCLE_BRANCH/release/bin
tar cvJf unprll-$VERSION-<< parameters.version >>.tar.xz *
mv unprll-$VERSION-<< parameters.version >>.tar.xz ../../../../../workspace
- persist_to_workspace:
root: workspace
paths:
- "*.tar.xz"
- store_artifacts:
path: workspace
destination: << parameters.version >>
package_zip:
description: "Package Binaries (zip)"
parameters:
version:
description: "OS Version"
type: string
steps:
- run: |
mkdir -p workspace
zip -j unprll-$VERSION-<< parameters.version >>.zip build/<< parameters.version >>/$CIRCLE_BRANCH/release/bin/*
mv unprll-$VERSION-<< parameters.version >>.zip workspace
- persist_to_workspace:
root: workspace
paths:
- "*.zip"
- store_artifacts:
path: workspace
destination: << parameters.version >>

steps:
update: &update
run:
name: Update Index
command: apt update
install_deps: &install_deps
run:
name: Install Dependencies
command: apt install -y ca-certificates build-essential cmake pkg-config libtool automake git curl gperf gcc-aarch64-linux-gnu g++-aarch64-linux-gnu mingw-w64 zip
submodules: &submodules
run:
name: Initialize submodules
command: git submodule init && git submodule update
executors:
builder:
docker:
- image: ubuntu:16.04

version: 2
version: 2.1
jobs:
build_linux_x86_64:
<<: *common
executor: builder
steps:
- <<: *update
- <<: *install_deps
- update
- install_deps
- checkout
- <<: *submodules
- restore_cache:
key: deps-linux-x86_64-{{ checksum "contrib/depends/packages/packages.mk" }}
- run:
name: Compile depends environment
command: make toolchain-linux-x86_64
- save_cache:
key: deps-linux-x86_64-{{ checksum "contrib/depends/packages/packages.mk" }}
paths:
- "contrib/depends"
- initialize_submodules
- get_tag
- build_toolchain:
version: linux-x86_64
- run:
name: Build
command: make release-static-linux-x86_64
- run:
name: Package Binaries
command: |
tar cvJf unprll-linux-x86_64.tar.xz build/Linux-x86_64/$CIRCLE_BRANCH/release/bin/*
mkdir tmp
mv unprll-linux-x86_64.tar.xz tmp
cd tmp
sha256sum unprll-linux-x86_64.tar.xz > unprll-linux-x86_64.tar.xz.sha256
- store_artifacts:
path: tmp
destination: linux-x86_64
- package_xz:
version: linux-x86_64
build_windows_x86_64:
<<: *common
executor: builder
steps:
- <<: *update
- <<: *install_deps
- update
- install_deps:
extra: mingw-w64 zip
- checkout
- <<: *submodules
- restore_cache:
key: deps-windows-x86_64-{{ checksum "contrib/depends/packages/packages.mk" }}
- run:
name: Compile depends environment
command: make toolchain-windows-x86_64
- save_cache:
key: deps-windows-x86_64-{{ checksum "contrib/depends/packages/packages.mk" }}
paths:
- "contrib/depends"
- initialize_submodules
- get_tag
- build_toolchain:
version: windows-x86_64
- run:
name: Build
command: make release-static-win64
- run:
name: Package Binaries
command: |
zip unprll-windows-x86_64.zip build/Windows-x86_64/$CIRCLE_BRANCH/release/bin/*
mkdir tmp
mv unprll-windows-x86_64.zip tmp
cd tmp
sha256sum unprll-windows-x86_64.zip > unprll-windows-x86_64.zip.sha256
- store_artifacts:
path: tmp
destination: windows-x86_64
- package_zip:
version: windows-x86_64
build_linux_armv8:
<<: *common
executor: builder
steps:
- <<: *update
- <<: *install_deps
- update
- install_deps:
extra: gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- checkout
- <<: *submodules
- restore_cache:
key: deps-linux-armv8-{{ checksum "contrib/depends/packages/packages.mk" }}
- run:
name: Compile depends environment
command: make toolchain-linux-armv8
- save_cache:
key: deps-linux-armv8-{{ checksum "contrib/depends/packages/packages.mk" }}
paths:
- "contrib/depends"
- initialize_submodules
- get_tag
- build_toolchain:
version: linux-armv8
- run:
name: Build
command: make release-static-linux-armv8
- run:
name: Package Binaries
command: |
tar cvJf unprll-linux-armv8.tar.xz build/Linux-ARMv8/$CIRCLE_BRANCH/release/bin/*
mkdir tmp
mv unprll-linux-armv8.tar.xz tmp
cd tmp
sha256sum unprll-linux-armv8.tar.xz > unprll-linux-armv8.tar.xz.sha256
- store_artifacts:
path: tmp
destination: linux-armv8
- package_xz:
version: linux-armv8
deploy:
docker:
- image: cibuilds/github:0.10
steps:
- attach_workspace:
at: /tmp/artifacts
- run: >
ghr -draft
-t ${GITHUB_TOKEN}
-u ${CIRCLE_PROJECT_USERNAME}
-r ${CIRCLE_PROJECT_REPONAME}
-c ${CIRCLE_SHA1}
-b "$(sha256sum *)"
$(ls /tmp/artifacts | head -n1 | awk '{split($0,a,"-"); print a[2]}') /tmp/artifacts/
workflows:
version: 2
Expand All @@ -125,3 +169,12 @@ workflows:
filters:
branches:
only: /.+-v[0-9]\.[0-9]/
- hold:
type: approval
requires:
- build_linux_x86_64
- build_linux_armv8
- build_windows_x86_64
- deploy:
requires:
- hold
Loading

0 comments on commit 758c891

Please sign in to comment.