Skip to content

Commit 4e757be

Browse files
committed
let Docker/Linux assume clustered mode
1 parent 3870f9d commit 4e757be

24 files changed

+896
-369
lines changed

.github/actions/nfpm/action.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: NFPM Packager
2+
description: Build Linux packages using NFPM
3+
inputs:
4+
packager:
5+
description: Which packager implementation to use [apk|archlinux|deb|ipk|rpm]
6+
required: true
7+
config:
8+
description: Config file to be used
9+
required: true
10+
target:
11+
description: Where to save the generated package (filename, folder or empty for current folder)
12+
required: true
13+
runs:
14+
using: docker
15+
image: docker.io/goreleaser/nfpm:v2.42.0@sha256:31c856f5806306ba105111fec19e8679222c67c43ad09921a46f9400d99bbbb1
16+
args:
17+
- package
18+
- --packager
19+
- ${{ inputs.packager }}
20+
- --config
21+
- ${{ inputs.config }}
22+
- --target
23+
- ${{ inputs.target }}

.github/workflows/publish-linux-packages.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ jobs:
4545
MINIMUM_SYSTEMD_VERSION: 232
4646
ZITI_DEB_TEST_REPO: ${{ vars.ZITI_DEB_TEST_REPO || 'zitipax-openziti-deb-test' }}
4747
ZITI_RPM_TEST_REPO: ${{ vars.ZITI_RPM_TEST_REPO || 'zitipax-openziti-rpm-test' }}
48-
NFPM_VERSION: "2.38.0"
4948
steps:
5049
- name: Checkout Workspace
5150
uses: actions/checkout@v4
@@ -64,10 +63,8 @@ jobs:
6463
6564
- name: Build Package
6665
id: nfpm
67-
uses: burningalchemist/action-gh-nfpm@eeac96f42da23d091eec0d0088bf05cac0ceb9f3
68-
# uses: netfoundry/action-gh-nfpm@main
66+
uses: ./.github/actions/nfpm
6967
with:
70-
nfpm_version: ${{ env.NFPM_VERSION }}
7168
packager: ${{ matrix.packager }}
7269
config: dist/dist-packages/linux/nfpm-${{ matrix.package_name }}.yaml
7370
target: release/

.github/workflows/test-deployments.yml

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,15 @@ concurrency:
1414
cancel-in-progress: true
1515

1616
env:
17-
NFPM_VERSION: "2.38.0"
1817
I_AM_ROBOT: 1 # skip destruction warnings when running in CI
1918

2019
jobs:
2120
build-linux-packages:
2221
name: Build ${{ matrix.package_name }} ${{ matrix.arch.gox }} ${{ matrix.packager }}
2322
runs-on: ubuntu-24.04
23+
# this is necessary for testing the artifact in the next check which includes some distros with older glibc than
24+
# the ubuntu runner VM
25+
container: openziti/ziti-builder:v2
2426
strategy:
2527
matrix:
2628
package_name:
@@ -53,9 +55,8 @@ jobs:
5355
5456
- name: Build Package
5557
id: nfpm
56-
uses: burningalchemist/action-gh-nfpm@eeac96f42da23d091eec0d0088bf05cac0ceb9f3
58+
uses: ./.github/actions/nfpm
5759
with:
58-
nfpm_version: ${{ env.NFPM_VERSION }}
5960
packager: ${{ matrix.packager }}
6061
config: dist/dist-packages/linux/nfpm-${{ matrix.package_name }}.yaml
6162
target: release/
@@ -152,6 +153,8 @@ jobs:
152153
apt-get update
153154
apt-get install -y systemd # install as impotent dep (not PID 1)
154155
dpkg --install ./release/openziti_*.${{ matrix.distro.type }} # install CLI
156+
# DEBUG phantom service already exists?
157+
systemctl list-unit-files ziti-controller.service || true
155158
dpkg --install ./release/openziti-*.${{ matrix.distro.type }} # install controller, router
156159
;;
157160
esac
@@ -195,21 +198,9 @@ jobs:
195198
with:
196199
go-version-file: ./go.mod
197200

198-
- name: Install nfpm
199-
shell: bash
200-
run: |
201-
202-
set -o pipefail
203-
set -o xtrace
204-
205-
echo ~/.local/bin >> $GITHUB_PATH
206-
mkdir -p ~/.local/bin
207-
wget -qO- https://github.com/goreleaser/nfpm/releases/download/v${NFPM_VERSION}/nfpm_${NFPM_VERSION}_Linux_x86_64.tar.gz | tar --directory ~/.local/bin -xz nfpm
208-
nfpm --version
209-
210201
- name: Bootstrap & Run
211202
shell: bash
212-
run: ./dist/dist-packages/linux/linux.test.bash
203+
run: ./dist/dist-packages/linux/linux.test.bash </dev/null
213204

214205
- name: Debug Info
215206
if: always()

dist/dist-packages/linux/linux.test.bash

Lines changed: 79 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ cleanup(){
3131
sudo rm -r "/opt/openziti/etc/${ETC}"
3232
fi
3333
)||true
34+
if [[ -s /opt/openziti/etc/${ETC}/bootstrap.env ]]
35+
then
36+
rm -f /opt/openziti/etc/${ETC}/bootstrap.env
37+
fi
3438
done
3539
if [[ -d "${ZITI_CONSOLE_LOCATION}" ]]
3640
then
@@ -62,32 +66,38 @@ BASEDIR="$(cd "$(dirname "${0}")" && pwd)"
6266
REPOROOT="$(cd "${BASEDIR}/../../.." && pwd)"
6367
cd "${REPOROOT}"
6468

65-
declare -a BINS=(grep go nc nfpm curl unzip)
69+
declare -a BINS=(grep go nc docker curl unzip)
6670
for BIN in "${BINS[@]}"; do
6771
checkCommand "$BIN"
6872
done
6973

7074
: "${I_AM_ROBOT:=0}"
7175
: "${ZITI_GO_VERSION:=$(grep -E '^go \d+\.\d*' "./go.mod" | cut -d " " -f2)}"
76+
: "${ZITI_USER:=admin}"
7277
: "${ZITI_PWD:=ziggypw}"
7378
: "${TMPDIR:=$(mktemp -d)}"
7479
: "${ZITI_CTRL_ADVERTISED_ADDRESS:="ctrl1.127.0.0.1.sslip.io"}"
7580
: "${ZITI_CTRL_ADVERTISED_PORT:="12801"}"
7681
: "${ZITI_ROUTER_PORT:="30223"}"
77-
: "${ZITI_ROUTER_NAME:="linux-router1"}"
82+
: "${ZITI_ROUTER_NAME:="router1"}"
7883
: "${ZITI_ROUTER_ADVERTISED_ADDRESS:="${ZITI_ROUTER_NAME}.127.0.0.1.sslip.io"}"
7984
: "${ZITI_ENROLL_TOKEN:="${TMPDIR}/${ZITI_ROUTER_NAME}.jwt"}"
8085
: "${ZITI_CONSOLE_LOCATION:="/opt/openziti/share/consoletest"}"
86+
# default is amd64 image manifest matching .github/actions/nfpm/action.yml
87+
: "${NFPM_VERSION:=docker.io/goreleaser/nfpm:v2.42.0@sha256:31c856f5806306ba105111fec19e8679222c67c43ad09921a46f9400d99bbbb1}"
8188

8289
export \
8390
ZITI_GO_VERSION \
91+
ZITI_USER \
8492
ZITI_PWD \
8593
ZITI_CTRL_ADVERTISED_ADDRESS \
8694
ZITI_CTRL_ADVERTISED_PORT \
95+
ZITI_CONSOLE_LOCATION \
8796
ZITI_ROUTER_PORT \
8897
ZITI_ROUTER_NAME \
8998
ZITI_ROUTER_ADVERTISED_ADDRESS \
90-
ZITI_ENROLL_TOKEN
99+
ZITI_ENROLL_TOKEN \
100+
DEBUG=1 \
91101

92102
cleanup
93103

@@ -100,30 +110,37 @@ done
100110
mkdir -p ./release
101111
go build -o ./release/ ./...
102112

113+
docker_nfpm(){
114+
docker run --rm \
115+
--user "${UID:-0}" \
116+
--volume "${TMPDIR}":/mnt/packages \
117+
--volume ./dist:/mnt/dist \
118+
--volume ./release:/mnt/release \
119+
--workdir /mnt \
120+
--env ZITI_VENDOR \
121+
--env ZITI_MAINTAINER \
122+
--env ZITI_HOMEPAGE \
123+
--env MINIMUM_SYSTEMD_VERSION \
124+
"${NFPM_VERSION}" \
125+
"${@}"
126+
}
127+
103128
for PKG in openziti{,-controller,-router}
104129
do
105130
ZITI_HOMEPAGE="https://openziti.io" \
106131
ZITI_VENDOR="netfoundry" \
107132
ZITI_MAINTAINER="Maintainers <[email protected]>" \
108133
MINIMUM_SYSTEMD_VERSION="232" \
109-
nfpm pkg \
134+
docker_nfpm pkg \
110135
--packager deb \
111-
--target "$TMPDIR" \
136+
--target ./packages \
112137
--config "./dist/dist-packages/linux/nfpm-${PKG}.yaml"
113138
done
114139

115140
sudo dpkg --install "${TMPDIR}/openziti_"*.deb
116141
sudo dpkg --install "${TMPDIR}/openziti-"{controller,router}_*.deb
117142

118-
DEBUG=1 \
119-
ZITI_ENROLL_TOKEN=/tmp/${ZITI_ROUTER_NAME}.jwt \
120-
sudo /opt/openziti/etc/controller/bootstrap.bash << CTRL
121-
ZITI_CTRL_ADVERTISED_ADDRESS="${ZITI_CTRL_ADVERTISED_ADDRESS}"
122-
ZITI_CTRL_ADVERTISED_PORT="${ZITI_CTRL_ADVERTISED_PORT}"
123-
ZITI_CONSOLE_LOCATION="${ZITI_CONSOLE_LOCATION}"
124-
ZITI_USER="admin"
125-
ZITI_PWD="${ZITI_PWD}"
126-
CTRL
143+
sudo -E bash -x /opt/openziti/etc/controller/bootstrap.bash
127144

128145
sudo systemctl start ziti-controller.service
129146
sudo systemd-run \
@@ -133,48 +150,66 @@ sudo systemd-run \
133150
systemctl is-active ziti-controller.service
134151

135152
# shellcheck disable=SC2140
136-
login_cmd="ziti edge login ${ZITI_CTRL_ADVERTISED_ADDRESS}:${ZITI_CTRL_ADVERTISED_PORT}"\
137-
" --yes"\
138-
" --username admin"\
139-
" --password ${ZITI_PWD}"
140-
ATTEMPTS=10
153+
zitiLogin(){
154+
ziti edge login "${ZITI_CTRL_ADVERTISED_ADDRESS}:${ZITI_CTRL_ADVERTISED_PORT}" \
155+
--yes \
156+
--username "${ZITI_USER}" \
157+
--password "${ZITI_PWD}"
158+
}
159+
ATTEMPTS=9
141160
DELAY=3
142-
until ! ((ATTEMPTS)) || ${login_cmd}
161+
until ! (( --ATTEMPTS )) || zitiLogin
143162
do
144-
(( ATTEMPTS-- ))
145163
echo "Waiting for controller login"
146164
sleep ${DELAY}
147165
done
148-
ziti edge create edge-router "${ZITI_ROUTER_NAME}" -to "${ZITI_ENROLL_TOKEN}"
166+
if ! (( ATTEMPTS )); then
167+
echo "ERROR: timeout waiting for controller login" >&2
168+
exit 1
169+
fi
170+
171+
zitiRouter() {
172+
ziti edge create edge-router "${ZITI_ROUTER_NAME}" -to "${ZITI_ENROLL_TOKEN}"
173+
}
149174

150-
# fetch and install ziti console
175+
ATTEMPTS=9
176+
DELAY=3
177+
until ! (( --ATTEMPTS )) || zitiRouter
178+
do
179+
echo "Waiting for router creation"
180+
sleep ${DELAY}
181+
182+
done
183+
if ! (( ATTEMPTS )); then
184+
echo "ERROR: timeout waiting for router creation" >&2
185+
exit 1
186+
fi
187+
188+
# mock ziti console html
151189
sudo mkdir -p "${ZITI_CONSOLE_LOCATION}"
152190
sudo tee "${ZITI_CONSOLE_LOCATION}/index.html" <<< "I am ZAC"
153191
sudo chmod -R +rX "${ZITI_CONSOLE_LOCATION}"
154192

155-
sudo /opt/openziti/etc/router/bootstrap.bash << ROUTER
156-
ZITI_CTRL_ADVERTISED_ADDRESS="${ZITI_CTRL_ADVERTISED_ADDRESS}"
157-
ZITI_CTRL_ADVERTISED_PORT="${ZITI_CTRL_ADVERTISED_PORT}"
158-
ZITI_ROUTER_ADVERTISED_ADDRESS="${ZITI_ROUTER_ADVERTISED_ADDRESS}"
159-
ZITI_ROUTER_PORT="${ZITI_ROUTER_PORT}"
160-
ZITI_ENROLL_TOKEN="${ZITI_ENROLL_TOKEN}"
161-
ROUTER
193+
sudo -E bash -x /opt/openziti/etc/router/bootstrap.bash
194+
162195
sudo systemctl start ziti-router.service
163196
sudo systemd-run \
164197
--wait --quiet \
165198
--service-type=oneshot \
166199
--property=TimeoutStartSec=20s \
167200
systemctl is-active ziti-router.service
168201

169-
ATTEMPTS=10
202+
isOnline(){
203+
ziti edge list edge-routers -j | jq '.data[0].isOnline'
204+
}
205+
ATTEMPTS=9
170206
DELAY=3
171-
until ! ((ATTEMPTS)) || [[ $(ziti edge list edge-routers -j | jq '.data[0].isOnline') == "true" ]]
207+
until ! (( --ATTEMPTS )) || [[ "$(isOnline)" == "true" ]]
172208
do
173-
(( ATTEMPTS-- ))
174209
echo "INFO: waiting for router to be online"
175210
sleep ${DELAY}
176211
done
177-
if [[ $(ziti edge list edge-routers -j | jq '.data[0].isOnline') == "true" ]]
212+
if [[ "$(isOnline)" == "true" ]]
178213
then
179214
echo "INFO: router is online"
180215
else
@@ -199,12 +234,19 @@ ATTEMPTS=5
199234
DELAY=3
200235

201236
# verify console is available
202-
curl_cmd="curl -skSfw '%{http_code}\t%{url}\n' -o/dev/null \"https://${ZITI_CTRL_ADVERTISED_ADDRESS}:${ZITI_CTRL_ADVERTISED_PORT}/zac/\""
203-
until ! (( ATTEMPTS-- )) || eval "${curl_cmd}" &> /dev/null
237+
getZac(){
238+
curl -kfw '%{http_code}\t%{url}\n' -o/dev/null \
239+
"https://${ZITI_CTRL_ADVERTISED_ADDRESS}:${ZITI_CTRL_ADVERTISED_PORT}/zac/"
240+
}
241+
242+
until ! (( --ATTEMPTS )) || getZac &> /dev/null
204243
do
205244
echo "Waiting for zac"
206245
sleep ${DELAY}
207246
done
208-
eval "${curl_cmd}"
247+
if ! (( ATTEMPTS )); then
248+
echo "ERROR: timeout waiting for zac" >&2
249+
exit 1
250+
fi
209251

210252
cleanup

dist/dist-packages/linux/nfpm-openziti-controller.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ contents:
1818
- dst: /lib/systemd/system/
1919
src: ./dist/dist-packages/linux/openziti-controller/ziti-controller.service
2020

21-
- dst: /etc/systemd/system/ziti-controller.service.d/override.conf
22-
src: ./dist/dist-packages/linux/openziti-controller/ziti-controller.service.override.conf
23-
2421
- dst: /opt/openziti/etc/controller
2522
type: dir
2623
file_info:
@@ -37,11 +34,15 @@ contents:
3734
- dst: /opt/openziti/etc/controller/
3835
src: ./dist/dist-packages/linux/openziti-controller/bootstrap.bash
3936

37+
- dst: /opt/openziti/etc/controller/
38+
src: ./dist/dist-packages/linux/openziti-controller/uninstall.bash
39+
4040
- dst: /opt/openziti/etc/controller/
4141
src: ./dist/dist-packages/linux/openziti-controller/entrypoint.bash
4242
depends:
4343
- openziti # ziti CLI
4444
- systemd (>= ${MINIMUM_SYSTEMD_VERSION})
4545

4646
scripts:
47+
preinstall: ./dist/dist-packages/linux/openziti-controller/preinstall.bash
4748
postinstall: ./dist/dist-packages/linux/openziti-controller/postinstall.bash

dist/dist-packages/linux/nfpm-openziti-router.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ contents:
1818
- dst: /lib/systemd/system/
1919
src: ./dist/dist-packages/linux/openziti-router/ziti-router.service
2020

21-
- dst: /etc/systemd/system/ziti-router.service.d/override.conf
22-
src: ./dist/dist-packages/linux/openziti-router/ziti-router.service.override.conf
23-
2421
- dst: /opt/openziti/etc/router
2522
type: dir
2623
file_info:

0 commit comments

Comments
 (0)