Skip to content

Commit 247e471

Browse files
authored
chore(sematic-release): Set up semantic-release with Hackage plugin (#43)
* add package json with release script * set yarn version * add .nvmrc file * update release workflow * add releaserc * requested changes * add requested changes to release workflow
1 parent 00a3c2e commit 247e471

File tree

9 files changed

+4243
-34
lines changed

9 files changed

+4243
-34
lines changed

.github/workflows/draft.yml

-21
This file was deleted.

.github/workflows/release.yml

+49-13
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,57 @@
55
name: Release
66

77
on:
8-
release:
9-
types:
10-
- published
8+
workflow_dispatch:
119

1210
concurrency:
13-
group: release-${{ github.ref }}
11+
group: release
1412
cancel-in-progress: true
1513

1614
jobs:
17-
cabal-upload:
18-
uses: stackbuilders/reusable-workflows/.github/workflows/cabal-upload.yml@main
19-
with:
20-
ghc_version: "8.10"
21-
cabal_version: "3.6"
22-
ignore_uploaded_package: true
23-
secrets:
24-
HACKAGE_USERNAME: ${{ secrets.HACKAGE_USERNAME }}
25-
HACKAGE_PASSWORD: ${{ secrets.HACKAGE_PASSWORD }}
15+
upload:
16+
runs-on: ubuntu-latest
17+
permissions:
18+
contents: write
19+
issues: write
20+
pull-requests: write
21+
id-token: write
22+
steps:
23+
- name: Checkout
24+
uses: actions/checkout@v3
25+
- name: Setup tooling
26+
uses: haskell/actions/setup@v2
27+
with:
28+
ghc-version: "8.10"
29+
cabal-version: "3.6"
30+
- name: Freeze dependencies
31+
run: cabal freeze
32+
- name: Cache dependencies
33+
uses: actions/cache@v3
34+
with:
35+
key: ${{ runner.os }}-${{ hashFiles('*.cabal', 'cabal.project.freeze') }}
36+
restore-keys: ${{ runner.os }}-
37+
path: |
38+
~/.cabal/packages
39+
~/.cabal/store
40+
dist-newstyle
41+
- name: Setup NodeJS
42+
uses: actions/setup-node@v4
43+
with:
44+
node-version-file: .nvmrc
45+
cache: yarn
46+
- name: Install packages
47+
command: yarn install --immutable
48+
- name: Publish package to Hackage
49+
command: yarn release
50+
env:
51+
HACKAGE_TOKEN: ${{ secrets.HACKAGE_API_KEY }}
52+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53+
- name: Generate documentation
54+
run: cabal v2-haddock --haddock-for-hackage --enable-documentation
55+
- name: Upload documentation to Hackage
56+
run: |
57+
cabal upload --publish \
58+
--username "${{ secrets.HACKAGE_USERNAME }}" \
59+
--password "${{ secrets.HACKAGE_PASSWORD }}" \
60+
--documentation \
61+
dist-newstyle/*-docs.tar.gz

.gitignore

+12
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,15 @@ cabal.project.local
2121
cabal.project.local~
2222
.HTF/
2323
.ghc.environment.*
24+
25+
# VSCode
26+
.vscode
27+
28+
# NodeJS
29+
node_modules/
30+
.yarn/*
31+
!.yarn/patches
32+
!.yarn/plugins
33+
!.yarn/releases
34+
!.yarn/sdks
35+
!.yarn/versions

.nvmrc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
21.6.2

.releaserc.json

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"$schema": "https://json.schemastore.org/semantic-release",
3+
"branches": ["main"],
4+
"plugins": [
5+
"@semantic-release/commit-analyzer",
6+
"@semantic-release/release-notes-generator",
7+
[
8+
"semantic-release-hackage",
9+
{
10+
"packageName": "atomic-write",
11+
"versionPrefix": "0."
12+
}
13+
],
14+
"@semantic-release/github"
15+
],
16+
"tagFormat": "v0.${version}"
17+
}

.yarn/releases/yarn-4.1.0.cjs

+893
Large diffs are not rendered by default.

.yarnrc.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
nodeLinker: node-modules
2+
3+
yarnPath: .yarn/releases/yarn-4.1.0.cjs

package.json

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "atomic-write",
3+
"version": "0.0.0",
4+
"description": "Writes files atomically in Haskell while preserving permissions",
5+
"repository": "[email protected]:stackbuilders/atomic-write.git",
6+
"author": "Stack Builders <[email protected]>",
7+
"license": "MIT",
8+
"engines": {
9+
"node": "21.6.2"
10+
},
11+
"scripts": {
12+
"release": "semantic-release"
13+
},
14+
"devDependencies": {
15+
"semantic-release": "^23.0.2",
16+
"semantic-release-hackage": "^1.0.0"
17+
},
18+
"packageManager": "[email protected]"
19+
}

0 commit comments

Comments
 (0)