diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1e2c51b8ca0a3b800172a86967ecc287a73c69c0..169935a843baf31ac9c9a4ba201836138729b273 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,36 +1,73 @@ stages: - build + - release variables: IMAGE_PATH: "${CI_REGISTRY_IMAGE}" .build: &build - stage: build - image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest - services: - - name: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest - alias: docker - variables: - TAG: $CI_COMMIT_SHA - DOCKER_TLS_CERTDIR: "/certs" - before_script: - - apk add git - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker login -u $CI_DEPENDENCY_PROXY_USER -p $CI_DEPENDENCY_PROXY_PASSWORD $CI_DEPENDENCY_PROXY_SERVER - - docker context create multi-arch-build - - docker buildx create multi-arch-build --name mybuilder --bootstrap --use - needs: [] + stage: build + image: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest + services: + - name: ${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/docker:latest + alias: docker + variables: + TAG: $CI_COMMIT_SHA + DOCKER_TLS_CERTDIR: "/certs" + before_script: + - apk add git + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker login -u $CI_DEPENDENCY_PROXY_USER -p $CI_DEPENDENCY_PROXY_PASSWORD $CI_DEPENDENCY_PROXY_SERVER + - docker context create multi-arch-build + - docker buildx create multi-arch-build --name mybuilder --bootstrap --use + needs: [] build-gnmi-target-ubuntu: - script: - - TAG=${CI_COMMIT_BRANCH//\//-} - - IMAGE_NAME="$IMAGE_PATH/ubuntu" - - docker buildx build --provenance=false -t "$IMAGE_NAME:$TAG" -f examples/example01/target.Dockerfile --platform linux/amd64,linux/arm64 --target "ubuntu" --push --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" . - <<: *build + script: + - TAG=${CI_COMMIT_BRANCH//\//-} + - IMAGE_NAME="$IMAGE_PATH/ubuntu" + - docker buildx build --provenance=false -t "$IMAGE_NAME:$TAG" -f examples/example01/target.Dockerfile --platform linux/amd64,linux/arm64 --target "ubuntu" --push --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" . + <<: *build build-gnmi-target-debian: - script: - - TAG=${CI_COMMIT_BRANCH//\//-} - - IMAGE_NAME="$IMAGE_PATH/debian" - - docker buildx build --provenance=false -t "$IMAGE_NAME:$TAG" -f examples/example01/target.Dockerfile --platform linux/amd64,linux/arm64 --target "debian" --push --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" . - <<: *build + script: + - TAG=${CI_COMMIT_BRANCH//\//-} + - IMAGE_NAME="$IMAGE_PATH/debian" + - docker buildx build --provenance=false -t "$IMAGE_NAME:$TAG" -f examples/example01/target.Dockerfile --platform linux/amd64,linux/arm64 --target "debian" --push --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" . + <<: *build + +release: + stage: release + image: docker:stable + services: + - docker:dind + + variables: + # Optionally use GitLab's built-in image registry. + DOCKER_REGISTRY: $CI_REGISTRY + DOCKER_USERNAME: $CI_REGISTRY_USER + DOCKER_PASSWORD: $CI_REGISTRY_PASSWORD + + # Disable shallow cloning so that goreleaser can diff between tags to + # generate a changelog. + GIT_DEPTH: 0 + + # Only run this release job for tags, not every commit (for example). + only: + refs: + - tags + + script: | + # GITLAB_TOKEN is needed to create GitLab releases. + # CI_JOB_TOKEN is needed if use_job_token is set. + # DOCKER_* are needed to push Docker images. + docker run --rm --privileged \ + -v $PWD:/go/src/gitlab.com/YourGitLabUser/YourGitLabRepo \ + -w /go/src/gitlab.com/YourGitLabUser/YourGitLabRepo \ + -v /var/run/docker.sock:/var/run/docker.sock \ + -e DOCKER_USERNAME \ + -e DOCKER_PASSWORD \ + -e DOCKER_REGISTRY \ + -e GITLAB_TOKEN \ + -e CI_JOB_TOKEN \ + goreleaser/goreleaser release --clean diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000000000000000000000000000000000000..7ad42096809ad80fedbd8a6af348c953089a8416 --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,72 @@ +project_name: gnmi-target + +# .goreleaser.yml +gitlab_urls: + api: https://code.fbi.h-da.de/api/v4/ + download: https://code.fbi.h-da.de + + # set to true if you use a self-signed certificate + skip_tls_verify: false + + # set to true if you want to upload to the Package Registry rather than attachments + # Only works with GitLab 13.5+ + # + # Since: v1.3 + use_package_registry: true + + # Set this if you set GITLAB_TOKEN to the value of CI_JOB_TOKEN. + # + # Since: v1.11 + use_job_token: true + +builds: + - env: [CGO_ENABLED=0] + goos: + - linux + goarch: + - amd64 + - arm64 + dir: . + main: ./examples/example01 + +dockers: + - dockerfile: "examples/example01/target.Dockerfile" + - image_templates: + - "registry.code.fbi.h-da.de/danet/gnmi-target/ubuntu:{{ .Tag }}" + use: buildx + build_flag_templates: + - "--provenance=false" + - "--platform linux/amd64,linux/arm64" + - '--target "ubuntu"' + - "--push" + - '--build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/"' + + - image_templates: + - "registry.code.fbi.h-da.de/danet/gnmi-target/ubuntu:latest" + use: buildx + build_flag_templates: + - "--provenance=false" + - "--platform linux/amd64,linux/arm64" + - '--target "ubuntu"' + - "--push" + - '--build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/"' + + - image_templates: + - "registry.code.fbi.h-da.de/danet/gnmi-target/debian:{{ .Tag }}" + use: buildx + build_flag_templates: + - "--provenance=false" + - "--platform linux/amd64,linux/arm64" + - '--target "debian"' + - "--push" + - '--build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/"' + + - image_templates: + - "registry.code.fbi.h-da.de/danet/gnmi-target/debian:latest" + use: buildx + build_flag_templates: + - "--provenance=false" + - "--platform linux/amd64,linux/arm64" + - '--target "debian"' + - "--push" + - '--build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/"'