Skip to content

Commit

Permalink
Setup confer-head prereleases
Browse files Browse the repository at this point in the history
  • Loading branch information
tchoutri committed Jun 24, 2024
1 parent 9c76b58 commit 84739a4
Show file tree
Hide file tree
Showing 8 changed files with 133 additions and 37 deletions.
107 changes: 102 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ on:
jobs:
generate-matrix:
name: "Generate matrix from cabal"
outputs:
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
runs-on: ubuntu-latest
steps:
Expand All @@ -35,7 +35,7 @@ jobs:
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: 'latest'
cabal-version: "latest"
- name: Configure
run: cabal configure --enable-tests
- name: Freeze
Expand All @@ -44,9 +44,106 @@ jobs:
uses: actions/[email protected]
with:
path: ${{ steps.setup-haskell.outputs.cabal-store }}
key: ${{ runner.os }}-ghc-${{ matrix.ghc }}-cabal-${{ hashFiles('**/plan.json') }}
key: ${{ runner.os }}-ghc-${{ matrix.ghc }}-cabal-${{ hashFiles("**/plan.json") }}
restore-keys: ${{ runner.os }}-ghc-${{ matrix.ghc }}-
- name: Build
run: cabal new-build
run: cabal build
- name: Test
run: cabal new-test all
run: cabal test all
- name: Package the confer-head executable
run: |
CONFER_EXE=$(cabal list-bin --builddir=dist-newstyle-pre-release --project-file=cabal.release.project confer:exe:confer)
DIR=$(dirname "$CONFER_EXEC")
FILE=$(basename "$CONFER_EXEC")
CONFER="confer-head-${{ runner.os }}-x86_64.tar.gz"
tar -czvf "$CONFER_EXEC_TAR" -C "$DIR" "$FILE"
echo "CONFER_EXEC_TAR=$CONFER_EXEC_TAR" >> "$GITHUB_ENV"
- name: Upload the confer-head executable
uses: actions/upload-artifact@v3
with:
name: confer-${{ runner.os }}-x86_64
path: ${{ env.CONFER_EXEC_TAR }}

build-alpine:
name: Build statically linked using alpine
runs-on: ubuntu-latest
container: "alpine:3.19"
needs: ["generate-matrix", "test"]
strategy:
matrix: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }}
steps:
- name: Install extra dependencies
shell: sh
run: |
apk add bash curl sudo jq pkgconfig \
zlib-dev zlib-static binutils-gold curl \
gcc g++ gmp-dev libc-dev libffi-dev make \
musl-dev ncurses-dev perl tar xz
- uses: actions/checkout@v4

- uses: haskell-actions/setup@v2
id: setup-haskell
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: "latest"

- name: Configure
run: cabal configure --enable-tests

- name: Freeze
run: cabal freeze

- uses: actions/cache@v4
with:
path: ${{ steps.setup-haskell.outputs.cabal-store }}
key: ${{ runner.os }}-ghc-${{ matrix.ghc }}-cabal-${{ hashFiles("**/plan.json") }}
restore-keys: ${{ runner.os }}-ghc-${{ matrix.ghc }}-

- name: Enable statically linked executables
run: |
echo "executable-static: true" >> cabal.release.project
- name: Build
run: cabal build

- name: Tar cabal head executable
run: |
CONFER_EXE=$(cabal list-bin --builddir=dist-newstyle-pre-release --project-file=cabal.release.project confer:exe:confer)
DIR=$(dirname "$CONFER_EXEC")
FILE=$(basename "$CONFER_EXEC")
CONFER_EXEC_TAR="confer-head-${{ runner.os }}-static-x86_64.tar.gz"
tar -czvf "$CONFER_EXEC_TAR" -C "$DIR" "$FILE"
echo "CONFER_EXEC_TAR=$CONFER_EXEC_TAR" >> "$GITHUB_ENV"
- name: Upload confer executable to workflow artifacts
uses: actions/upload-artifact@v3
with:
name: cabal-${{ runner.os }}-static-x86_64
path: ${{ env.CONFER_EXEC_TAR }}

prerelease-head:
name: Create a GitHub prerelease with the binary artifacts
runs-on: ubuntu-latest
if: github.ref == "refs/heads/main"
needs: ["tests", "build-alpine"]

steps:
- uses: actions/download-artifact@v3
with:
name: confer-Linux-x86_64

- uses: actions/download-artifact@v3
with:
name: confer-Linux-static-x86_64

- name: Create GitHub prerelease
uses: marvinpinto/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
automatic_release_tag: confer-head
prerelease: true
title: confer-head
files: |
confer-head-Linux-x86_64.tar.gz
confer-head-Linux-static-x86_64.tar.gz
27 changes: 14 additions & 13 deletions .github/workflows/linting.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@ on:
push:
branches: ["main"]

# jobs:
# fourmolu:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
#
# - uses: fourmolu/fourmolu-action@v10
# with:
# pattern: |
# src/**/*.hs
# test/**/*.hs
#
jobs:
fourmolu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: fourmolu/fourmolu-action@v10
with:
pattern: |
app/**/*.hs
src/**/*.hs
test/**/*.hs
hlint:
runs-on: ubuntu-latest
steps:
Expand All @@ -30,5 +31,5 @@ on:
- name: 'Run HLint'
uses: haskell-actions/hlint-run@v2
with:
path: '["src/", "test/"]'
path: '["app/", "src/", "test/"]'
fail-on: warning
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ test: ## Run the test suite
@cabal test

lint: ## Run the code linter (HLint)
@find test src -name "*.hs" | xargs -P $(PROCS) -I {} hlint --refactor-options="-i" --refactor {}
@find app test src -name "*.hs" | xargs -P $(PROCS) -I {} hlint --refactor-options="-i" --refactor {}

style: ## Run the code styler (fourmolu and cabal-fmt)
@cabal-fmt -i *.cabal
Expand Down
4 changes: 2 additions & 2 deletions app/Main.hs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{-# LANGUAGE QuasiQuotes #-}


module Main where

Expand Down Expand Up @@ -96,4 +96,4 @@ withInfo :: Parser a -> String -> ParserInfo a
withInfo opts desc = info (helper <*> opts) $ progDesc desc

osPathOption :: ReadM OsPath
osPathOption = maybeReader (OsPath.encodeUtf)
osPathOption = maybeReader OsPath.encodeUtf
2 changes: 0 additions & 2 deletions cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ test-show-details: direct

documentation: True

optimization: 2

tests: True

-- package confer
Expand Down
13 changes: 13 additions & 0 deletions cabal.release.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import: cabal.project

optimization: 2

documentation: False

package *
ghc-options:
-flate-specialise -funbox-strict-fields
-finline-generics-aggressively -fexpose-all-unfoldings
-Werror=extended-warnings -fdicts-strict -fmax-worker-args=16
-fspec-constr-recursive=16 -funbox-strict-fields
-Wno-unused-packages -Werror=unused-imports
13 changes: 0 additions & 13 deletions confer.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ extra-doc-files:
data-dir: runtime/lua
tested-with: GHC ==9.8.2

flag release
description: Compile the project for release
default: False
manual: True

flag development
description: Compile the project for development
default: True
Expand Down Expand Up @@ -54,14 +49,6 @@ common ghc-options
-fhide-source-paths -Wno-unused-do-bind -fshow-hole-constraints
-Wno-unticked-promoted-constructors

if flag(release)
ghc-options:
-flate-specialise -funbox-strict-fields
-finline-generics-aggressively -fexpose-all-unfoldings
-Werror=extended-warnings -fdicts-strict -fmax-worker-args=16
-fspec-constr-recursive=16 -funbox-strict-fields
-Wno-unused-packages -Werror=unused-imports

if flag(development)
ghc-options: -finfo-table-map -Wno-unused-imports -Wno-unused-packages

Expand Down
2 changes: 1 addition & 1 deletion test/Confer/CLI/Cmd/CheckTest.hs
Original file line number Diff line number Diff line change
Expand Up @@ -87,5 +87,5 @@ testNonSymlink =
Temporary.withSystemTempFile "confer-test.ext" $ \filepath _ -> do
result <- Symlink.runSymlinkIO $ do
osFilepath <- liftIO $ OsPath.encodeFS filepath
Symlink.testSymlink osFilepath ([osp| lol |])
Symlink.testSymlink osFilepath [osp| lol |]
assertIsNotSymlink result

0 comments on commit 84739a4

Please sign in to comment.