Skip to content

Commit 51659d6

Browse files
committed
Add FreeBSD in CI
1 parent 76c81a1 commit 51659d6

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

.github/workflows/build.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ jobs:
3636
flags: unit,os_linux
3737
fail_ci_if_error: true
3838
verbose: true
39+
3940
test-linux-arm64:
4041
runs-on: linux-arm64
4142
steps:
@@ -48,6 +49,31 @@ jobs:
4849
run: |
4950
make format || true
5051
make test
52+
53+
test-freebsd-amd64:
54+
runs-on: macos-latest
55+
steps:
56+
- uses: actions/checkout@v2
57+
- name: Set up go
58+
uses: actions/setup-go@v3
59+
with:
60+
go-version-file: 'go.mod'
61+
- name: Test in FreeBSD
62+
id: test
63+
uses: vmactions/freebsd-vm@v0
64+
with:
65+
usesh: true
66+
prepare: |
67+
wget https://go.dev/dl/go1.20.4.freebsd-amd64.tar.gz
68+
tar -C /usr/local -xzf go1.20.4.freebsd-amd64.tar.gz
69+
export GOROOT=/usr/local/go
70+
export GOPATH=/usr/local/gopath
71+
export PATH=$PATH:$GOPATH/bin
72+
73+
run: |
74+
make format || true
75+
make test
76+
5177
test-windows:
5278
runs-on: windows-2019
5379
steps:
@@ -99,6 +125,7 @@ jobs:
99125
needs:
100126
- test-linux-amd64
101127
- test-linux-arm64
128+
- test-freebsd-amd64
102129
- test-windows
103130
runs-on: ubuntu-latest
104131
steps:
@@ -148,6 +175,10 @@ jobs:
148175
with:
149176
name: lifecycle-linux-arm64-sha256
150177
path: out/lifecycle-v*+linux.arm64.tgz.sha256
178+
- uses: actions/upload-artifact@v2
179+
with:
180+
name: lifecycle-freebsd-x86-64
181+
path: out/lifecycle-v*+freebsd.x86-64.tgz
151182
- uses: actions/upload-artifact@v2
152183
with:
153184
name: lifecycle-windows-x86-64

Makefile

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ build: build-linux-amd64 build-linux-arm64 build-windows-amd64
4343

4444
build-linux-amd64: build-linux-amd64-lifecycle build-linux-amd64-symlinks build-linux-amd64-launcher
4545
build-linux-arm64: build-linux-arm64-lifecycle build-linux-arm64-symlinks build-linux-arm64-launcher
46+
build-freebsd-amd64: build-freebsd-amd64-lifecycle build-freebsd-amd64-symlinks build-freebsd-amd64-launcher
4647
build-windows-amd64: build-windows-amd64-lifecycle build-windows-amd64-symlinks build-windows-amd64-launcher
4748

4849
build-image-linux-amd64: build-linux-amd64 package-linux-amd64
@@ -55,6 +56,11 @@ build-image-linux-arm64: ARCHIVE_PATH=$(BUILD_DIR)/lifecycle-v$(LIFECYCLE_VERSIO
5556
build-image-linux-arm64:
5657
$(GOCMD) run ./tools/image/main.go -daemon -lifecyclePath $(ARCHIVE_PATH) -os linux -arch arm64 -tag lifecycle:$(LIFECYCLE_IMAGE_TAG)
5758

59+
build-image-freebsd-amd64: build-freebsd-amd64 package-freebsd-amd64
60+
build-image-freebsd-amd64: ARCHIVE_PATH=$(BUILD_DIR)/lifecycle-v$(LIFECYCLE_VERSION)+freebsd.x86-64.tgz
61+
build-image-freebsd-amd64:
62+
$(GOCMD) run ./tools/image/main.go -daemon -lifecyclePath $(ARCHIVE_PATH) -os freebsd -arch amd64 -tag lifecycle:$(LIFECYCLE_IMAGE_TAG)
63+
5864
build-image-windows-amd64: build-windows-amd64 package-windows-amd64
5965
build-image-windows-amd64: ARCHIVE_PATH=$(BUILD_DIR)/lifecycle-v$(LIFECYCLE_VERSION)+windows.x86-64.tgz
6066
build-image-windows-amd64:
@@ -64,6 +70,8 @@ build-linux-amd64-lifecycle: $(BUILD_DIR)/linux-amd64/lifecycle/lifecycle
6470

6571
build-linux-arm64-lifecycle: $(BUILD_DIR)/linux-arm64/lifecycle/lifecycle
6672

73+
build-freebsd-amd64-lifecycle: $(BUILD_DIR)/freebsd-amd64/lifecycle/lifecycle
74+
6775
$(BUILD_DIR)/linux-amd64/lifecycle/lifecycle: export GOOS:=linux
6876
$(BUILD_DIR)/linux-amd64/lifecycle/lifecycle: export GOARCH:=amd64
6977
$(BUILD_DIR)/linux-amd64/lifecycle/lifecycle: OUT_DIR?=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle
@@ -82,6 +90,15 @@ $(BUILD_DIR)/linux-arm64/lifecycle/lifecycle:
8290
mkdir -p $(OUT_DIR)
8391
$(GOENV) $(GOBUILD) -o $(OUT_DIR)/lifecycle -a ./cmd/lifecycle
8492

93+
$(BUILD_DIR)/freebsd-amd64/lifecycle/lifecycle: export GOOS:=freebsd
94+
$(BUILD_DIR)/freebsd-amd64/lifecycle/lifecycle: export GOARCH:=amd64
95+
$(BUILD_DIR)/freebsd-amd64/lifecycle/lifecycle: OUT_DIR?=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle
96+
$(BUILD_DIR)/freebsd-amd64/lifecycle/lifecycle: $(GOFILES)
97+
$(BUILD_DIR)/freebsd-amd64/lifecycle/lifecycle:
98+
@echo "> Building lifecycle/lifecycle for $(GOOS)/$(GOARCH)..."
99+
mkdir -p $(OUT_DIR)
100+
$(GOENV) $(GOBUILD) -o $(OUT_DIR)/lifecycle -a ./cmd/lifecycle
101+
85102
build-linux-amd64-launcher: $(BUILD_DIR)/linux-amd64/lifecycle/launcher
86103

87104
$(BUILD_DIR)/linux-amd64/lifecycle/launcher: export GOOS:=linux
@@ -106,6 +123,18 @@ $(BUILD_DIR)/linux-arm64/lifecycle/launcher:
106123
$(GOENV) $(GOBUILD) -o $(OUT_DIR)/launcher -a ./cmd/launcher
107124
test $$(du -m $(OUT_DIR)/launcher|cut -f 1) -le 3
108125

126+
build-freebsd-amd64-launcher: $(BUILD_DIR)/freebsd-amd64/lifecycle/launcher
127+
128+
$(BUILD_DIR)/freebsd-amd64/lifecycle/launcher: export GOOS:=freebsd
129+
$(BUILD_DIR)/freebsd-amd64/lifecycle/launcher: export GOARCH:=amd64
130+
$(BUILD_DIR)/freebsd-amd64/lifecycle/launcher: OUT_DIR?=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle
131+
$(BUILD_DIR)/freebsd-amd64/lifecycle/launcher: $(GOFILES)
132+
$(BUILD_DIR)/freebsd-amd64/lifecycle/launcher:
133+
@echo "> Building lifecycle/launcher for $(GOOS)/$(GOARCH)..."
134+
mkdir -p $(OUT_DIR)
135+
$(GOENV) $(GOBUILD) -o $(OUT_DIR)/launcher -a ./cmd/launcher
136+
test $$(du -m $(OUT_DIR)/launcher|cut -f 1) -le 3
137+
109138
build-linux-amd64-symlinks: export GOOS:=linux
110139
build-linux-amd64-symlinks: export GOARCH:=amd64
111140
build-linux-amd64-symlinks: OUT_DIR?=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle
@@ -134,6 +163,20 @@ build-linux-arm64-symlinks:
134163
ln -sf lifecycle $(OUT_DIR)/creator
135164
ln -sf lifecycle $(OUT_DIR)/extender
136165

166+
build-freebsd-amd64-symlinks: export GOOS:=freebsd
167+
build-freebsd-amd64-symlinks: export GOARCH:=amd64
168+
build-freebsd-amd64-symlinks: OUT_DIR?=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle
169+
build-freebsd-amd64-symlinks:
170+
@echo "> Creating phase symlinks for $(GOOS)/$(GOARCH)..."
171+
ln -sf lifecycle $(OUT_DIR)/detector
172+
ln -sf lifecycle $(OUT_DIR)/analyzer
173+
ln -sf lifecycle $(OUT_DIR)/restorer
174+
ln -sf lifecycle $(OUT_DIR)/builder
175+
ln -sf lifecycle $(OUT_DIR)/exporter
176+
ln -sf lifecycle $(OUT_DIR)/rebaser
177+
ln -sf lifecycle $(OUT_DIR)/creator
178+
ln -sf lifecycle $(OUT_DIR)/extender
179+
137180
build-windows-amd64-lifecycle: $(BUILD_DIR)/windows-amd64/lifecycle/lifecycle.exe
138181

139182
$(BUILD_DIR)/windows-amd64/lifecycle/lifecycle.exe: export GOOS:=windows
@@ -239,6 +282,14 @@ run-syft-linux-arm64:
239282
syft $(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle -o json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle.sbom.syft.json -o spdx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle.sbom.spdx.json -o cyclonedx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle.sbom.cdx.json
240283
syft $(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher -o json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher.sbom.syft.json -o spdx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher.sbom.spdx.json -o cyclonedx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher.sbom.cdx.json
241284

285+
run-syft-freebsd-amd64: install-syft
286+
run-syft-freebsd-amd64: export GOOS:=freebsd
287+
run-syft-freebsd-amd64: export GOARCH:=amd64
288+
run-syft-freebsd-amd64:
289+
@echo "> Running syft..."
290+
syft $(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle -o json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle.sbom.syft.json -o spdx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle.sbom.spdx.json -o cyclonedx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/lifecycle.sbom.cdx.json
291+
syft $(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher -o json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher.sbom.syft.json -o spdx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher.sbom.spdx.json -o cyclonedx-json=$(BUILD_DIR)/$(GOOS)-$(GOARCH)/lifecycle/launcher.sbom.cdx.json
292+
242293
install-syft:
243294
@echo "> Installing syft..."
244295
curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin
@@ -320,6 +371,15 @@ package-linux-arm64:
320371
@echo "> Packaging lifecycle for $(GOOS)/$(GOARCH)..."
321372
$(GOCMD) run $(PACKAGER) --inputDir $(INPUT_DIR) -archivePath $(ARCHIVE_PATH) -descriptorPath $(LIFECYCLE_DESCRIPTOR_PATH) -version $(LIFECYCLE_VERSION)
322373

374+
package-freebsd-amd64: GOOS:=freebsd
375+
package-freebsd-amd64: GOARCH:=amd64
376+
package-freebsd-amd64: INPUT_DIR:=$(BUILD_DIR)$/$(GOOS)-$(GOARCH)$/lifecycle
377+
package-freebsd-amd64: ARCHIVE_PATH=$(BUILD_DIR)$/lifecycle-v$(LIFECYCLE_VERSION)+$(GOOS).x86-64.tgz
378+
package-freebsd-amd64: PACKAGER=.$/tools$/packager$/main.go
379+
package-freebsd-amd64:
380+
@echo "> Packaging lifecycle for $(GOOS)/$(GOARCH)..."
381+
$(GOCMD) run $(PACKAGER) --inputDir $(INPUT_DIR) -archivePath $(ARCHIVE_PATH) -descriptorPath $(LIFECYCLE_DESCRIPTOR_PATH) -version $(LIFECYCLE_VERSION)
382+
323383
package-windows-amd64: GOOS:=windows
324384
package-windows-amd64: GOARCH:=amd64
325385
package-windows-amd64: INPUT_DIR:=$(BUILD_DIR)$/$(GOOS)-$(GOARCH)$/lifecycle

0 commit comments

Comments
 (0)