This adds two new CI jobs that run when a new tag is pushed to this repo: one to tar up the vendored dependencies and another one to push the tarball as an asset in a new gitlab "release" for the tag. fixes: #5
64 lines
2.0 KiB
YAML
64 lines
2.0 KiB
YAML
---
|
|
|
|
# global settings
|
|
image: alpine:edge
|
|
|
|
variables:
|
|
GOFLAGS: "-buildvcs=false"
|
|
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/mkinitfs-vendor-${CI_COMMIT_TAG}/${CI_COMMIT_TAG}"
|
|
|
|
stages:
|
|
- lint
|
|
- build
|
|
- vendor
|
|
- release
|
|
|
|
# defaults for "only"
|
|
# We need to run the CI jobs in a "merge request specific context", if CI is
|
|
# running in a merge request. Otherwise the environment variable that holds the
|
|
# merge request ID is not available. This means, we must set the "only"
|
|
# variable accordingly - and if we only do it for one job, all other jobs will
|
|
# not get executed. So have the defaults here, and use them in all jobs that
|
|
# should run on both the master branch, and in merge requests.
|
|
# https://docs.gitlab.com/ee/ci/merge_request_pipelines/index.html#excluding-certain-jobs
|
|
.only-default: &only-default
|
|
only:
|
|
- master
|
|
- merge_requests
|
|
- tags
|
|
|
|
build:
|
|
stage: build
|
|
<<: *only-default
|
|
before_script:
|
|
- apk -q add go staticcheck make scdoc
|
|
script:
|
|
- make test
|
|
- make
|
|
artifacts:
|
|
expire_in: 1 week
|
|
|
|
vendor:
|
|
stage: vendor
|
|
image: alpine:latest
|
|
only:
|
|
- tags
|
|
before_script:
|
|
- apk -q add curl go make
|
|
script:
|
|
- |
|
|
make VERSION="${CI_COMMIT_TAG}" vendor
|
|
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "mkinitfs-vendor-${CI_COMMIT_TAG}.tar.gz" "${PACKAGE_REGISTRY_URL}/"
|
|
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "mkinitfs-vendor-${CI_COMMIT_TAG}.tar.gz.sha512" "${PACKAGE_REGISTRY_URL}/"
|
|
|
|
release:
|
|
stage: release
|
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
only:
|
|
- tags
|
|
script:
|
|
- |
|
|
release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
|
|
--assets-link "{\"name\":\"mkinitfs-vendor-${CI_COMMIT_TAG}.tar.gz\",\"url\":\"${PACKAGE_REGISTRY_URL}/mkinitfs-vendor-${CI_COMMIT_TAG}.tar.gz\"}" \
|
|
--assets-link "{\"name\":\"mkinitfs-vendor-${CI_COMMIT_TAG}.tar.gz.sha512\",\"url\":\"${PACKAGE_REGISTRY_URL}/mkinitfs-vendor-${CI_COMMIT_TAG}.tar.gz.sha512\"}"
|