-
Notifications
You must be signed in to change notification settings - Fork 0
132 lines (113 loc) · 4.05 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
# https://sourcegraph.com/github.com/martinohmann/dts/-/blob/.github/workflows/release-please.yml
# https://sourcegraph.com/github.com/kabouzeid/turm/-/blob/.github/workflows/release.yml
# https://github.com/starship/starship/blob/master/.github/workflows/release.yml
name: release please
permissions:
contents: write
pull-requests: write
on:
workflow_dispatch:
inputs:
force-publish-crate:
required: true
type: boolean
description: Publish crate even if no new release was created.
force-publish-packages:
required: true
type: boolean
description: Publish packages even if no new release was created.
push:
branches:
- main
env:
CARGO_INCREMENTAL: 0
jobs:
release_please:
name: Release Please
runs-on: ubuntu-latest
if: github.repository == 'edeneast/tuxmux'
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- uses: google-github-actions/release-please-action@v3
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
release-type: rust
bump-minor-pre-major: true
package-name: tuxmux
draft: true
github_build:
name: Build release binaries
needs: release_please
if: ${{ needs.release-please.outputs.release_created == 'true' }}
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
name: tuxmux-x86_64-unknown-linux-gnu.tar.gz
- target: x86_64-apple-darwin
os: macos-latest
name: tuxmux- x86_64-apple-darwin.tar.gz
runs-on: ${{ matrix.os }}
continue-on-error: true
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Rust
uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
- name: Build | Build [Cargo]
run: cargo build --release --locked --target ${{ matrix.target }}
- name: Post Build | Prepare artifacts
run: |
cd target/${{ matrix.target }}/release
tar czvf ../../../${{ matrix.name }} tuxmux
cd -
- name: Release | Upload artifacts
uses: actions/upload-artifact @v3
with:
name: ${{ matrix.name }}
path: ${{ matrix.name }}
upload_artifacts:
name: Add build artifacts to release
needs: [release_please, github_build]
if: ${{ needs.release-please.outputs.release_created == 'true' || github.event.inputs.force-publish-packages == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Setup | Artifacts
uses: actions/download-artifact@v3
- name: Setup | Checksum
run: for file in tuxmux-*/tuxmux-*; do openssl dgst -sha256 -r "$file" | awk '{print $1}' > "${file}.sha256"; done
- name: Build | Publish release
run: gh release edit ${{ needs.release_please.outputs.tag_name }} --draft=true --repo=edeneast/tuxmux
env:
GITHUB_TOKEN: ${{ needs.release_please.outputs.tag_name }}
- name: Build | Add artifacts to release
uses: softprops/actios-gh-release@v1
with:
files: tuxmux-*/tuxmux-*
tag_name: ${{ needs.release_please.outputs.tag_name }}
publish_crate:
needs: release_please
if: ${{ needs.release-please.outputs.release_created || github.event.inputs.force-publish-crate == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Rust
uses: dtolnay/rust-toolchain@stable
- name: Setup | Nix
uses: cachix/install-nix-action@v23
with:
extra_nix_config: |
experimental-features = nix-command flakes
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
- name: Build | Markdown readme
run: nix develop --command just markdown
- name: Build | Publish to crates.io
run: cargo publish --token ${{ secrets.CARGO_REGISTRY_TOKEN }}