diff --git a/.common-ci.yml b/.common-ci.yml index 40fc68e0..369c06a2 100644 --- a/.common-ci.yml +++ b/.common-ci.yml @@ -20,23 +20,29 @@ default: variables: IMAGE: "${CI_REGISTRY_IMAGE}" IMAGE_TAG: "${CI_COMMIT_REF_SLUG}" + BUILDIMAGE: "${CI_REGISTRY_IMAGE}/build:${CI_COMMIT_SHORT_SHA}" + +stages: + - image + - lint + - go-checks + - go-build + - unit-tests + - build + - build-long + - scan + - release build-dev-image: stage: image - before_script: - - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" script: - apk --no-cache add make bash - make .build-image + - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" - make .push-build-image .requires-build-image: - variables: - SKIP_IMAGE_BUILD: "yes" - before_script: - - apk --no-cache add make bash - - docker login -u "${CI_REGISTRY_USER}" -p "${CI_REGISTRY_PASSWORD}" "${CI_REGISTRY}" - - make .pull-build-image + image: "${BUILDIMAGE}" .go-check: extends: @@ -47,45 +53,45 @@ fmt: extends: - .go-check script: - - make docker-assert-fmt + - make assert-fmt vet: extends: - .go-check script: - - make docker-vet + - make vet lint: extends: - .go-check script: - - make docker-lint + - make lint allow_failure: true ineffassign: extends: - .go-check script: - - make docker-ineffassign + - make ineffassign allow_failure: true misspell: extends: - .go-check script: - - make docker-misspell + - make misspell go-build: extends: - .requires-build-image stage: go-build script: - - make docker-build + - make build unit-tests: extends: - .requires-build-image stage: unit-tests script: - - make docker-coverage + - make coverage diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ac26c474..423f3782 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,17 +15,6 @@ include: - .common-ci.yml -stages: - - image - - go-checks - - go-build - - unit-tests - - test - - scan - - release - - build-one - - build-all - .build-setup: before_script: - apk update @@ -42,7 +31,7 @@ stages: .build-one-setup: extends: - .build-setup - stage: build-one + stage: build rules: - if: $CI_MERGE_REQUEST_ID @@ -59,7 +48,7 @@ stages: .build-all-setup: extends: - .build-setup - stage: build-all + stage: build-long timeout: 2h 30m rules: - if: $CI_COMMIT_TAG diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index b78c492e..33d48894 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -19,8 +19,7 @@ where `TARGET` is a make target that is valid for each of the sub-components. These include: * `ubuntu18.04-amd64` -* `docker-all` -with the later generating for all supported distribution and platform combinations. +* `centos8-x86_64` The packages are generated in the `dist` folder. @@ -33,62 +32,14 @@ environment variables. ## Testing packages locally -### Ubuntu - -Launch a docker container: - -``` -docker run --rm -it \ - -v $(pwd):/work \ - -v $(pwd)/dist/ubuntu18.04/amd64:/local-repository \ - -w /work \ - ubuntu:18.04 -``` +The [test/release](./test/release/) folder contains documentation on how the installation of local or staged packages can be tested. -``` -apt-get update && apt-get install -y apt-utils -``` +## Releasing +A utility script [`scripts/release.sh`](./scripts/release.sh) is provided to build +packages required for release. If run without arguments, all supported distribution-architecture combinations are built. A specific distribution-architecture pair can also be provided +```sh +./scripts/release.sh ubuntu18.04-amd64 ``` -echo "deb [trusted=yes] file:/local-repository/ ./" > /etc/apt/sources.list.d/local.list -``` - -``` -cd /local-repository && apt-ftparchive packages . > Packages -``` - -``` -apt-get update -``` - - - -### Centos - -``` -docker run --rm -it \ - -v $(pwd):/work \ - -v $(pwd)/dist/centos8/x86_64:/local-repository \ - -w /work \ - centos:8 -``` - -``` -yum install -y createrepo -``` - -``` -createrepo /local-repository -``` - -``` -cat >/etc/yum.repos.d/local.repo <