diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a31d0b1f895bd5c542af508a1b68cc6bdd0a7463..4603ab2ad4cdae60f92885744ebfb78290791bb1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,16 +1,10 @@ -stages: - - build - - deploy - .default_rules_dev: rules: - if: $CI_PIPELINE_SOURCE == "schedule" when: never - if: $CI_COMMIT_BRANCH == "develop" variables: - DOCKER_SERVER_IP: "syslab-cube13-1.fbi.h-da.de" - TAG: "$CI_REGISTRY_IMAGE:develop" - + SERVER_IP: "syslab-cube13-1.fbi.h-da.de" .default_rules_prod: rules: @@ -18,63 +12,46 @@ stages: when: never - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: - DOCKER_SERVER_IP: "syslab-cube13-1.fbi.h-da.de" - TAG: "$CI_REGISTRY_IMAGE:latest" - + SERVER_IP: "syslab-cube13-1.fbi.h-da.de" -.build_template: &build_template - image: docker:latest - variables: - DOCKER_TLS_CERTDIR: "/certs" - services: - - name: docker:dind - command: - - "--experimental" - tags: - - buildx - retry: 2 - before_script: - - mkdir -p ~/.docker/cli-plugins - - wget -q -O ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/v0.6.3/buildx-v0.6.3.linux-amd64 - - chmod a+x ~/.docker/cli-plugins/docker-buildx - - docker context create builder$CI_JOB_ID - - docker buildx create builder$CI_JOB_ID --use - - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY +variables: + GOPATH: "${CI_PROJECT_DIR}/.cache" + GOARCH: "amd64 arm64" + OSS: "linux freebsd" +# build and test stages, unrelated to this article -.deploy_tmpl: &deploy_tmpl - image: tiangolo/docker-with-compose - before_script: - - apk add --no-cache openssl - - unset DOCKER_HOST - - install -m 700 -d ~/.ssh - - eval $(ssh-agent -s) - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts - - docker context create --docker "host=ssh://${SSH_USER}@${DOCKER_SERVER_IP}" server01 - - docker context use server01 - - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY - - echo "IMAGE=${TAG}" > .env - - -build:image: - extends: .build_template +build: + image: golang:1.17 stage: build script: - - docker buildx build --platform linux/amd64,linux/arm64 -t $TAG -f Dockerfile --push . + - | + for os in ${OSS}; do + for arch in ${GOARCH}; do + GOOS=$os GOARCH=$arch make cross + done + done + - apt-get -qq -y install curl + - /bin/sh mkrel.sh gnmitarget + artifacts: + paths: + - gnmitarget_* rules: - !reference [.default_rules_dev, rules] - !reference [.default_rules_prod, rules] + - if: $CI_COMMIT_TAG -deploy:target: - extends: .deploy_tmpl - stage: deploy +release: + image: golang:1.17 + stage: release + before_script: + - apt-get update -qq && apt-get -y -qq install jq xxd curl script: - - ls -al - - docker-compose -p target-${CI_COMMIT_BRANCH} --context server01 rm -f -s - - docker-compose -p target-${CI_COMMIT_BRANCH} --context server01 pull - - docker-compose -p target-${CI_COMMIT_BRANCH} --context server01 up -d + - /bin/sh mkrel.sh gnmitarget + artifacts: + expire_in: 365 days + paths: + - gnmitarget_* rules: - - !reference [.default_rules_dev, rules] - - !reference [.default_rules_prod, rules] + - if: $CI_COMMIT_TAG diff --git a/ci/.deploy-container-ci.yml b/ci/.deploy-container-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..ad50bddeb6be964f0bfb72e8664226657cabfdeb --- /dev/null +++ b/ci/.deploy-container-ci.yml @@ -0,0 +1,56 @@ +.build_template: &build_template + image: docker:latest + variables: + DOCKER_TLS_CERTDIR: "/certs" + services: + - name: docker:dind + command: + - "--experimental" + tags: + - buildx + retry: 2 + before_script: + - mkdir -p ~/.docker/cli-plugins + - wget -q -O ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/v0.6.3/buildx-v0.6.3.linux-amd64 + - chmod a+x ~/.docker/cli-plugins/docker-buildx + - docker context create builder$CI_JOB_ID + - docker buildx create builder$CI_JOB_ID --use + - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY + + +.deploy_tmpl: &deploy_tmpl + image: tiangolo/docker-with-compose + before_script: + - apk add --no-cache openssl + - unset DOCKER_HOST + - install -m 700 -d ~/.ssh + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - + - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts + - docker context create --docker "host=ssh://${SSH_USER}@${DOCKER_SERVER_IP}" server01 + - docker context use server01 + - echo "$CI_REGISTRY_PASSWORD" | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY + - echo "IMAGE=${TAG}" > .env + + +build:image: + extends: .build_template + stage: build + script: + - docker buildx build --platform linux/amd64,linux/arm64 -t $TAG -f Dockerfile --push . + rules: + - !reference [.default_rules_dev, rules] + - !reference [.default_rules_prod, rules] + + +deploy:target: + extends: .deploy_tmpl + stage: deploy + script: + - ls -al + - docker-compose -p target-${CI_COMMIT_BRANCH} --context server01 rm -f -s + - docker-compose -p target-${CI_COMMIT_BRANCH} --context server01 pull + - docker-compose -p target-${CI_COMMIT_BRANCH} --context server01 up -d + rules: + - !reference [.default_rules_dev, rules] + - !reference [.default_rules_prod, rules] diff --git a/docker-compose.yaml b/docker-compose.yaml deleted file mode 100644 index 53f99c36eec43dcd0a7eb9d51c90f780e11df7c0..0000000000000000000000000000000000000000 --- a/docker-compose.yaml +++ /dev/null @@ -1,15 +0,0 @@ -version: "3.8" - -services: - gnmi-target: - image: ${IMAGE} - volumes: - - "/proc:/host/proc" - - "/sys:/host/sys" - - "/etc:/host/etc" - - "config-data:/data" - privileged: true - network_mode: "host" - -volumes: - config-data: