From b1785da8d1e47c32bfcf24dee74f9daa56557da3 Mon Sep 17 00:00:00 2001 From: John Ky Date: Thu, 14 Feb 2019 22:12:40 +1100 Subject: [PATCH] Use CircleCI Orbs --- .circleci/config.yml | 199 +++++++------------------------------------ 1 file changed, 31 insertions(+), 168 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 4341eee..307d5f1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,176 +1,39 @@ -cabalbuild: &cabalbuild - working_directory: ~/project +version: 2.1 - steps: - - checkout +orbs: + haskell: haskell-works/haskell-build@1.4.3 + github: haskell-works/github-release@1.2.1 + hackage: haskell-works/hackage@1.0.0 - - run: - name: Add GHC tools to PATH - command: | - echo "HOME=$HOME" - echo "BASH_ENV=$BASH_ENV" - echo "PATH=$PATH" - echo 'export PATH="$PATH:/opt/ghc/bin/"' >> $BASH_ENV - - - run: - name: Copying scripts - command: | - mkdir -p ~/.local/bin - cp ./scripts/* ~/.local/bin - - - run: - name: GHC version - command: | - echo "$GHC" > ghc.version - date +%Y-%m > month.version - - - run: - name: Find all sub-projects - command: ./scripts/projects-summary > projects.summary - - ##### Building library - - restore_cache: - keys: - - cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--extra - - cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}-- - - cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "month.version"}} - - - run: - name: Building build dependencies - command: | - cabal new-update - cabal new-build --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j${CABAL_THREADS:-4} all - cabal new-build --enable-tests --enable-benchmarks --project-file="cabal.project" --dep -j${CABAL_THREADS:-4} all - - - save_cache: - key: cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}-- - paths: [~/.cabal/packages, ~/.cabal/store] - - - run: - name: Building project - command: | - cabal new-build --enable-tests --enable-benchmarks --project-file="cabal.project" -j${CABAL_THREADS:-4} all - - - save_cache: - key: cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "projects.summary" }}--extra - paths: [~/.cabal/packages, ~/.cabal/store] - - - save_cache: - key: cabal--{{ checksum "ghc.version" }}--{{ .Environment.CACHE_VERSION }}--{{ checksum "month.version"}} - paths: [~/.cabal/packages, ~/.cabal/store] - - - run: - name: Running tests - command: | - if grep '^test-suite' *.cabal > /dev/null; then - cabal new-test --enable-tests --project-file="cabal.project" -j${CABAL_THREADS:-4} all - else - echo Not tests to run - fi - -version: 2.0 -jobs: - ghc-8.6.3: - environment: - - GHC: "ghc8.6.3" - docker: - - image: quay.io/haskell_works/ghc-8.6.3:18.04_2018-12-23 - <<: *cabalbuild - - ghc-8.4.4: - environment: - - GHC: "ghc8.4.3" - docker: - - image: quay.io/haskell_works/ghc-8.4.4 - <<: *cabalbuild - - ghc-8.2.2: - environment: - - GHC: "ghc8.2.2" - docker: - - image: quay.io/haskell_works/ghc-8.2.2 - <<: *cabalbuild - - checked-builds: - docker: - - image: quay.io/haskell_works/ghc-8.4.4 - - steps: - - checkout - - - run: - name: Add GHC tools to PATH - command: | - echo "HOME=$HOME" - echo "BASH_ENV=$BASH_ENV" - echo "PATH=$PATH" - echo 'export PATH="$PATH:/opt/ghc/bin/"' >> $BASH_ENV - - - run: - name: Copying scripts - command: | - mkdir -p ~/.local/bin - cp ./scripts/* ~/.local/bin - - - deploy: - command: | - if [ "$CIRCLE_PROJECT_USERNAME" == "haskell-works" ]; then - if [[ "$CIRCLE_BRANCH" == master ]]; then - when tag autotag - elif [[ "$CIRCLE_TAG" =~ v.* ]]; then - publish - fi - fi - - release: - docker: - - image: quay.io/haskell_works/ghc-8.4.4 - - steps: - - checkout +workflows: + multiple-ghc-build: + jobs: + - haskell/build: + name: GHC 8.2.2 + executor: haskell/ghc-8_2_2 - - run: - name: Add GHC tools to PATH - command: | - echo "HOME=$HOME" - echo "BASH_ENV=$BASH_ENV" - echo "PATH=$PATH" - echo 'export PATH="$PATH:/opt/ghc/bin/"' >> $BASH_ENV + - haskell/build: + name: GHC 8.4.4 + executor: haskell/ghc-8_4_4 - - run: - name: Copying scripts - command: | - mkdir -p ~/.local/bin - cp ./scripts/* ~/.local/bin + - haskell/build: + name: GHC 8.6.3 + executor: haskell/ghc-8_6_3 - - deploy: - command: | - if [ "$CIRCLE_PROJECT_USERNAME" == "haskell-works" ]; then - if [[ "$CIRCLE_BRANCH" == master ]]; then - when tag autotag - elif [[ "$CIRCLE_TAG" =~ v.* ]]; then - publish - fi - fi - -workflows: - version: 2 - multiple-ghcs: - jobs: - - ghc-8.6.3 - - ghc-8.4.4 - - ghc-8.2.2 - - checked-builds: + - github/release-cabal: + name: GitHub Release requires: - - ghc-8.6.3 - - ghc-8.4.4 - - ghc-8.2.2 - - tagged-release: - jobs: - - release: + - GHC 8.2.2 + - GHC 8.4.4 + - GHC 8.6.3 + checkout: true filters: branches: - ignore: /.*/ - tags: - only: /^v.*/ + only: master + + - hackage/upload: + publish: true + requires: + - GitHub Release + username: ${HACKAGE_USER} + password: ${HACKAGE_PASS}