Skip to content

Commit 32b9322

Browse files
tedim52claude
andcommitted
fix(ci): replace Gemfury with GitHub Pages apt/rpm repository
The GEMFURY_PUBLISH_TOKEN is no longer valid and cannot be regenerated due to permission issues on the Gemfury org. Replace the Fury publisher with a self-hosted apt/rpm repository on GitHub Pages using the existing kurtosis-cli-release-artifacts repo. Changes: - Remove publishers section from goreleaser config - Fix release.ids to include deb-and-rpm-packages so artifacts upload to GitHub Release - Remove FURY_TOKEN from build script (keep GITHUB_TOKEN) - Add update-package-repo job to publish workflow that generates apt/rpm repo metadata - Update all installation docs and CI test references to use GitHub Pages URL - Update CircleCI config test jobs to use new apt URL Users can now install from: https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 4672313 commit 32b9322

File tree

7 files changed

+82
-27
lines changed

7 files changed

+82
-27
lines changed

.circleci/config.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -730,7 +730,7 @@ jobs:
730730
- <<: *steps_install_go
731731

732732
- run: |
733-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
733+
echo "deb [trusted=yes] https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
734734
sudo apt update
735735
sudo apt install kurtosis-cli
736736
# We don't send metrics to avoid polluting our logs
@@ -801,7 +801,7 @@ jobs:
801801
at: "<< pipeline.parameters.workspace-with-cli-binary-and-images-mountpoint >>"
802802

803803
- run: |
804-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
804+
echo "deb [trusted=yes] https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
805805
sudo apt update
806806
sudo apt install kurtosis-cli
807807
# We don't send metrics to avoid polluting our logs
@@ -841,7 +841,7 @@ jobs:
841841
- <<: *steps_install_go
842842

843843
- run: |
844-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
844+
echo "deb [trusted=yes] https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
845845
sudo apt update
846846
sudo apt install kurtosis-cli
847847
# We don't send metrics to avoid polluting our logs
@@ -1047,7 +1047,7 @@ jobs:
10471047
- <<: *steps_install_go
10481048

10491049
- run: |
1050-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
1050+
echo "deb [trusted=yes] https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
10511051
sudo apt update
10521052
sudo apt install kurtosis-cli curl
10531053
# We don't send metrics to avoid polluting our logs

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -875,7 +875,7 @@ jobs:
875875
# Install released Kurtosis CLI from apt
876876
- name: Install released Kurtosis CLI
877877
run: |
878-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
878+
echo "deb [trusted=yes] https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
879879
sudo apt-get update
880880
sudo apt-get install -y kurtosis-cli
881881

.github/workflows/publish.yml

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,75 @@ jobs:
308308
309309
- name: Build and publish CLI
310310
env:
311-
GEMFURY_PUBLISH_TOKEN: ${{ secrets.GEMFURY_PUBLISH_TOKEN }}
312311
KURTOSISBOT_GITHUB_TOKEN: ${{ secrets.KURTOSISBOT_GITHUB_TOKEN }}
313312
run: cli/cli/scripts/build.sh true true
313+
314+
# ============================================================================
315+
# Update apt/rpm Package Repository (GitHub Pages)
316+
# ============================================================================
317+
update-package-repo:
318+
runs-on: ubuntu-latest
319+
needs: push-cli-artifacts
320+
steps:
321+
- name: Install repo tools
322+
run: |
323+
sudo apt-get update
324+
sudo apt-get install -y dpkg-dev createrepo-c
325+
326+
- name: Checkout existing GitHub Pages
327+
uses: actions/checkout@v4
328+
with:
329+
repository: kurtosis-tech/kurtosis-cli-release-artifacts
330+
ref: gh-pages
331+
token: ${{ secrets.KURTOSISBOT_GITHUB_TOKEN }}
332+
path: repo
333+
334+
- name: Download deb/rpm from release
335+
env:
336+
GH_TOKEN: ${{ secrets.KURTOSISBOT_GITHUB_TOKEN }}
337+
run: |
338+
set -euo pipefail
339+
version="${GITHUB_REF_NAME}"
340+
341+
mkdir -p downloads
342+
gh release download "${version}" \
343+
--repo kurtosis-tech/kurtosis-cli-release-artifacts \
344+
--pattern '*.deb' \
345+
--pattern '*.rpm' \
346+
--dir downloads
347+
348+
echo "Downloaded artifacts:"
349+
ls -la downloads/
350+
351+
- name: Update apt repository
352+
run: |
353+
set -euo pipefail
354+
cd repo
355+
356+
# Flat repo layout: debs and Packages file at the root (like Gemfury)
357+
cp ../downloads/*.deb .
358+
359+
# Generate Packages index for all deb files in the root
360+
dpkg-scanpackages --multiversion . > Packages
361+
gzip -9c Packages > Packages.gz
362+
363+
- name: Update rpm repository
364+
run: |
365+
set -euo pipefail
366+
cd repo
367+
368+
mkdir -p rpm/packages
369+
cp ../downloads/*.rpm rpm/packages/
370+
371+
createrepo_c --update rpm/
372+
373+
- name: Deploy to GitHub Pages
374+
uses: peaceiris/actions-gh-pages@v4
375+
with:
376+
personal_token: ${{ secrets.KURTOSISBOT_GITHUB_TOKEN }}
377+
external_repository: kurtosis-tech/kurtosis-cli-release-artifacts
378+
publish_dir: ./repo
379+
keep_files: true
380+
user_name: kurtosisbot
381+
user_email: kurtosisbot@users.noreply.github.com
382+
commit_message: "Update package repo for ${{ github.ref_name }}"

cli/cli/.goreleaser.yml

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ archives:
5252
- scripts/completions/scripts/*
5353
name_template: kurtosis-cli_{{ .Version }}_{{ .Os }}_{{ .Arch }}
5454

55-
# Gemfury accepts deb & rpm packages but not APK, so we build these two separately
5655
nfpms:
5756
- id: deb-and-rpm-packages
5857
package_name: kurtosis-cli
@@ -84,10 +83,9 @@ release:
8483

8584
name_template: "{{ .Version }}"
8685

87-
# NOTE: these are the archive IDs, not the build/binary IDs
8886
ids:
8987
- cli
90-
- cli-linux-packages
88+
- deb-and-rpm-packages
9189

9290
brews:
9391
# creates a brew formula representing the latest version
@@ -140,17 +138,6 @@ brews:
140138
caveats: |
141139
The kurtosis CLI is installed with tab completion support. For more details visit https://docs.kurtosis.com/.
142140
143-
publishers:
144-
# Inspired by https://netdevops.me/2021/building-and-publishing-deb/rpm-packages-with-goreleaser-and-fury.io/
145-
- name: fury.io
146-
ids:
147-
- deb-and-rpm-packages
148-
dir: "{{ dir .ArtifactPath }}"
149-
env:
150-
# This will get set by CI; see the CI config for how
151-
- 'FURY_TOKEN={{ .Env.FURY_TOKEN }}'
152-
cmd: "curl -F package=@{{ .ArtifactName }} https://{{ .Env.FURY_TOKEN }}@push.fury.io/kurtosis-tech/"
153-
154141
source:
155142
# Kurt Core is a private project, and we definitely don't want to release source code
156143
enabled: false

cli/cli/scripts/build.sh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,8 @@ fi
7272
export CLI_BINARY_FILENAME \
7373
export VERSION="${version}"
7474
if "${should_publish_arg}"; then
75-
# These environment variables will be set ONLY when publishing, in the CI environment
76-
# See the CI config for details on how these get set
77-
export FURY_TOKEN="${GEMFURY_PUBLISH_TOKEN}"
75+
# This environment variable will be set ONLY when publishing, in the CI environment
76+
# See the CI config for details on how it gets set
7877
export GITHUB_TOKEN="${KURTOSISBOT_GITHUB_TOKEN}"
7978
fi
8079
# ^^^^^^^^ Goreleaser variables ^^^^^^^^^^^^^^^^^^^

docs/docs/get-started/installing-the-cli.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ xcode-select --install
4949
<TabItem value="apt" label="apt (Ubuntu)">
5050

5151
```bash
52-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
52+
echo "deb [trusted=yes] https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
5353
sudo apt update
5454
sudo apt install kurtosis-cli
5555
```
@@ -60,7 +60,7 @@ sudo apt install kurtosis-cli
6060
```bash
6161
echo '[kurtosis]
6262
name=Kurtosis
63-
baseurl=https://yum.fury.io/kurtosis-tech/
63+
baseurl=https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/rpm
6464
enabled=1
6565
gpgcheck=0' | sudo tee /etc/yum.repos.d/kurtosis.repo
6666
sudo yum install kurtosis-cli

docs/docs/guides/installing-historical-versions.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ sudo apt remove kurtosis-cli
4646
:::
4747

4848
```bash
49-
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
49+
echo "deb [trusted=yes] https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list
5050
sudo apt update
5151
sudo apt remove kurtosis-cli
5252
sudo apt install kurtosis-cli=<version> -V
@@ -68,7 +68,7 @@ sudo yum remove kurtosis-cli
6868
```bash
6969
echo '[kurtosis]
7070
name=Kurtosis
71-
baseurl=https://yum.fury.io/kurtosis-tech/
71+
baseurl=https://kurtosis-tech.github.io/kurtosis-cli-release-artifacts/rpm
7272
enabled=1
7373
gpgcheck=0' | sudo tee /etc/yum.repos.d/kurtosis.repo
7474
sudo yum remove kurtosis-cli

0 commit comments

Comments
 (0)