-
Notifications
You must be signed in to change notification settings - Fork 2
149 lines (129 loc) · 5.26 KB
/
release.yml
File metadata and controls
149 lines (129 loc) · 5.26 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
name: Build and Release
on:
release:
types: [created]
jobs:
check-version-bump:
name: Check Version Bump
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "0.7.2"
enable-cache: true
- name: Check Version
run: |
version=$(uv version --short)
echo "version: $version"
echo "release tag: ${{ github.event.release.tag_name }}"
if [ "$version" != "${{ github.event.release.tag_name }}" ]; then
echo "❌ Version mismatch: pyproject.toml version does not match release tag. Please run 'make bump-version version=${{ github.event.release.tag_name }}' and commit the changes."
exit 1
else
echo "✅ Version matches release tag."
fi
# Matrix items cannot access variable defined in an `env` section, but they can read outputs from other jobs.
set-env-vars:
name: Set Environment Variables
runs-on: ubuntu-latest
needs: check-version-bump
outputs:
darwin_os: darwin
arm64_arch: arm64
linux_os: linux
amd64_arch: amd64
steps:
- name: Set matrix variables
run: echo "Created env variables accessible by matrix"
build:
name: Build ${{ matrix.os }} ${{ matrix.arch }}
needs: set-env-vars
runs-on: ${{ matrix.runner }}
strategy:
matrix:
include:
# https://docs.github.com/en/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners#standard-github-hosted-runners-for-public-repositories
- os: ${{ needs.set-env-vars.outputs.darwin_os }}
arch: ${{ needs.set-env-vars.outputs.arm64_arch }}
runner: macos-15
- os: ${{ needs.set-env-vars.outputs.darwin_os }}
arch: ${{ needs.set-env-vars.outputs.amd64_arch }}
runner: macos-13
- os: ${{ needs.set-env-vars.outputs.linux_os }}
arch: ${{ needs.set-env-vars.outputs.arm64_arch }}
runner: ubuntu-24.04-arm
- os: ${{ needs.set-env-vars.outputs.linux_os }}
arch: ${{ needs.set-env-vars.outputs.amd64_arch }}
runner: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
version: "0.7.2"
enable-cache: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version-file: 'pyproject.toml'
- name: Install and build
run: |
make install
source .venv/bin/activate
make bundle
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: rml-${{ matrix.os }}-${{ matrix.arch }}
path: dist/rml-${{ matrix.os }}-${{ matrix.arch }}.tar.gz
release:
name: Publish Release
needs: [build, set-env-vars] # Only runs if all build jobs succeed
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Create version file
run: |
echo "${{ github.event.release.tag_name }}" > version.txt
- name: Publish release with all assets
uses: softprops/action-gh-release@v2
with:
files: |
artifacts/rml-${{ needs.set-env-vars.outputs.darwin_os }}-${{ needs.set-env-vars.outputs.arm64_arch }}/rml-${{ needs.set-env-vars.outputs.darwin_os }}-${{ needs.set-env-vars.outputs.arm64_arch }}.tar.gz
artifacts/rml-${{ needs.set-env-vars.outputs.darwin_os }}-${{ needs.set-env-vars.outputs.amd64_arch }}/rml-${{ needs.set-env-vars.outputs.darwin_os }}-${{ needs.set-env-vars.outputs.amd64_arch }}.tar.gz
artifacts/rml-${{ needs.set-env-vars.outputs.linux_os }}-${{ needs.set-env-vars.outputs.arm64_arch }}/rml-${{ needs.set-env-vars.outputs.linux_os }}-${{ needs.set-env-vars.outputs.arm64_arch }}.tar.gz
artifacts/rml-${{ needs.set-env-vars.outputs.linux_os }}-${{ needs.set-env-vars.outputs.amd64_arch }}/rml-${{ needs.set-env-vars.outputs.linux_os }}-${{ needs.set-env-vars.outputs.amd64_arch }}.tar.gz
version.txt
update_installation_script:
name: Update Installation Script
needs: [release]
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Authenticate with Google Cloud
uses: 'google-github-actions/auth@v2'
with:
project_id: 'cerebral-af'
workload_identity_provider: 'projects/322339097191/locations/global/workloadIdentityPools/github/providers/rml-provider'
service_account: 'rml-client-bucket-access-accou@cerebral-af.iam.gserviceaccount.com'
- name: Set up GCP SDK
uses: google-github-actions/setup-gcloud@v2
- name: Copy installation script to bucket
run: |
gcloud storage cp cli/install.sh gs://rml-install/index.html
- name: Invalidate CDN cache
run: |
gcloud compute url-maps invalidate-cdn-cache rml-install-url-map --path "/*"