Skip to content

Commit 1879557

Browse files
authored
Create release.yml
1 parent 2ad6b13 commit 1879557

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

.github/workflows/release.yml

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
name: Release
2+
3+
on: workflow_dispatch
4+
5+
jobs:
6+
create_release:
7+
name: Create Github Release
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Check out code
11+
uses: actions/checkout@v2
12+
13+
- name: Create Release
14+
id: create_release
15+
uses: actions/[email protected]
16+
env:
17+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
18+
with:
19+
tag_name: ${{ github.ref }}
20+
release_name: Release ${{ github.ref }}
21+
draft: true
22+
prerelease: false
23+
24+
- name: Output Release URL File
25+
run: echo "${{ steps.create_release.outputs.upload_url }}" > release_url.txt
26+
- name: Save Release URL File for publish
27+
uses: actions/upload-artifact@v1
28+
with:
29+
name: release_url
30+
path: release_url.txt
31+
32+
build_artifact:
33+
needs: [create_release]
34+
name: ${{ matrix.os }}/GHC ${{ matrix.ghc }}/${{ github.ref }}
35+
runs-on: ${{ matrix.os }}
36+
strategy:
37+
matrix:
38+
os: [ubuntu-latest, macOS-latest, windows-latest]
39+
ghc:
40+
- "8.8.3"
41+
- "8.10.1"
42+
cabal: ["3.2"]
43+
exclude:
44+
- os: windows-latest
45+
ghc: 8.8.3
46+
47+
steps:
48+
- name: Check out code
49+
uses: actions/checkout@v2
50+
51+
- name: Setup Haskell
52+
uses: actions/[email protected]
53+
id: setup-haskell-cabal
54+
with:
55+
ghc-version: ${{ matrix.ghc }}
56+
cabal-version: ${{ matrix.cabal }}
57+
58+
- name: Freeze
59+
run: |
60+
cabal freeze
61+
62+
- name: Cache ~/.cabal/store
63+
uses: actions/cache@v1
64+
with:
65+
path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }}
66+
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }}
67+
68+
- name: Build binary
69+
run: |
70+
mkdir dist
71+
cabal install exe:indigo --install-method=copy --overwrite-policy=always --installdir=dist
72+
73+
- if: matrix.os == 'windows-latest'
74+
name: Set extension to .exe on Windows
75+
run: echo "::set-env name=EXT::.exe"
76+
77+
- name: Set binary path name
78+
run: echo "::set-env name=BINARY_PATH::./dist/indigo${{ env.EXT }}"
79+
80+
- name: Compress binary
81+
uses: svenstaro/[email protected]
82+
with:
83+
file: ${{ env.BINARY_PATH }}
84+
85+
- name: Load Release URL File from release job
86+
uses: actions/download-artifact@v1
87+
with:
88+
name: release_url
89+
90+
- name: Get Release File Name & Upload URL
91+
id: get_release_info
92+
run: |
93+
echo "::set-output name=upload_url::$(cat release_url/release_url.txt)"
94+
95+
- name: Upload Release Asset
96+
id: upload-release-asset
97+
uses: actions/[email protected]
98+
env:
99+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
100+
with:
101+
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
102+
asset_path: ${{ env.BINARY_PATH }}
103+
asset_name: indigo-HEAD-${{ runner.os }}-ghc-${{ matrix.ghc }}${{ env.EXT }}
104+
asset_content_type: application/octet-stream

0 commit comments

Comments
 (0)