-
-
Notifications
You must be signed in to change notification settings - Fork 4
151 lines (150 loc) · 5.42 KB
/
release.yml
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
name: Release
run-name: ${{ inputs.version }}
on:
workflow_dispatch:
inputs:
version:
description: 'Version to release (e.g. v1.2.3, v1.2.3-pre.1)'
type: string
required: true
push:
branches:
- master
- feature/dockerfile
jobs:
Config:
runs-on: ubuntu-latest
# version (v1.2.3, v1.2.3-9-adfh), release-name (unstable, stable, v1.2.3)
outputs:
tagged-release: ${{ steps.provided.outputs.version && true }}
version: ${{ steps.provided.outputs.version || steps.derived.outputs.version }}
release-name: ${{ steps.provided.outputs.release-name || steps.derived.outputs.release-name }}
stable: ${{ steps.provided.outputs.stable }}
pre-release: ${{ steps.provided.outputs.pre-release || steps.derived.outputs.pre-release }}
steps:
- name: Check out repository code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Validate provided version
if: "${{ inputs.version != '' }}"
id: provided
run: |
if ! echo "${{ inputs.version }}" | grep -qE '^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+(-pre\.[[:digit:]]+)?$'; then
echo "::error::The supplied version (${{ inputs.version }}) is not a valid version string."
exit 1
fi
if echo "${{ inputs.version }}" | grep -qE '^v[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+-pre\.[[:digit:]]+$'; then
echo "pre-release=true" >> $GITHUB_OUTPUT
else
echo "pre-release=false" >> $GITHUB_OUTPUT
echo "stable=true" >> $GITHUB_OUTPUT
fi
echo "version=${{ inputs.version }}" >> $GITHUB_OUTPUT
echo "release-name=${{ inputs.version }}" >> $GITHUB_OUTPUT
echo "release-sha=${{ github.sha }}" >> $GITHUB_OUTPUT
- name: Derive version
if: "${{ inputs.version == '' }}"
id: derived
run: |
echo "version=$(git describe --tags)" >> $GITHUB_OUTPUT
echo "release-name=unstable" >> $GITHUB_OUTPUT
echo "release-sha=${{ github.sha }}" >> $GITHUB_OUTPUT
echo "pre-release=true" >> $GITHUB_OUTPUT
Build:
needs: [Config]
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install clojure tools
uses: DeLaGuardo/setup-clojure@9.4
with:
bb: latest
- name: Update VERSION
run: echo "${{ needs.Config.outputs.version }}" > resources/VERSION
- name: Zip it
run: zip -r deps-try.zip . -x ".git/*"
- name: Build uberjar
run: bb uberjar deps-try-bb.jar -m eval.deps-try
- name: Testrun uberjar
run: bb deps-try-bb.jar -h
- name: Release stable
if: "${{ needs.Config.outputs.stable }}"
uses: softprops/action-gh-release@v1
with:
body: |
- version: ${{ needs.Config.outputs.version }}
- SHA: ${{ github.sha }}
- Run with babashka: `bb deps-try-bb.jar`
prerelease: false
name: stable
target_commitish: 55863dbc940e0741b9d9b3a1b11fdbadd08e8bb5 # first commit
tag_name: stable
files: |
deps-try-bb.jar
deps-try.zip
resources/VERSION
- name: Release unstable
if: ${{ always() }}
uses: softprops/action-gh-release@v1
with:
body: |
- version: ${{ needs.Config.outputs.version }}
- SHA: ${{ github.sha }}
- Run with babashka: `bb deps-try-bb.jar`
prerelease: true
name: unstable
target_commitish: 55863dbc940e0741b9d9b3a1b11fdbadd08e8bb5 # first commit
tag_name: unstable
files: |
deps-try-bb.jar
deps-try.zip
resources/VERSION
- name: Tagged release
if: "${{ needs.Config.outputs.tagged-release }}"
uses: softprops/action-gh-release@v1
with:
body: |
- version: ${{ needs.Config.outputs.version }}
- SHA: ${{ github.sha }}
- Run with babashka: `bb deps-try-bb.jar`
prerelease: ${{ needs.Config.outputs.pre-release }}
name: ${{ needs.Config.outputs.release-name }}
target_commitish: ${{ github.sha }}
tag_name: ${{ needs.Config.outputs.release-name }}
files: |
deps-try-bb.jar
deps-try.zip
resources/VERSION
Dockerize:
needs: [Config, Build]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Check out repository code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
with:
images: ghcr.io/eval/deps-try
- name: Build and push Docker image
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
with:
context: docker
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}