diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6e281c4fa94f65595038ebdc89398733bccfd86..fca1533976035d8df8ec6a37648616156cc347fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,10 +10,9 @@ stages: - analyze - apply - integration-test - - deploy + - build-release - .post - include: - local: '/.gitlab/ci/.build-container.yml' - local: '/.gitlab/ci/.code-quality-ci.yml' @@ -22,4 +21,4 @@ include: - local: '/.gitlab/ci/.containerlab-ci.yml' - local: '/.gitlab/ci/.integration-test.yml' - local: '/.gitlab/ci/.uml-autogen-ci.yml' -# - local: '/.gitlab/ci/.deploy-k8s.yml' + - local: '/.gitlab/ci/.build-release.yml' diff --git a/.gitlab/ci/.build-container.yml b/.gitlab/ci/.build-container.yml index 189e34f47c492cf28bb895130e1882df4e955134..d948433abc50ff82f4abf39ebef2953c0aa4543a 100644 --- a/.gitlab/ci/.build-container.yml +++ b/.gitlab/ci/.build-container.yml @@ -19,7 +19,7 @@ build-testing-image: TAG: latest - if: $CI_COMMIT_BRANCH == "develop" variables: - TAG: develop + TAG: $CI_COMMIT_BRANCH BUILDARGS: -race - when: always script: @@ -40,7 +40,7 @@ build-image: when: never - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH variables: - TAG: latest + TAG: $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH == "develop" variables: TAG: develop @@ -57,5 +57,3 @@ build-image: --destination "$GOSDN_IMAGE" --destination "$CI_REGISTRY_IMAGE:$TAG" <<: *build - - #--build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" diff --git a/.gitlab/ci/.build-release.yml b/.gitlab/ci/.build-release.yml new file mode 100644 index 0000000000000000000000000000000000000000..e671eb527b66ead794eba0bd3f2fa22f7c0fdda2 --- /dev/null +++ b/.gitlab/ci/.build-release.yml @@ -0,0 +1,86 @@ +.build-release-docker: &build-release-docker + stage: build-release + image: + name: gcr.io/kaniko-project/executor:debug + entrypoint: [ "" ] + rules: + # TODO: Implement later when we need it + #- if: $CI_COMMIT_TAG =~ .+ && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + # variables: + # TAG: $CI_COMMIT_TAG + # when: on_success + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + variables: + TAG: $CI_DEFAULT_BRANCH + when: on_success + - when: never + before_script: + # replace all slashes in the tag with hyphen, because slashes are not allowed in tags + - TAG=${TAG//\//-} + - mkdir -p /kaniko/.docker + - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"},\"$CI_DEPENDENCY_PROXY_SERVER\":{\"username\":\"$CI_DEPENDENCY_PROXY_USER\",\"password\":\"$CI_DEPENDENCY_PROXY_TOKEN\"}}}" > /kaniko/.docker/config.json + +build-release-image: + script: + - /kaniko/executor + --cache=true + --context "$CI_PROJECT_DIR" + --dockerfile "Dockerfile" + --build-arg "GOLANG_VERSION=$GOLANG_VERSION" + --build-arg "BUILDARGS=$BUILDARGS" + --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" + --destination "$GOSDN_IMAGE" + --destination "$CI_REGISTRY_IMAGE:$TAG" + - /kaniko/executor + --cache=true + --context "$CI_PROJECT_DIR" + --dockerfile "Dockerfile" + --build-arg "GOLANG_VERSION=$GOLANG_VERSION" + --build-arg "BUILDARGS=$BUILDARGS" + --build-arg "GITLAB_PROXY=${CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX}/" + --destination "$GOSDN_IMAGE" + --destination "$CI_REGISTRY_IMAGE:latest" + <<: *build-release-docker + + +.build-release-binary: &build-release-binary + stage: build-release + image: + name: ${GITLAB_PROXY}golang:$GOLANG_VERSION + rules: + # TODO: Implement later when we need it + #- if: $CI_COMMIT_TAG =~ .+ && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + # variables: + # TAG: $CI_COMMIT_TAG + # when: on_success + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + variables: + TAG: $CI_DEFAULT_BRANCH + when: on_success + - if: $CI_COMMIT_BRANCH == "develop" + variables: + TAG: $CI_COMMIT_BRANCH + when: on_success + - when: never + +build-release-linux: + script: + - GOOS=linux go build ./cmd/gosdn + - mv gosdn gosdn-$TAG + - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file gosdn-$TAG "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/gosdn/$TAG/gosdn-$TAG-linux"' + artifacts: + paths: + - gosdn-$TAG + expire_in: 4 weeks + <<: *build-release-binary + +build-release-freebsd: + script: + - GOOS=freebsd go build ./cmd/gosdn + - mv gosdn gosdn-$TAG + - - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file gosdn-$TAG "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/gosdn/$TAG/gosdn-$TAG-freebsd"' + artifacts: + paths: + - gosdn-$TAG + expire_in: 4 weeks + <<: *build-release-binary \ No newline at end of file