-
Notifications
You must be signed in to change notification settings - Fork 0
167 lines (139 loc) · 6.61 KB
/
Copy pathhomebrew-tap-workflow.yml
File metadata and controls
167 lines (139 loc) · 6.61 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
158
159
160
161
162
163
164
165
166
167
name: Update Formula
on:
release:
types: [published]
# This will trigger when any repository publishes a release
repository_dispatch:
types: [update-formula]
permissions:
contents: write
pull-requests: write
jobs:
update-formula:
runs-on: ubuntu-latest
# Only run if the release is from thand-io/agent OR it's a repository_dispatch
if: github.event_name == 'repository_dispatch' || github.event.repository.full_name == 'thand-io/agent'
steps:
- name: Checkout homebrew-tap
uses: actions/checkout@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
fetch-depth: 0
- name: Extract version and repo info
id: info
run: |
VERSION="${{ github.event.client_payload.version }}"
REPOSITORY="${{ github.event.client_payload.repository }}"
RELEASE_URL="${{ github.event.client_payload.release_url }}"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "repository=$REPOSITORY" >> $GITHUB_OUTPUT
echo "release_url=$RELEASE_URL" >> $GITHUB_OUTPUT
echo "branch_name=update-agent-$VERSION" >> $GITHUB_OUTPUT
- name: Download and calculate checksums
id: checksums
run: |
VERSION="${{ steps.info.outputs.version }}"
REPO="${{ steps.info.outputs.repository }}"
# Define URLs for all platforms
DARWIN_AMD64_URL="https://github.com/${REPO}/releases/download/${VERSION}/agent-darwin-amd64.tar.gz"
DARWIN_ARM64_URL="https://github.com/${REPO}/releases/download/${VERSION}/agent-darwin-arm64.tar.gz"
LINUX_AMD64_URL="https://github.com/${REPO}/releases/download/${VERSION}/agent-linux-amd64.tar.gz"
LINUX_ARM64_URL="https://github.com/${REPO}/releases/download/${VERSION}/agent-linux-arm64.tar.gz"
# Create temp directory
mkdir -p /tmp/downloads
# Download files and calculate SHA256
echo "Downloading and calculating checksums..."
curl -sL "$DARWIN_AMD64_URL" -o /tmp/downloads/agent-darwin-amd64.tar.gz
curl -sL "$DARWIN_ARM64_URL" -o /tmp/downloads/agent-darwin-arm64.tar.gz
curl -sL "$LINUX_AMD64_URL" -o /tmp/downloads/agent-linux-amd64.tar.gz
curl -sL "$LINUX_ARM64_URL" -o /tmp/downloads/agent-linux-arm64.tar.gz
DARWIN_AMD64_SHA=$(sha256sum /tmp/downloads/agent-darwin-amd64.tar.gz | cut -d' ' -f1)
DARWIN_ARM64_SHA=$(sha256sum /tmp/downloads/agent-darwin-arm64.tar.gz | cut -d' ' -f1)
LINUX_AMD64_SHA=$(sha256sum /tmp/downloads/agent-linux-amd64.tar.gz | cut -d' ' -f1)
LINUX_ARM64_SHA=$(sha256sum /tmp/downloads/agent-linux-arm64.tar.gz | cut -d' ' -f1)
echo "darwin_amd64_url=$DARWIN_AMD64_URL" >> $GITHUB_OUTPUT
echo "darwin_arm64_url=$DARWIN_ARM64_URL" >> $GITHUB_OUTPUT
echo "linux_amd64_url=$LINUX_AMD64_URL" >> $GITHUB_OUTPUT
echo "linux_arm64_url=$LINUX_ARM64_URL" >> $GITHUB_OUTPUT
echo "darwin_amd64_sha=$DARWIN_AMD64_SHA" >> $GITHUB_OUTPUT
echo "darwin_arm64_sha=$DARWIN_ARM64_SHA" >> $GITHUB_OUTPUT
echo "linux_amd64_sha=$LINUX_AMD64_SHA" >> $GITHUB_OUTPUT
echo "linux_arm64_sha=$LINUX_ARM64_SHA" >> $GITHUB_OUTPUT
- name: Create Formula directory
run: mkdir -p Formula
- name: Generate thand formula
run: |
cat > Formula/thand.rb << 'EOF'
class Thand < Formula
desc "Open-source agent for AI-ready privilege access management (PAM) and just-in-time access (JIT) to cloud infrastructure, SaaS applications and local systems."
homepage "https://github.com/${{ steps.info.outputs.repository }}"
license "BSL-1.1"
version "${{ steps.info.outputs.version }}"
on_macos do
if Hardware::CPU.intel?
url "${{ steps.checksums.outputs.darwin_amd64_url }}"
sha256 "${{ steps.checksums.outputs.darwin_amd64_sha }}"
end
if Hardware::CPU.arm?
url "${{ steps.checksums.outputs.darwin_arm64_url }}"
sha256 "${{ steps.checksums.outputs.darwin_arm64_sha }}"
end
end
on_linux do
if Hardware::CPU.intel?
url "${{ steps.checksums.outputs.linux_amd64_url }}"
sha256 "${{ steps.checksums.outputs.linux_amd64_sha }}"
end
if Hardware::CPU.arm? && Hardware::CPU.is_64_bit?
url "${{ steps.checksums.outputs.linux_arm64_url }}"
sha256 "${{ steps.checksums.outputs.linux_arm64_sha }}"
end
end
def install
bin.install "agent" => "thand"
end
test do
system "#{bin}/thand", "--help"
end
end
EOF
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: |
Update agent formula to ${{ steps.info.outputs.version }}
- Version: ${{ steps.info.outputs.version }}
- Release: ${{ steps.info.outputs.release_url }}
- Repository: ${{ steps.info.outputs.repository }}
Auto-generated by GitHub Actions
committer: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
branch: ${{ steps.info.outputs.branch_name }}
base: main
title: "Update agent formula to ${{ steps.info.outputs.version }}"
body: |
## Update agent formula to ${{ steps.info.outputs.version }}
This PR updates the agent formula to version `${{ steps.info.outputs.version }}`.
### Changes
- Updated version to `${{ steps.info.outputs.version }}`
- Updated download URLs and SHA256 checksums for all platforms
- Supports macOS (Intel & Apple Silicon) and Linux (AMD64 & ARM64)
### Release Information
- **Repository**: ${{ steps.info.outputs.repository }}
- **Release URL**: ${{ steps.info.outputs.release_url }}
### Platform Support
- ✅ macOS Intel (x86_64)
- ✅ macOS Apple Silicon (arm64)
- ✅ Linux AMD64
- ✅ Linux ARM64
This PR was automatically generated by the formula update workflow.
labels: |
formula-update
automated
reviewers: |
# Add GitHub usernames of people who should review
assignees: |
# Add GitHub usernames of people who should be assigned
draft: false
delete-branch: true