Skip to content

Commit a1b43b4

Browse files
princemapleaxelson
andauthored
Add auto publish release with asset (#384)
* Add auto publish release with asset * set to draft * Lower version Co-authored-by: Jason Axelson <axelson@users.noreply.github.com> * Remove otp suffix it's automatically detected by the setup action from the otp version * build with all versions * add default build Co-authored-by: Jason Axelson <axelson@users.noreply.github.com>
1 parent 1626614 commit a1b43b4

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed

.github/workflows/release-asset.yml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
name: Elixir CI
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
jobs:
9+
release:
10+
name: Create draft release
11+
runs-on: ubuntu-latest
12+
outputs:
13+
upload_url: ${{steps.create_release.outputs.upload_url}}
14+
15+
steps:
16+
- name: Create Release
17+
id: create_release
18+
uses: actions/create-release@v1
19+
env:
20+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
21+
with:
22+
tag_name: ${{ github.ref }}
23+
release_name: Release ${{ github.ref }}
24+
draft: true
25+
prerelease: false
26+
27+
build:
28+
name: Build and publish release asset
29+
runs-on: ubuntu-latest
30+
needs: release
31+
32+
strategy:
33+
matrix:
34+
include:
35+
- elixir-version: '1.11'
36+
otp-version: '23.1'
37+
- elixir-version: '1.10.4'
38+
otp-version: '23.1'
39+
- elixir-version: '1.9'
40+
otp-version: '22.3'
41+
- elixir-version: '1.8.2'
42+
otp-version: '21.3'
43+
default: true
44+
45+
steps:
46+
- uses: actions/checkout@v2
47+
- name: Set up Elixir
48+
uses: actions/setup-elixir@v1
49+
with:
50+
elixir-version: ${{ matrix.elixir-version }}
51+
otp-version: ${{ matrix.otp-version }}
52+
53+
- name: Restore dependencies cache
54+
uses: actions/cache@v2
55+
with:
56+
path: deps
57+
key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
58+
restore-keys: ${{ runner.os }}-mix-
59+
60+
- name: Install dependencies
61+
run: mix deps.get
62+
63+
- name: Build release
64+
run: |
65+
mkdir ./release
66+
mix compile
67+
MIX_ENV=prod mix elixir_ls.release -o ./release
68+
zip -jr elixir-ls.zip ./release
69+
70+
- name: Upload Release Asset
71+
uses: actions/upload-release-asset@v1
72+
env:
73+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
74+
with:
75+
upload_url: ${{ needs.release.outputs.upload_url }}
76+
asset_path: ./elixir-ls.zip
77+
asset_name: elixir-ls-${{ matrix.elixir-version }}.zip
78+
asset_content_type: application/zip
79+
80+
- name: Upload Default Release Asset
81+
if: ${{ matrix.default == true }}
82+
uses: actions/upload-release-asset@v1
83+
env:
84+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
85+
with:
86+
upload_url: ${{ needs.release.outputs.upload_url }}
87+
asset_path: ./elixir-ls.zip
88+
asset_name: elixir-ls.zip
89+
asset_content_type: application/zip

0 commit comments

Comments
 (0)