-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.gitlab-ci.yml
167 lines (154 loc) · 5.66 KB
/
.gitlab-ci.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
stages:
- build
- test
- deploy
variables:
PACKAGENAME: 'lethean-chain'
VERSIONCOMPONENTTOINCREMENT: '-p'
# -M = Major (first position), -m = minor (second position), -p = patch (third position)
TEST_DISABLED: 1
Docker Hub:
stage: deploy
image: docker
services:
- name: docker:dind
command: [ "--experimental" ]
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- docker build --squash --build-arg COMPILE=1 -t lthn/chain .
- docker push "lthn/chain"
environment:
name: docker.io
only:
- main
Docker Image:
stage: build
image: docker
interruptible: true
variables:
DOCKER_HOST: tcp://docker:2375
services:
- name: docker:dind
command: [ "--experimental" ]
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
script:
- docker build --squash --build-arg COMPILE=1 --cache-from $CI_REGISTRY_IMAGE -t $CI_REGISTRY_IMAGE .
- docker push $CI_REGISTRY_IMAGE
MacOS:
image: lthn/build:lthn-wallet-linux
stage: build
interruptible: true
only:
- main
script:
- make release-static-macos-x86_64
- cp build/release/macos-x86_64.tar.gz ./
artifacts:
name: lethean-chain-macos-x86_64
expose_as: 'MacOS'
paths:
- macos-x86_64.tar.gz
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- build/libs/
policy: pull-push
GNU Linux:
image: lthn/build:lthn-wallet-linux
stage: build
interruptible: true
script:
- make release-static-linux-x86_64
- cp build/release/linux-x86_64.tar.gz ./
artifacts:
name: lethean-chain-linux-x86_64
expose_as: 'Linux'
paths:
- linux-x86_64.tar.gz
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- build/libs/
policy: pull-push
FreeBSD:
image: lthn/build:lthn-wallet-linux
stage: build
interruptible: true
only:
- main
script:
- make release-static-freebsd-x86_64
- cp build/release/freebsd-x86_64.tar.gz ./
artifacts:
name: lethean-chain-freebsd-x86_64
expose_as: 'FreeBSD'
paths:
- freebsd-x86_64.tar.gz
cache:
key: $CI_COMMIT_REF_SLUG
paths:
- build/libs/
policy: pull-push
#upload:
# stage: upload
# image: curlimages/curl:latest
# rules:
# - if: $CI_COMMIT_TAG
# script:
# - |
# curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "freebsd-x86_64.tar.gz" "${PACKAGE_REGISTRY_URL}/freebsd-x86_64.tar.gz"
# - |
# curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "linux-x86_64.tar.gz" "${PACKAGE_REGISTRY_URL}/linux-x86_64.tar.gz"
# - |
# curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file "macos-x86_64.tar.gz" "${PACKAGE_REGISTRY_URL}/macos-x86_64.tar.gz"
#
#create_new_package:
# stage: create_new_package
# image: alpine
# script:
# - |
# apk add tar curl
# echo "Version metadata pattern 1: number is expresssed in filename as well so that version metadata is available when file is downloaded."
# echo "Version metadata pattern 2: version is placed inside a file in the archive."
# echo "Version metadata pattern 3: structured file name shows version."
# echo "IMPORTANT: Please see the readme for how filename stored version variables can cause duplicate versions to be pushed to a package endpoint when doing multibranch development."
# VERSION=$(. .build/release/increment_version.sh ${VERSIONCOMPONENTTOINCREMENT} ${LASTVERSION})
# echo "${VERSION}" > version.txt
# echo "${VERSION}" > version-${VERSION}.txt
# echo "VERSION=${VERSION}" > version.env
# tar -czvf ${PACKAGENAME}.${VERSION}.tar.gz .
# curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file ${PACKAGENAME}.${VERSION}.tar.gz ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGENAME}/${VERSION}/${PACKAGENAME}.${VERSION}.tar.gz
# artifacts:
# reports:
# #propagates variables into the pipeline level, but never stores the actual file
# dotenv: version.env
#download_test:
# stage: download_test
# image: alipne
# # The $VERSION is propagated from the previous job via dotenv files capability of Gitlab CI
# script:
# - |
# apk add wget curl
# wget --header="JOB-TOKEN: $CI_JOB_TOKEN" ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGENAME}/${VERSION}/${PACKAGENAME}.${VERSION}.tar.gz
# tar -xzvf ${PACKAGENAME}.${VERSION}.tar.gz
# ls -ashl
# echo "Contents of version.txt:"
# cat version.txt
# echo "Tested successful, updating last version to the project (Must have at least developer to the project)..."
# curl --request PUT --header "PRIVATE-TOKEN: ${PAT}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/variables/LASTVERSION" --form "value=$VERSION"
# echo "Also writing it to the group level (Must have at least maintainer permissions to the group)..."
# curl --request PUT --header "PRIVATE-TOKEN: ${PAT}" "${CI_API_V4_URL}/groups/9120367/variables/LASTVERSION" --form "value=$VERSION"
#release:
# # Caution, as of 2021-02-02 these assets links require a login, see:
# # https://gitlab.com/gitlab-org/gitlab/-/issues/299384
# stage: release
# image: registry.gitlab.com/gitlab-org/release-cli:latest
# rules:
# - if: $CI_COMMIT_TAG
# script:
# - |
# release-cli create --name "Release $CI_COMMIT_TAG" --tag-name $CI_COMMIT_TAG \
# --assets-link "{\"name\":\"lethean-chain-linux\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGENAME}/${VERSION}/${PACKAGENAME}.${VERSION}.tar.gz\"}" \
# --assets-link "{\"name\":\"lethean-chain-freebsd\",\"url\":\"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PACKAGENAME}/${VERSION}/${PACKAGENAME}.${VERSION}.tar.gz\"}"