babashka/.circleci/config.yml

341 lines
10 KiB
YAML
Raw Normal View History

2019-08-09 12:51:42 +00:00
# Clojure CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-clojure/ for more details
#
version: 2.1
jobs:
jvm:
2020-02-29 12:24:16 +00:00
docker:
2019-08-09 12:51:42 +00:00
# specify the version you desire here
2020-05-23 12:53:28 +00:00
- image: circleci/clojure:lein-2.9.1
2019-08-09 12:51:42 +00:00
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
2020-01-04 19:04:29 +00:00
BABASHKA_PLATFORM: linux # could be used in jar name
2020-04-05 21:51:26 +00:00
resource_class: large
2019-08-09 12:51:42 +00:00
steps:
- checkout
2019-08-17 10:42:20 +00:00
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
2019-08-09 12:51:42 +00:00
- restore_cache:
keys:
- v1-dependencies-{{ checksum "project.clj" }}-{{ checksum "deps.edn" }}
2019-08-09 12:51:42 +00:00
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: Install Clojure
command: |
wget -nc https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
- run:
name: Install lsof
command: |
sudo apt-get install lsof
2019-08-09 12:51:42 +00:00
- run:
name: Run JVM tests
command: |
2020-05-18 15:08:34 +00:00
export BABASHKA_FEATURE_JDBC=true
export BABASHKA_FEATURE_POSTGRESQL=true
2019-08-09 12:51:42 +00:00
script/test
2020-02-19 22:58:49 +00:00
script/run_lib_tests
2019-08-09 12:51:42 +00:00
# - run:
# name: Run as tools.deps dependency
# command: |
# .circleci/script/tools.deps
- run:
name: Run as lein command
command: |
.circleci/script/lein
2020-01-01 20:57:46 +00:00
- run:
name: Create uberjar
command: |
mkdir -p /tmp/release
2020-04-28 10:03:01 +00:00
script/uberjar
2020-01-01 20:57:46 +00:00
VERSION=$(cat resources/BABASHKA_VERSION)
2020-01-08 10:48:40 +00:00
cp target/babashka-$VERSION-standalone.jar /tmp/release/babashka-$VERSION-standalone.jar
2020-01-01 20:57:46 +00:00
- store_artifacts:
path: /tmp/release
destination: release
2019-08-09 12:51:42 +00:00
- save_cache:
paths:
- ~/.m2
key: v1-dependencies-{{ checksum "project.clj" }}-{{ checksum "deps.edn" }}
2019-08-09 12:51:42 +00:00
linux:
docker:
2020-05-23 12:53:28 +00:00
- image: circleci/clojure:lein-2.9.1
2019-08-09 12:51:42 +00:00
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
2020-05-23 12:53:28 +00:00
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-20.1.0
2019-08-09 12:51:42 +00:00
BABASHKA_PLATFORM: linux # used in release script
BABASHKA_TEST_ENV: native
2020-05-23 12:53:28 +00:00
BABASHKA_XMX: "-J-Xmx6500m"
2020-04-05 21:51:26 +00:00
resource_class: large
2020-02-23 21:05:00 +00:00
steps:
- checkout
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
- restore_cache:
keys:
- linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Clojure
command: |
wget https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
- run:
name: Install lsof
command: |
sudo apt-get install lsof
- run:
name: Install native dev tools
command: |
sudo apt-get update
sudo apt-get -y install gcc g++ zlib1g-dev
- run:
name: Download GraalVM
command: |
cd ~
2020-05-23 12:53:28 +00:00
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
2020-02-23 21:05:00 +00:00
fi
- run:
name: Build binary
command: |
2020-04-28 10:03:01 +00:00
script/uberjar
2020-02-23 21:05:00 +00:00
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
script/test
script/run_lib_tests
- run:
name: Release
command: |
.circleci/script/release
- save_cache:
paths:
- ~/.m2
2020-05-23 12:53:28 +00:00
- ~/graalvm-ce-java11-20.1.0
2020-02-23 21:05:00 +00:00
key: linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
- run:
name: Publish artifact link to Slack
command: |
./bb .circleci/script/publish_artifact.clj
linux-static:
docker:
2020-05-23 12:53:28 +00:00
- image: circleci/clojure:lein-2.9.1
2020-02-23 21:05:00 +00:00
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
2020-05-23 12:53:28 +00:00
GRAALVM_HOME: /home/circleci/graalvm-ce-java11-20.1.0
2020-02-23 21:05:00 +00:00
BABASHKA_PLATFORM: linux-static # used in release script
BABASHKA_TEST_ENV: native
2020-02-23 11:04:18 +00:00
BABASHKA_STATIC: true
2020-05-23 12:53:28 +00:00
BABASHKA_XMX: "-J-Xmx6500m"
2020-04-05 21:51:26 +00:00
resource_class: large
2019-08-09 12:51:42 +00:00
steps:
- checkout
2019-08-17 10:42:20 +00:00
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
2019-08-09 12:51:42 +00:00
- restore_cache:
keys:
- linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Clojure
command: |
wget https://download.clojure.org/install/linux-install-1.10.1.447.sh
chmod +x linux-install-1.10.1.447.sh
sudo ./linux-install-1.10.1.447.sh
- run:
name: Install lsof
command: |
sudo apt-get install lsof
2019-08-09 12:51:42 +00:00
- run:
name: Install native dev tools
command: |
sudo apt-get update
2019-11-20 20:34:31 +00:00
sudo apt-get -y install gcc g++ zlib1g-dev
2019-08-09 12:51:42 +00:00
- run:
name: Download GraalVM
command: |
cd ~
2020-05-23 12:53:28 +00:00
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-linux-amd64-20.1.0.tar.gz
2019-08-09 12:51:42 +00:00
fi
- run:
name: Build binary
command: |
2020-04-28 10:03:01 +00:00
script/uberjar
2019-08-09 12:51:42 +00:00
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
script/test
2020-01-07 08:33:37 +00:00
script/run_lib_tests
2019-08-09 12:51:42 +00:00
- run:
name: Release
command: |
.circleci/script/release
- save_cache:
paths:
- ~/.m2
2020-05-23 12:53:28 +00:00
- ~/graalvm-ce-java11-20.1.0
2019-08-09 12:51:42 +00:00
key: linux-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
2020-01-07 11:58:27 +00:00
- run:
name: Publish artifact link to Slack
command: |
2020-01-07 15:43:48 +00:00
./bb .circleci/script/publish_artifact.clj
2019-08-09 12:51:42 +00:00
mac:
macos:
2020-09-11 20:47:40 +00:00
xcode: "9.4.1"
2019-08-09 12:51:42 +00:00
environment:
2020-05-23 12:53:28 +00:00
GRAALVM_HOME: /Users/distiller/graalvm-ce-java11-20.1.0/Contents/Home
2019-08-09 12:51:42 +00:00
BABASHKA_PLATFORM: macos # used in release script
BABASHKA_TEST_ENV: native
2020-05-23 12:53:28 +00:00
BABASHKA_XMX: "-J-Xmx6500m"
2020-04-05 21:51:26 +00:00
resource_class: large
2019-08-09 12:51:42 +00:00
steps:
- checkout
2019-08-17 10:42:20 +00:00
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
2019-08-09 12:51:42 +00:00
- restore_cache:
keys:
- mac-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- run:
name: Install Clojure
command: |
2020-03-30 18:29:08 +00:00
script/install-clojure /usr/local
2019-08-09 12:51:42 +00:00
- run:
name: Install Leiningen
command: |
2020-03-30 18:29:08 +00:00
script/install-leiningen
2019-08-09 12:51:42 +00:00
- run:
name: Download GraalVM
command: |
cd ~
ls -la
2020-05-23 12:53:28 +00:00
if ! [ -d graalvm-ce-java11-20.1.0 ]; then
curl -O -sL https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-20.1.0/graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz
tar xzf graalvm-ce-java11-darwin-amd64-20.1.0.tar.gz
2019-08-09 12:51:42 +00:00
fi
- run:
name: Build binary
command: |
2020-05-23 12:53:28 +00:00
export PATH=$GRAALVM_HOME/bin:$PATH
2020-04-28 10:03:01 +00:00
script/uberjar
2019-08-09 12:51:42 +00:00
script/compile
no_output_timeout: 30m
- run:
name: Run tests
command: |
2020-05-23 12:53:28 +00:00
export PATH=$GRAALVM_HOME/bin:$PATH
2019-08-09 12:51:42 +00:00
script/test
2020-01-07 08:33:37 +00:00
script/run_lib_tests
2019-08-09 12:51:42 +00:00
- run:
name: Release
command: |
.circleci/script/release
- save_cache:
paths:
- ~/.m2
2020-05-23 12:53:28 +00:00
- ~/graalvm-ce-java11-20.1.0
2019-08-09 12:51:42 +00:00
key: mac-{{ checksum "project.clj" }}-{{ checksum ".circleci/config.yml" }}
- store_artifacts:
path: /tmp/release
destination: release
2020-01-07 11:58:27 +00:00
- run:
name: Publish artifact link to Slack
command: |
2020-01-07 15:43:48 +00:00
./bb .circleci/script/publish_artifact.clj
2019-08-09 12:51:42 +00:00
deploy:
2020-04-05 21:51:26 +00:00
resource_class: large
2019-08-09 12:51:42 +00:00
docker:
2020-05-23 12:53:28 +00:00
- image: circleci/clojure:lein-2.9.1
2019-08-09 12:51:42 +00:00
working_directory: ~/repo
environment:
LEIN_ROOT: "true"
steps:
- checkout
2019-08-17 10:42:20 +00:00
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
2019-08-09 12:51:42 +00:00
- restore_cache:
keys:
- v1-dependencies-{{ checksum "project.clj" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: .circleci/script/deploy
- save_cache:
paths:
- ~/.m2
key: v1-dependencies-{{ checksum "project.clj" }}
2020-02-09 21:55:12 +00:00
docker:
2020-04-05 21:51:26 +00:00
resource_class: large
2020-02-09 21:55:12 +00:00
docker:
- image: circleci/buildpack-deps:stretch
steps:
- checkout
2020-02-09 22:08:46 +00:00
- run:
name: "Pull Submodules"
command: |
git submodule init
git submodule update
2020-02-09 21:58:32 +00:00
- setup_remote_docker
2020-02-09 21:55:12 +00:00
- run:
name: Build Docker image
command: .circleci/script/docker
2019-08-09 12:51:42 +00:00
workflows:
version: 2
ci:
jobs:
- jvm
- linux
2020-02-23 21:05:00 +00:00
- linux-static
2019-08-09 12:51:42 +00:00
- mac
- deploy:
filters:
branches:
only: master
requires:
- jvm
- linux
2020-02-23 21:05:00 +00:00
- linux-static
2019-08-09 12:51:42 +00:00
- mac
2020-02-09 21:55:12 +00:00
- docker:
filters:
branches:
only: master
requires:
- jvm
- linux
2020-02-23 21:05:00 +00:00
- linux-static
2020-02-09 21:55:12 +00:00
- mac