Skip to content

Commit d262960

Browse files
committed
chore(workflow): Add release workflow
1 parent 0b67539 commit d262960

File tree

8 files changed

+142
-23
lines changed

8 files changed

+142
-23
lines changed

.github/workflows/clojure.yml

Lines changed: 0 additions & 19 deletions
This file was deleted.

.github/workflows/release.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: Release
2+
3+
on:
4+
workflow_dispatch:
5+
6+
env:
7+
GIT_AUTHOR_NAME: eg-oss-ci
8+
GIT_AUTHOR_EMAIL: oss@expediagroup.com
9+
GIT_COMMITTER_NAME: eg-oss-ci
10+
GIT_COMMITTER_EMAIL: oss@expediagroup.com
11+
12+
jobs:
13+
release:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v2
17+
with:
18+
persist-credentials: false
19+
20+
- uses: actions/setup-java@v2
21+
with:
22+
distribution: "zulu"
23+
java-version: "17"
24+
25+
- uses: DeLaGuardo/setup-clojure@4.0
26+
with:
27+
cli: 1.10.3.1087
28+
github-token: ${{ secrets.GITHUB_TOKEN }}
29+
30+
- name: Import GPG key
31+
uses: crazy-max/ghaction-import-gpg@v4.1.0
32+
with:
33+
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
34+
passphrase: ${{ secrets.GPG_PRIVATE_KEY_PASSPHRASE }}
35+
git_user_signingkey: true
36+
git_commit_gpgsign: true
37+
38+
# Release the next version
39+
- name: Semantic Release
40+
id: semantic
41+
uses: cycjimmy/semantic-release-action@v2.7.0
42+
env:
43+
GITHUB_TOKEN: ${{ secrets.GH_PERSONAL_ACCESS_TOKEN }}
44+
with:
45+
semantic_version: 18.0.1
46+
extra_plugins: |
47+
@semantic-release/changelog@6.0.1
48+
@semantic-release/exec@6.0.3
49+
@semantic-release/github@8.0.2
50+
@semantic-release/git@10.0.1
51+
conventional-changelog-conventionalcommits@4.6.1

.github/workflows/test.yml

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
name: Test
2+
3+
on:
4+
pull_request:
5+
6+
jobs:
7+
parsec:
8+
runs-on: ubuntu-latest
9+
defaults:
10+
run:
11+
working-directory: ./packages/parsec
12+
steps:
13+
- uses: actions/checkout@v2
14+
15+
- uses: actions/setup-java@v2
16+
with:
17+
distribution: "zulu"
18+
java-version: "17"
19+
20+
- uses: DeLaGuardo/setup-clojure@4.0
21+
with:
22+
cli: 1.10.3.1087
23+
github-token: ${{ secrets.GITHUB_TOKEN }}
24+
25+
- name: Tests
26+
run: clojure -X:test
27+
28+
parsec-api:
29+
runs-on: ubuntu-latest
30+
defaults:
31+
run:
32+
working-directory: ./packages/parsec-api
33+
steps:
34+
- uses: actions/checkout@v2
35+
36+
- uses: actions/setup-java@v2
37+
with:
38+
distribution: "zulu"
39+
java-version: "17"
40+
41+
- uses: DeLaGuardo/setup-clojure@4.0
42+
with:
43+
cli: 1.10.3.1087
44+
github-token: ${{ secrets.GITHUB_TOKEN }}
45+
46+
- name: Tests
47+
run: clojure -X:test

.releaserc.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
branches:
2+
- main
3+
plugins:
4+
- - "@semantic-release/commit-analyzer"
5+
- preset: conventionalcommits
6+
7+
- - "@semantic-release/release-notes-generator"
8+
- preset: "conventionalcommits"
9+
10+
- - "@semantic-release/changelog"
11+
- changelogTitle: "# Changelog\n\nAll notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines."
12+
13+
- - "@semantic-release/exec"
14+
- prepareCmd: "echo ${nextRelease.version} > VERSION"
15+
16+
- - "@semantic-release/exec"
17+
- prepareCmd: |
18+
cd packages/parsec && clojure -T:build uber
19+
ls -lah target
20+
cd ../..
21+
cd packages/parsec-api && clojure -T:build uber
22+
ls -lah target
23+
24+
- - "@semantic-release/git"
25+
- message: "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
26+
assets:
27+
- CHANGELOG.md
28+
- packages/parsec/target/parsec-*-standalone.jar
29+
- packages/parsec-api/target/parsec-api-*-standalone.jar
30+
31+
- "@semantic-release/github"

VERSION

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1.0.0

packages/parsec-api/build.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
(:require [clojure.tools.build.api :as b]))
33

44
(def lib 'ExpediaGroup/parsec-api)
5-
(def version (format "2.0.%s" (b/git-count-revs nil)))
5+
(def version (slurp "../../VERSION"))
66
(def class-dir "target/classes")
77
(def basis (b/create-basis {:project "deps.edn"}))
88
(def jar-file (format "target/%s-%s.jar" (name lib) version))

packages/parsec/README.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1+
## Tests
12

3+
Run tests like this:
24

5+
```
6+
clojure -X:test
7+
```
38

49
## Source Jar
510

6-
The most common Clojure build creates a jar file containing Clojure source code. This is appropriate for use within other Clojure projects.
11+
The most common Clojure build creates a jar file containing Clojure source code. This is appropriate for use within other Clojure projects.
712

813
```
914
clojure -T:build clean

packages/parsec/build.clj

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
(:require [clojure.tools.build.api :as b]))
33

44
(def lib 'ExpediaGroup/parsec)
5-
(def version (format "2.0.%s" (b/git-count-revs nil)))
5+
(def version (slurp "../../VERSION"))
66
(def class-dir "target/classes")
77
(def basis (b/create-basis {:project "deps.edn"}))
88
(def jar-file (format "target/%s-%s.jar" (name lib) version))
@@ -36,4 +36,7 @@
3636
:class-dir class-dir})
3737
(b/uber {:class-dir class-dir
3838
:uber-file uber-file
39-
:basis basis}))
39+
:basis basis}))
40+
41+
(defn print-version [_]
42+
(println version))

0 commit comments

Comments
 (0)