From 98c54483219cd085fcd8ebc5ae5b3cd60e3cfdd0 Mon Sep 17 00:00:00 2001 From: YZ775 Date: Tue, 31 Oct 2023 04:19:16 +0000 Subject: [PATCH] improve CI Signed-off-by: YZ775 --- .github/workflows/main.yaml | 71 ++++++++++++---------- .github/workflows/release.yaml | 10 +-- Makefile | 9 +-- bin/run-mtest.sh | 2 +- e2e/main_test.go | 11 ---- mtest/Makefile | 26 ++++---- mtest/ignitions/files/etc/sabakan/.gitkeep | 0 7 files changed, 58 insertions(+), 71 deletions(-) delete mode 100644 mtest/ignitions/files/etc/sabakan/.gitkeep diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index ef1b48d3..769296e3 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -8,8 +8,8 @@ env: go-version: "1.20" filename: 'main.yaml' jobs: - build: - name: Build + stacik-check: + name: Staic Check runs-on: ubuntu-22.04 steps: - name: Checkout @@ -20,9 +20,6 @@ jobs: with: go-version: ${{ env.go-version }} - - name: Start etcd container - run: docker run -d --network host gcr.io/etcd-development/etcd:v3.5.7 - - name: Install test tools run: make SUDO="sudo" test-tools @@ -32,30 +29,51 @@ jobs: - name: Run code check tools run: make code-check + unit-test: + name: Unit Test + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup golang + uses: actions/setup-go@v3 + with: + go-version: ${{ env.go-version }} + + - name: Install test tools + run: make SUDO="sudo" test-tools + - name: Build binaries run: make build - - name: Check e2e - run: echo $RUN_E2E + - name: Run test run: make test - - name: Prepare for uploading sabakan binaries - run: | - mkdir /tmp/workspace - cp ./sabakan ./sabactl ./sabakan-cryptsetup /tmp/workspace - cp LICENSE /tmp/workspace + e2e-test: + name: e2e Test + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v3 - - name: Upload sabakan binaries - uses: actions/upload-artifact@v3 + - name: Setup golang + uses: actions/setup-go@v3 with: - name: sabakan-binaries - path: /tmp/workspace - retention-days: 1 + go-version: ${{ env.go-version }} + + - name: Install test tools + run: make SUDO="sudo" test-tools + + - name: Build binaries + run: make build + + - name: Run test + run: make e2e build-image: name: Build Images runs-on: ubuntu-22.04 - needs: build steps: - name: Checkout uses: actions/checkout@v3 @@ -64,25 +82,12 @@ jobs: uses: actions/setup-go@v3 with: go-version: ${{ env.go-version }} - - - name: Download sabakan binaries - uses: actions/download-artifact@v3 - with: - name: sabakan-binaries - path: ./docker - - - name: Build sabakan image - run: docker build -t quay.io/cybozu/sabakan:latest ./docker - - - name: Save Image - run: | - mkdir -p /tmp/docker - docker save quay.io/cybozu/sabakan:latest -o /tmp/docker/image + - name: Build image + run: make docker-build mtest: name: Multi-host test runs-on: ubuntu-22.04 - needs: build steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f8ef52ec..44c84a7e 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -20,15 +20,9 @@ jobs: with: go-version: ${{ env.go-version }} - - name: Build Binaries - run: | - make build - cp LICENSE ./docker - cp ./sabakan ./sabactl ./sabakan-cryptsetup ./docker - - name: Build image - run: docker build -t quay.io/cybozu/sabakan:latest ./docker - + run: make docker-build + - name: Push docker image to Quay.io run: | echo ${{ secrets.QUAY_PASSWORD }} | docker login -u ${{ secrets.QUAY_USER }} --password-stdin quay.io diff --git a/Makefile b/Makefile index 7272a292..b3de66ce 100644 --- a/Makefile +++ b/Makefile @@ -65,10 +65,11 @@ etcd: rm -rf /tmp/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz /tmp/etcd; \ fi -.PHONY: docker-build-local -docker-build-local:build - cp sabactl sabakan sabakan-cryptsetup LICENSE ./docker/ - docker build -t $(IMAGE):$(TAG) ./docker +.PHONY: docker-build +docker-build: build + cp LICENSE ./docker + cp ./sabakan ./sabactl ./sabakan-cryptsetup ./docker + docker build --no-cache -t $(IMAGE):$(TAG) ./docker rm ./docker/sabactl ./docker/sabakan ./docker/sabakan-cryptsetup ./docker/LICENSE .PHONY: setup-cfssl diff --git a/bin/run-mtest.sh b/bin/run-mtest.sh index 088ef5e9..c996d4a4 100755 --- a/bin/run-mtest.sh +++ b/bin/run-mtest.sh @@ -45,7 +45,7 @@ git checkout -qf ${GITHUB_SHA} cd mtest cp /assets/etcd-*.tar.gz . cp /assets/ubuntu-*.img . -make setup +make SUDO="sudo" setup make placemat sleep 3 exec make test TARGET="${TARGET}" diff --git a/e2e/main_test.go b/e2e/main_test.go index b660a63a..1524a2ee 100644 --- a/e2e/main_test.go +++ b/e2e/main_test.go @@ -21,12 +21,6 @@ const ( sabakanTLSKeyFile = "./certs/server.key.insecure" ) -var ci = false - -func init() { - ci = os.Getenv("CI") == "true" -} - func testMain(m *testing.M) (int, error) { stopEtcd := runEtcd() defer func() { @@ -78,11 +72,6 @@ func runEtcd() func() { } func TestMain(m *testing.M) { - if ci { - code := m.Run() - os.Exit(code) - } - if len(os.Getenv("RUN_E2E")) == 0 { os.Exit(0) } diff --git a/mtest/Makefile b/mtest/Makefile index c442b18b..c72d25b2 100644 --- a/mtest/Makefile +++ b/mtest/Makefile @@ -27,7 +27,9 @@ SSH_PRIVKEY = $(realpath ./mtest_key) OUTPUT := ./output COREOS_IMAGE := flatcar_production_qemu_image.img SABAKAN_IMAGE := $(abspath $(OUTPUT))/sabakan.img -SABAKAN_IMAGE_URL := quay.io/cybozu/sabakan:dev +SABAKAN_IMAGE_NAME := quay.io/cybozu/sabakan +SABAKAN_IMAGE_TAG := dev +SABAKAN_IMAGE_URL := $(SABAKAN_IMAGE_NAME):$(SABAKAN_IMAGE_TAG) CT := $(abspath $(OUTPUT))/ct ETCD := $(abspath $(OUTPUT))/etcd ETCDCTL := $(abspath $(OUTPUT))/etcdctl @@ -90,11 +92,7 @@ $(OUTPUT)/etcd $(OUTPUT)/etcdctl: $(ETCD_ARCHIVE) touch $@ $(OUTPUT)/sabakan.img: - GOBIN=$(shell pwd)/../docker CGO_ENABLED=0 go install ../pkg/sabakan - GOBIN=$(shell pwd)/../docker CGO_ENABLED=0 go install ../pkg/sabakan-cryptsetup - GOBIN=$(shell pwd)/../docker CGO_ENABLED=0 go install ../pkg/sabactl - cp ../LICENSE $(shell pwd)/../docker - sudo docker build --no-cache --rm=false -t $(SABAKAN_IMAGE_URL) ../docker/ + make -C ../ IMG=$(SABAKAN_IMAGE_NAME) TAG=$(SABAKAN_IMAGE_TAG) docker-build mkdir -p $(OUTPUT) sudo docker save $(SABAKAN_IMAGE_URL) > $@ @@ -121,8 +119,8 @@ $(OUTPUT)/host.ign: host-ign.yml $(CT) $(OUTPUT)/host1.ign: $(OUTPUT)/host.ign $(CERTS) sed -e 's/__BRIDGE_ADDRESS__/$(BRIDGE_ADDRESS)/' \ - -e 's@__SERVER_CERT__@$(SERVER_CERT)@' \ - -e 's@__SERVER_KEY__@$(SERVER_KEY)@' \ + -e 's@__SERVER_CERT__@$(shell cat ./output/certs/server.crt)@' \ + -e 's@__SERVER_KEY__@$(shell cat ./output/certs/server.key.insecure)@' \ -e 's/__HOST_NAME__/host1/' \ -e 's/__HOST1__/$(HOST1)/' \ -e 's/__HOST__/$(HOST1)/g' \ @@ -130,8 +128,8 @@ $(OUTPUT)/host1.ign: $(OUTPUT)/host.ign $(CERTS) $(OUTPUT)/host2.ign: $(OUTPUT)/host.ign $(CERTS) sed -e 's/__BRIDGE_ADDRESS__/$(BRIDGE_ADDRESS)/' \ - -e 's@__SERVER_CERT__@$(SERVER_CERT)@' \ - -e 's@__SERVER_KEY__@$(SERVER_KEY)@' \ + -e 's@__SERVER_CERT__@$(shell cat ./output/certs/server.crt)@' \ + -e 's@__SERVER_KEY__@$(shell cat ./output/certs/server.key.insecure)@' \ -e 's/__HOST_NAME__/host2/' \ -e 's/__HOST1__/$(HOST1)/' \ -e 's/__HOST__/$(HOST2)/g' \ @@ -139,8 +137,8 @@ $(OUTPUT)/host2.ign: $(OUTPUT)/host.ign $(CERTS) $(OUTPUT)/host3.ign: $(OUTPUT)/host.ign $(CERTS) sed -e 's/__BRIDGE_ADDRESS__/$(BRIDGE_ADDRESS)/' \ - -e 's@__SERVER_CERT__@$(SERVER_CERT)@' \ - -e 's@__SERVER_KEY__@$(SERVER_KEY)@' \ + -e 's@__SERVER_CERT__@$(shell cat ./output/certs/server.crt)@' \ + -e 's@__SERVER_KEY__@$(shell cat ./output/certs/server.key.insecure)@' \ -e 's/__HOST_NAME__/host3/' \ -e 's/__HOST1__/$(HOST1)/' \ -e 's/__HOST__/$(HOST3)/g' \ @@ -151,10 +149,9 @@ $(OUTPUT)/readnvram: $(CERTS): cd ./certs && ./gencerts.sh - $(eval SERVER_CERT := $(shell cat ./certs/server.crt)) - $(eval SERVER_KEY := $(shell cat ./certs/server.key.insecure)) $(IGNITIONS)/files/etc/sabakan/sabakan-tls-ca.crt: $(CERTS) + mkdir -p $(IGNITIONS)/files/etc/sabakan cp $(OUTPUT)/certs/ca.crt $(IGNITIONS)/files/etc/sabakan/sabakan-tls-ca.crt # Targets @@ -184,3 +181,4 @@ clean: .PHONY: setup setup: go install github.com/onsi/ginkgo/v2/ginkgo + sudo make -C ../ setup-cfssl diff --git a/mtest/ignitions/files/etc/sabakan/.gitkeep b/mtest/ignitions/files/etc/sabakan/.gitkeep deleted file mode 100644 index e69de29b..00000000