summaryrefslogtreecommitdiffhomepage
path: root/.github/workflows/ci.yml
blob: 1aa23698e8aef5e5142ce39f8d43db5701dcfc8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
name: CI

on: ['pull_request', 'push']

jobs:
  build:
    name: Build on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, macOS-latest]
        stack: ["2.1.3"]
        ghc: ["8.8.3"]

    steps:
    - name: Get the version
      id: get_version
      run: 'echo ::set-output name=version::${GITHUB_REF#refs/tags/}'

    - uses: actions/checkout@v2

    - uses: actions/setup-haskell@v1.1.2
      name: Setup Haskell Stack
      with:
        ghc-version: ${{ matrix.ghc }}
        stack-version: ${{ matrix.stack }}

    - uses: actions/cache@v2
      name: Cache ~/.stack
      with:
        path: ~/.stack
        key: ${{ runner.os }}-${{ matrix.ghc }}-v3

    - name: Add ~/.local/bin to PATH
      run: echo "::add-path::$HOME/.local/bin"

    - name: Build
      run: make build
      id: build

    - name: Test
      run: make test

    - name: Build artifact
      if: startsWith(github.ref, 'refs/tags')
      run: make artifact
      env:
        PATAT_TAG: ${{ steps.get_version.outputs.version }}

    - uses: actions/upload-artifact@v2
      if: startsWith(github.ref, 'refs/tags')
      with:
        path: artifacts/*
        name: artifacts

  release:
    name: Release
    needs: build
    runs-on: ubuntu-latest
    if: startsWith(github.ref, 'refs/tags')

    steps:
    - name: Get the version
      id: get_version
      run: 'echo ::set-output name=version::${GITHUB_REF#refs/tags/}'

    - uses: actions/download-artifact@v2
      with:
        name: artifacts

    - name: Display structure of downloaded files
      run: ls -R

    - uses: actions/create-release@v1
      id: create_release
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        tag_name: ${{ steps.get_version.outputs.version }}
        release_name: ${{ steps.get_version.outputs.version }}

    - name: Upload Linux Asset
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: ./stylish-haskell-${{ steps.get_version.outputs.version }}-linux-x86_64.tar.gz
        asset_name: stylish-haskell-${{ steps.get_version.outputs.version }}-linux-x86_64.tar.gz
        asset_content_type: application/gzip

    - name: Upload MacOS Asset
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ steps.create_release.outputs.upload_url }}
        asset_path: ./stylish-haskell-${{ steps.get_version.outputs.version }}-darwin-x86_64.zip
        asset_name: stylish-haskell-${{ steps.get_version.outputs.version }}-darwin-x86_64.zip
        asset_content_type: application/zip