diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31aa2ab6..f72df571 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,29 @@ env: DEBIAN_FRONTEND: noninteractive jobs: + unit-test: + name: "Unit Tests (Debian 13)" + runs-on: ubuntu-22.04 + continue-on-error: false + timeout-minutes: 30 + steps: + - name: "Checkout Repository" + uses: actions/checkout@v4 + with: + # fetch the whole repo for `git describe` to work + fetch-depth: 0 + - name: "Docker Image" + run: | + make docker-image + - name: "Unit Test" + run: | + make docker-unit-tests + - name: "Upload Code Coverage" + uses: codecov/codecov-action@v2 + with: + token: ${{ secrets.CODECOV_TOKEN }} + files: unit.out + test: name: "Test (Ubuntu 22.04)" runs-on: ubuntu-22.04 @@ -63,18 +86,6 @@ jobs: with: directory: ${{ runner.temp }} - - name: "Run Unit Tests" - env: - RUN_LONG_TESTS: 'yes' - AZURE_STORAGE_ENDPOINT: "http://127.0.0.1:10000/devstoreaccount1" - AZURE_STORAGE_ACCOUNT: "devstoreaccount1" - AZURE_STORAGE_ACCESS_KEY: "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" - AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - run: | - sudo mkdir -p /srv ; sudo chown runner /srv - COVERAGE_DIR=${{ runner.temp }} make test - - name: "Run Benchmark" run: | COVERAGE_DIR=${{ runner.temp }} make bench @@ -94,7 +105,7 @@ jobs: - name: "Merge Code Coverage" run: | go install github.com/wadey/gocovmerge@v0.0.0-20160331181800-b5bfa59ec0ad - ~/go/bin/gocovmerge unit.out ${{ runner.temp }}/*.out > coverage.txt + ~/go/bin/gocovmerge ${{ runner.temp }}/*.out > coverage.txt - name: "Upload Code Coverage" uses: codecov/codecov-action@v2 @@ -104,7 +115,8 @@ jobs: ci-debian-build: name: "Build" - needs: test + needs: + - test runs-on: ubuntu-latest strategy: fail-fast: false @@ -224,7 +236,9 @@ jobs: ci-binary-build: name: "Build" - needs: test + needs: + - unit-test + - test runs-on: ubuntu-latest strategy: matrix: diff --git a/Makefile b/Makefile index dc1973d1..9e7cbaa8 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ GOOS=$(shell go env GOHOSTOS) GOARCH=$(shell go env GOHOSTARCH) export PODMAN_USERNS = keep-id -DOCKER_RUN = docker run --security-opt label=disable -it --user 0:0 --rm -v ${PWD}:/work/src +DOCKER_RUN = docker run --security-opt label=disable --user 0:0 --rm -v ${PWD}:/work/src # Setting TZ for certificates export TZ=UTC @@ -185,16 +185,16 @@ docker-image-no-cache: ## Build aptly-dev docker image (no cache) @docker build --no-cache -f system/Dockerfile . -t aptly-dev docker-build: ## Build aptly in docker container - @$(DOCKER_RUN) aptly-dev /work/src/system/docker-wrapper build + @$(DOCKER_RUN) -t aptly-dev /work/src/system/docker-wrapper build docker-shell: ## Run aptly and other commands in docker container - @$(DOCKER_RUN) -p 3142:3142 aptly-dev /work/src/system/docker-wrapper || true + @$(DOCKER_RUN) -it -p 3142:3142 aptly-dev /work/src/system/docker-wrapper || true docker-deb: ## Build debian packages in docker container - @$(DOCKER_RUN) aptly-dev /work/src/system/docker-wrapper dpkg DEBARCH=amd64 + @$(DOCKER_RUN) -t aptly-dev /work/src/system/docker-wrapper dpkg DEBARCH=amd64 -docker-unit-test: ## Run unit tests in docker container (add TEST=regex to specify which tests to run) - @$(DOCKER_RUN) aptly-dev /work/src/system/docker-wrapper \ +docker-unit-tests: ## Run unit tests in docker container (add TEST=regex to specify which tests to run) + $(DOCKER_RUN) -t aptly-dev /work/src/system/docker-wrapper \ azurite-start \ AZURE_STORAGE_ENDPOINT=http://127.0.0.1:10000/devstoreaccount1 \ AZURE_STORAGE_ACCOUNT=devstoreaccount1 \ @@ -203,7 +203,7 @@ docker-unit-test: ## Run unit tests in docker container (add TEST=regex to spec azurite-stop docker-system-test: ## Run system tests in docker container (add TEST=t04_mirror or TEST=UpdateMirror26Test to run only specific tests) - @$(DOCKER_RUN) aptly-dev /work/src/system/docker-wrapper \ + @$(DOCKER_RUN) -t aptly-dev /work/src/system/docker-wrapper \ azurite-start \ AZURE_STORAGE_ENDPOINT=http://127.0.0.1:10000/devstoreaccount1 \ AZURE_STORAGE_ACCOUNT=devstoreaccount1 \ @@ -214,16 +214,16 @@ docker-system-test: ## Run system tests in docker container (add TEST=t04_mirro azurite-stop docker-serve: ## Run development server (auto recompiling) on http://localhost:3142 - @$(DOCKER_RUN) -p 3142:3142 -v /tmp/cache-go-aptly:/var/lib/aptly/.cache/go-build aptly-dev /work/src/system/docker-wrapper serve || true + @$(DOCKER_RUN) -it -p 3142:3142 -v /tmp/cache-go-aptly:/var/lib/aptly/.cache/go-build aptly-dev /work/src/system/docker-wrapper serve || true docker-lint: ## Run golangci-lint in docker container - @$(DOCKER_RUN) aptly-dev /work/src/system/docker-wrapper lint + @$(DOCKER_RUN) -t aptly-dev /work/src/system/docker-wrapper lint docker-binaries: ## Build binary releases (FreeBSD, macOS, Linux generic) in docker container - @$(DOCKER_RUN) aptly-dev /work/src/system/docker-wrapper binaries + @$(DOCKER_RUN) -t aptly-dev /work/src/system/docker-wrapper binaries docker-man: ## Create man page in docker container - @$(DOCKER_RUN) aptly-dev /work/src/system/docker-wrapper man + @$(DOCKER_RUN) -t aptly-dev /work/src/system/docker-wrapper man mem.png: mem.dat mem.gp gnuplot mem.gp @@ -240,4 +240,4 @@ clean: ## remove local build and module cache rm -f unit.out aptly.test VERSION docs/docs.go docs/swagger.json docs/swagger.yaml docs/swagger.conf find system/ -type d -name __pycache__ -exec rm -rf {} \; 2>/dev/null || true -.PHONY: help man prepare swagger version binaries build docker-release docker-system-test docker-unit-test docker-lint docker-build docker-image docker-man docker-shell docker-serve clean releasetype dpkg serve flake8 +.PHONY: help man prepare swagger version binaries build docker-release docker-system-tests docker-unit-test docker-lint docker-build docker-image docker-man docker-shell docker-serve clean releasetype dpkg serve flake8