diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4603ab2ad4cdae60f92885744ebfb78290791bb1..894bb5c983e039b3b6ee767f395f92f97d06dfc1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,18 +1,19 @@ +stages: + - build + - release + - deploy + .default_rules_dev: rules: - if: $CI_PIPELINE_SOURCE == "schedule" when: never - - if: $CI_COMMIT_BRANCH == "develop" - variables: - SERVER_IP: "syslab-cube13-1.fbi.h-da.de" + - if: $CI_COMMIT_BRANCH == "develop" .default_rules_prod: rules: - if: $CI_PIPELINE_SOURCE == "schedule" when: never - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - variables: - SERVER_IP: "syslab-cube13-1.fbi.h-da.de" variables: GOPATH: "${CI_PROJECT_DIR}/.cache" @@ -22,7 +23,7 @@ variables: # build and test stages, unrelated to this article build: - image: golang:1.17 + image: golang:1.16-buster stage: build script: - | @@ -31,8 +32,6 @@ build: GOOS=$os GOARCH=$arch make cross done done - - apt-get -qq -y install curl - - /bin/sh mkrel.sh gnmitarget artifacts: paths: - gnmitarget_* @@ -40,10 +39,11 @@ build: - !reference [.default_rules_dev, rules] - !reference [.default_rules_prod, rules] - if: $CI_COMMIT_TAG + - if: $CI_COMMIT_BRANCH == "test" release: - image: golang:1.17 + image: ubuntu:21.04 stage: release before_script: - apt-get update -qq && apt-get -y -qq install jq xxd curl diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..07c1db28b43f19f6926b4dec13244e924e2f3b88 --- /dev/null +++ b/Makefile @@ -0,0 +1,8 @@ +PROGNAME=gnmitarget +OUTPUT=${PROGNAME}_${CI_COMMIT_TAG}_${GOOS}_${GOARCH} + +# other targets + +cross: + go build -o ${OUTPUT} + sha256sum ${OUTPUT} > ${OUTPUT}.sha256 diff --git a/mkrel.sh b/mkrel.sh new file mode 100755 index 0000000000000000000000000000000000000000..4a0bcf8e702f5d7b69b46adcece1c96d1df770cf --- /dev/null +++ b/mkrel.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -x + +progname=$1 + +baseurl="https://gitlab.fbi.h-da.de/api/v4/projects/${CI_PROJECT_ID}" + +for os in ${OSS}; do + for arch in ${GOARCH}; do + fullname="${progname}_${CI_COMMIT_TAG}_${os}_${arch}" + linkurl="${baseurl}/jobs/${CI_JOB_ID}/artifacts/${fullname}" + linklist="${linklist}{\"name\": \"${fullname}\", \"url\": \"${linkurl}\"}" + linklist="${linklist}{\"name\": \"${fullname}.sha256\", \"url\": \"${linkurl}.sha256\"}" + done +done + +links="[$(echo ${linklist}|sed 's/}{/}, {/g')]" + +descr="$(curl -H \"JOB-TOKEN:\ ${CI_JOB_TOKEN}\" ${baseurl}/repository/tags/${CI_COMMIT_TAG}|jq -r '.message')" + +DATA=" +{ + \"name\": \"${progname} version ${CI_COMMIT_TAG}\", + \"description\": \"${descr}\", + \"tag_name\": \"${CI_COMMIT_TAG}\", + \"assets\": { + \"links\": "${links}" + } +} +" +curl -v -H 'Content-Type: application/json' -X POST -H "JOB-TOKEN: ${CI_JOB_TOKEN}" "${baseurl}/releases" -d "${DATA}"