forked from jj-vcs/jj
-
Notifications
You must be signed in to change notification settings - Fork 0
157 lines (149 loc) · 5.33 KB
/
Copy pathrelease.yml
File metadata and controls
157 lines (149 loc) · 5.33 KB
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
152
153
154
155
156
157
name: Release
on:
release:
types: [published]
permissions: read-all
env:
CARGO_INCREMENTAL: 0
jobs:
build-release:
name: build-release
permissions:
contents: write
strategy:
fail-fast: false
matrix:
build: [linux-x86_64-musl, linux-aarch64-musl, macos-x86_64, macos-aarch64, win-x86_64, win-aarch64]
include:
- build: linux-x86_64-musl
os: ubuntu-24.04
target: x86_64-unknown-linux-musl
- build: linux-aarch64-musl
os: ubuntu-24.04-arm
target: aarch64-unknown-linux-musl
- build: macos-x86_64
os: macos-15
target: x86_64-apple-darwin
- build: macos-aarch64
os: macos-15
target: aarch64-apple-darwin
- build: win-x86_64
os: windows-2022
target: x86_64-pc-windows-msvc
- build: win-aarch64
os: windows-11-arm
target: aarch64-pc-windows-msvc
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
- name: Install packages (Ubuntu)
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends xz-utils liblz4-tool musl-tools
- name: Install Rust
uses: dtolnay/rust-toolchain@e97e2d8cc328f1b50210efc529dca0028893a2d9
with:
toolchain: stable
target: ${{ matrix.target }}
- name: Build release binary
shell: bash
run: cargo build --target ${{ matrix.target }} --verbose --release
- name: Build archive
shell: bash
run: |
outdir="target/${{ matrix.target }}/release"
staging="jj-${RELEASE_TAG_NAME}-${{ matrix.target }}"
mkdir "$staging"
cp {README.md,LICENSE} "$staging/"
if [[ "${{ matrix.os }}" == windows* ]]; then
cp "$outdir/jj.exe" "$staging/"
cd "$staging"
7z a "../$staging.zip" .
echo "ASSET=$staging.zip" >> $GITHUB_ENV
else
cp "$outdir/jj" "$staging/"
tar czf "$staging.tar.gz" -C "$staging" .
echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV
fi
env:
RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
- name: Upload release archive
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ env.ASSET }}
asset_name: ${{ env.ASSET }}
asset_content_type: application/octet-stream
docs-release-archive:
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- name: Install packages (Ubuntu)
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends xz-utils liblz4-tool musl-tools
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
with:
python-version: 3.11
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9
with:
version: "0.5.1"
enable-cache: false
- name: Compile docs and zip them up
run: |
uv run mkdocs build
archive="jj-${RELEASE_TAG_NAME}-docs-html.tar.gz"
tar czf "$archive" -C "rendered-docs" .
echo "ASSET=$archive" >> $GITHUB_ENV
env:
MKDOCS_OFFLINE: true
RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
- name: Upload release archive
uses: actions/upload-release-asset@e8f9f06c4b078e705bd2ea027f0926603fc9b4d5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ${{ env.ASSET }}
asset_name: ${{ env.ASSET }}
asset_content_type: application/octet-stream
docs-deploy-website-latest-release:
runs-on: ubuntu-24.04
permissions:
contents: write
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
# `.github/scripts/docs-build-deploy` will need to `git push` to the docs branch
persist-credentials: true
- run: "git fetch origin gh-pages --depth=1"
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
with:
python-version: 3.11
- name: Install uv
uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9
with:
version: "0.5.1"
enable-cache: false
- name: Install dependencies, compile and deploy docs to the "latest release" section of the website
run: |
git config user.name 'jj-docs[bot]'
git config user.email 'jj-docs[bot]@users.noreply.github.io'
# Using the 'latest' tag below makes the website default
# to this version.
.github/scripts/docs-build-deploy "${RELEASE_TAG_NAME}" latest --update-aliases --push
env:
RELEASE_TAG_NAME: ${{ github.event.release.tag_name }}
- name: "Show `git diff --stat`"
run: git diff --stat gh-pages^ gh-pages || echo "(No diffs)"