summaryrefslogtreecommitdiff
path: root/deps/irc-client/concourse/pipeline.yml
blob: b27ac41dc86296d71e23aea492f6e7197bb78a03 (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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
###############################################################################
## Tasks

x-generic-task: &generic-task
  platform: linux
  image_resource:
    type: docker-image
    source:
      repository: haskell
  inputs:
    - name: source-git

x-task-build-and-test: &task-build-and-test
  <<: *generic-task
  run:
    dir: source-git
    path: sh
    args:
      - -cxe
      - |
        export LANG=C.UTF-8
        stack="stack --no-terminal"

        if [ -f ../stackage-feed/item ]; then
          apt-get update && apt-get install -y jq
          resolver="$(jq -r .id < ../stackage-feed/item | cut -d/ -f4)"
          $stack init --resolver="$resolver" --force
        fi

        $stack setup --install-ghc
        $stack build

###############################################################################
## Pipeline

resource_types:
  - name: feed-resource
    type: docker-image
    source:
      repository: registry.barrucadu.dev/feed-resource
      username: registry
      password: ((docker-registry-password))

resources:
  - name: stackage-feed
    type: feed-resource
    source:
      uri: https://www.stackage.org/feed
  - name: irc-client-git
    type: git
    source:
      uri: https://github.com/barrucadu/irc-client.git
  - name: irc-client-cabal-git
    type: git
    source:
      uri: https://github.com/barrucadu/irc-client.git
      paths:
        - irc-client.cabal

jobs:
  - name: update-pipeline
    plan:
      - get: irc-client-git
        trigger: true
      - set_pipeline: irc-client
        file: irc-client-git/concourse/pipeline.yml

  - name: test-snapshot
    plan:
      - get: irc-client-git
        trigger: true
      - get: stackage-feed
        trigger: true
      - task: build-and-test
        input_mapping:
          source-git: irc-client-git
        config:
          <<: *task-build-and-test
          inputs:
            - name: stackage-feed
            - name: source-git

  - name: test
    plan:
      - get: irc-client-cabal-git
        trigger: true
      - task: build-and-test
        input_mapping:
          source-git: irc-client-cabal-git
        config:
          <<: *task-build-and-test

  - name: release
    plan:
      - get: irc-client-cabal-git
        trigger: true
        passed:
          - test
      - task: release
        input_mapping:
          source-git: irc-client-cabal-git
        config:
          <<: *generic-task
          params:
            HACKAGE_USERNAME: barrucadu
            HACKAGE_PASSWORD: ((hackage-password))
          run:
            dir: source-git
            path: sh
            args:
              - -cxe
              - |
                  ver=$(grep '^version:' irc-client.cabal | sed 's/^version: *//')

                  if curl -fs "http://hackage.haskell.org/package/irc-client-${ver}" >/dev/null; then
                    echo "version already exists on hackage" >&2
                    exit 0
                  fi

                  stack --no-terminal setup --install-ghc
                  echo n | stack --no-terminal upload .