-
Notifications
You must be signed in to change notification settings - Fork 1
139 lines (132 loc) · 3.83 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
name: Create Release
on:
workflow_dispatch:
inputs:
releaseType:
description: 'Release type'
default: 'patch'
type: choice
options:
- prepatch
- patch
- preminor
- minor
# - premajor
# - major
required: true
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
bump-version-and-create-tag:
name: Bump ${{github.event.inputs.releaseType}} version
outputs:
VERSION: ${{steps.bump-version.outputs.VERSION}}
TAG: ${{steps.bump-version.outputs.TAG}}
permissions:
contents: write
runs-on: ubuntu-22.04
timeout-minutes: 15
steps:
- uses: actions/checkout@v3
- uses: denoland/setup-deno@v1
- name: Configure git
run: |
git config user.email "${{github.actor}}@users.noreply.github.com"
git config user.name "${{github.actor}}"
- run: echo $GITHUB_OUTPUT
- run: cat $GITHUB_OUTPUT
- run: |
.github/workflows/bump-version-and-create-tag.ts ${{github.event.inputs.releaseType}} $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
id: bump-version
- run: echo ${{steps.bump-version.outputs.TAG}}
build:
name: build ${{matrix.target}}
needs: [bump-version-and-create-tag]
runs-on: ${{matrix.os}}
timeout-minutes: 30
strategy:
fail-fast: true
matrix:
include:
- os: macos-11
target: x86_64-apple-darwin
- os: ubuntu-20.04
target: x86_64-unknown-linux-gnu
- os: windows-2019
target: x86_64-pc-windows-msvc
steps:
- run: echo ${{needs.bump-version-and-create-tag.outputs.TAG}}
- uses: actions/checkout@v3
with:
lfs: true
ref: refs/tags/${{needs.bump-version-and-create-tag.outputs.TAG}}
- uses: arduino/setup-protoc@v1
with:
repo-token: ${{secrets.GITHUB_TOKEN}}
- uses: Swatinem/rust-cache@v2
- run: rustup show
- run: cargo build --release --bin razel
- uses: actions/upload-artifact@v3
with:
name: razel-${{matrix.target}}
path: |
target/release/razel
target/release/razel.exe
if-no-files-found: error
retention-days: 3
publish-github:
needs:
- bump-version-and-create-tag
- build
permissions:
contents: write
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@v3
- run: ls -al
- run: ls -al razel-*/
- name: Zip binaries
run: |
for dir in $(ls -d razel-*); do
gzip --stdout --keep $dir/* > $dir.gz
zip -j $dir.zip $dir/*
done
shell: bash
- run: ls -al
- uses: softprops/action-gh-release@v1
with:
generate_release_notes: true
tag_name: ${{needs.bump-version-and-create-tag.outputs.TAG}}
files: |
razel-*.gz
razel-*.zip
publish-crates_io:
needs:
- bump-version-and-create-tag
- publish-github
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
ref: refs/tags/${{needs.bump-version-and-create-tag.outputs.TAG}}
- uses: arduino/setup-protoc@v1
with:
repo-token: ${{secrets.GITHUB_TOKEN}}
- run: cargo publish
env:
CARGO_REGISTRY_TOKEN: ${{secrets.CARGO_REGISTRY_TOKEN}}
publish-pypi:
needs:
- bump-version-and-create-tag
- publish-github
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
ref: refs/tags/${{needs.bump-version-and-create-tag.outputs.TAG}}
- run: .dist/publish-pypi.sh ${{needs.bump-version-and-create-tag.outputs.VERSION}}
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{secrets.PYPI_TOKEN}}