Skip to content

Setup confer-head prereleases #48

Setup confer-head prereleases

Setup confer-head prereleases #48

Workflow file for this run

name: CI
# Trigger the workflow on push or pull request, but only for the main branch
on:
pull_request:
push:
branches: ["main"]
jobs:
generate-matrix:
name: "Generate matrix from cabal"
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
runs-on: ubuntu-latest
steps:
- name: Extract the tested GHC versions
id: set-matrix
uses: kleidukos/[email protected]
with:
cabal-file: confer.cabal
ubuntu-version: "latest"
macos: "macos-13"
version: 0.1.7.0
tests:
name: ${{ matrix.ghc }} on ${{ matrix.os }}
needs: generate-matrix
runs-on: ${{ matrix.os }}
strategy:
matrix: ${{ fromJSON(needs.generate-matrix.outputs.matrix) }}
steps:
- name: Checkout base repo
uses: actions/checkout@v4
- name: Set up Haskell
id: setup-haskell
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: "latest"
- name: Configure
run: cabal configure --enable-tests
- name: Freeze
run: cabal freeze
- name: Cache
uses: actions/[email protected]
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: Build
run: cabal build
- name: Test
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"

Check failure on line 128 in .github/workflows/ci.yml

View workflow run for this annotation

GitHub Actions / CI

Invalid workflow file

The workflow is not valid. .github/workflows/ci.yml (Line: 128, Col: 9): Unexpected symbol: '"refs/heads/main"'. Located at position 15 within expression: 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