1
- .commands :
2
- setup_silta_cli : |
3
- echo "Install silta-cli"
4
- mkdir -p ~/.local/bin
5
- latest_release_url=$(curl -sL https://api.github.com/repos/wunderio/silta-cli/releases/latest | grep -o -E "https://(.*)silta-(.*)-linux-amd64.tar.gz" | head -1)
6
- curl -sL $latest_release_url | tar xz -C ~/.local/bin
7
- silta version
8
- drupal_composer_install : |
9
- echo "Composer install"
10
- composer install -n --prefer-dist --ignore-platform-reqs --no-dev --optimize-autoloader
11
- npm_install_build : |
12
- echo "Npm install"
13
- npm install && npm run build
14
- setup_silta_proxy : |
15
- echo "Set up silta proxy"
16
- if [[ -n "$TUNNEL_USER_HOST" ]]; then
17
- ssh -o StrictHostKeyChecking=accept-new -D 1337 -C -N -q -f "$TUNNEL_USER_HOST"
18
- echo 'export SILTA_PROXY=socks5://localhost:1337' >> $BASH_ENV
19
- if command -v gcloud &> /dev/null; then
20
- gcloud config set proxy/type socks5
21
- gcloud config set proxy/address 127.0.0.1
22
- gcloud config set proxy/port 1337
23
- fi
24
- if command -v silta &> /dev/null; then
25
- if [ "$CLUSTER_TYPE" == "aws" ] && command -v pproxy &> /dev/null; then
26
- pproxy -r socks5://127.0.0.1:1337 --daemon
27
- silta config set proxy http://localhost:8080
28
- else
29
- silta config set proxy socks5://localhost:1337
30
- fi
31
- fi
32
- echo "Proxy is ready for outgoing connections"
33
- fi
34
- cloud_login : |
35
- echo "Cloud login"
36
- KUBECTL_CONFIG_VAR="${SILTA_CLUSTER_ID}_KUBECTL_CONFIG"
37
-
38
- # If project kubectl is set, use it to connect to the cluster.
39
- if [ ! -z "${!KUBECTL_CONFIG_VAR}" ]; then
40
- export KUBECTL_CONFIG="${!KUBECTL_CONFIG_VAR}"
41
- echo "export KUBECTL_CONFIG=${!KUBECTL_CONFIG_VAR}" >> $BASH_ENV
42
- silta cloud login --cluster-name "${CLUSTER_NAME}"
43
-
44
- # Otherwise, try to use global credentials and check exit code.
45
- else
46
- set +e
47
- silta cloud login --cluster-name "${CLUSTER_NAME}"
48
-
49
- # if exit code is not 0, request kubectl injection via silta dashboard api
50
- if [ $? -ne 0 ]; then
51
- set -e
52
- echo "Cluster connection credentials are missing."
53
-
54
- if [ ! -z "${SILTA_DASHBOARD_URL}" ]; then
55
- echo "Attempting to request cluster connection credentials from the Silta Dashboard API."
56
- NAMESPACE="${CIRCLE_PROJECT_REPONAME,,}"
57
- # Request kubeconfig injection from the Silta Dashboard API via curl request.
58
- curl -X POST "${SILTA_DASHBOARD_URL}/api/circleci/reload-ns-rbac" \
59
- -H "Content-type: application/x-www-form-urlencoded" \
60
- -d "rbac_reload_key=${SILTA_DASHBOARD_KEY}" \
61
- -d "cluster=${SILTA_CLUSTER_ID}" \
62
- -d "namespace=${NAMESPACE}"
63
- echo ""
64
- echo "Credentials requested, please rerun the build."
65
- fi
66
- exit 1
67
- fi
68
- fi
69
- docker_login : |
70
- echo "Docker login"
71
- silta ci image login
72
- set_release_name : |
73
- echo "Set release name"
74
- NAMESPACE="${CIRCLE_PROJECT_REPONAME,,}"
75
- # Use branch name or fall back to "production" if it's a tag.
76
- BRANCHNAME="${CIRCLE_BRANCH:-${CIRCLE_TAG:+production}}"
77
-
78
- RELEASE_NAME=$(silta ci release name --branchname "${BRANCHNAME}" --release-suffix "<<parameters.release-suffix>>")
79
- SILTA_ENVIRONMENT_NAME=$(silta ci release environmentname --branchname "${BRANCHNAME}" --release-suffix "<<parameters.release-suffix>>")
80
-
81
- echo "export RELEASE_NAME='$RELEASE_NAME'" >> "$BASH_ENV"
82
- echo "export NAMESPACE='$NAMESPACE'" >> "$BASH_ENV"
83
- echo "export SILTA_ENVIRONMENT_NAME='$SILTA_ENVIRONMENT_NAME'" >> "$BASH_ENV"
84
-
85
- echo "The release name for this branch is \"$RELEASE_NAME\" in the \"$NAMESPACE\" namespace"
86
- docker_build_nginx : |
87
- echo "Build nginx"
88
- NAMESPACE="${CIRCLE_PROJECT_REPONAME,,}"
89
- BRANCHNAME="${CIRCLE_BRANCH}"
90
-
91
- IMAGE_URL=$(silta ci image url \
92
- --image-repo-host "${DOCKER_REPO_HOST}" \
93
- --image-repo-project "${DOCKER_REPO_PROJ}" \
94
- --namespace "${NAMESPACE}" \
95
- --image-identifier "nginx" \
96
- --build-path "" \
97
- --dockerfile "nginx.Dockerfile" \
98
- --image-tag "" \
99
- --image-tag-prefix "v1" \
100
- )
101
-
102
- if [ '<<parameters.expose_image>>' = 'true' ]; then
103
- # Persist the image identifier and tag so it is available during deployment.
104
- echo "export nginx_IMAGE_IDENTIFIER='nginx'" >> "$BASH_ENV"
105
- echo "export nginx_IMAGE_URL='${IMAGE_URL}'" >> "$BASH_ENV"
106
- fi
107
-
108
- # Create temporary file for storing build process exit code with "build_process" prefix.
109
- exit_code_file=$(mktemp /tmp/build-docker-image.XXXXXX)
110
- touch $exit_code_file
111
-
112
- # Trap and store exit code of the build process.
113
- trap 'echo $? > $exit_code_file' EXIT
114
-
115
- # Build the docker image.
116
- silta ci image build \
117
- --image-repo-host "${DOCKER_REPO_HOST}" \
118
- --image-repo-project "${DOCKER_REPO_PROJ}" \
119
- --namespace "${NAMESPACE}" \
120
- --image-identifier "nginx" \
121
- --build-path "<<parameters.path>>" \
122
- --dockerfile "<<parameters.dockerfile>>" \
123
- --image-tag-prefix "<<parameters.docker-hash-prefix>>" \
124
- --image-tag "<<parameters.tag>>" \
125
- --branchname "${BRANCHNAME}" \
126
- --image-reuse <<parameters.reuse_image>>
127
-
128
-
129
- .filter_feature_only :
130
- rules :
131
- - if : $CI_COMMIT_BRANCH == "production"
132
- when : never
133
- - if : $CI_COMMIT_BRANCH == "master"
134
- when : never
135
- - if : $CI_COMMIT_BRANCH =~ /feature\/test-cluster(\/.*)?/
136
- when : never
137
- - if : $CI_COMMIT_BRANCH =~ /feature\/aws-cluster(\/.*)?/
138
- when : never
139
- - if : $CI_COMMIT_BRANCH =~ /feature\/aks-cluster(\/.*)?/
140
- when : never
141
- - when : on_success
142
-
143
- default :
144
- image : wunderio/silta-cicd:circleci-php8.3-node22-composer2-v1
145
1
146
2
stages :
147
3
- build
148
4
149
5
include :
150
- - component : $CI_SERVER_FQDN/root/test-components-1/setup-silta-cli@main
151
- inputs :
152
- silta-cli-version : ' latest'
153
6
- local : ' /.gitlab/templates/drupal-build.yml'
154
7
155
8
drupal-build :
@@ -161,25 +14,3 @@ drupal-build:
161
14
script :
162
15
- echo "Project-specific build steps here..."
163
16
164
-
165
- build-job0 :
166
- stage : build
167
- script : |
168
- echo "Hello!"
169
-
170
- build-job1 :
171
- stage : build
172
- script :
173
- - !reference [.commands, setup_silta_cli]
174
- - !reference [.commands, drupal_composer_install]
175
- - !reference [.commands, npm_install_build]
176
- - !reference [.commands, setup_silta_proxy]
177
- - !reference [.commands, cloud_login]
178
- - silta ci release list --namespace gitlab
179
- - silta ci release list --namespace drupal-project-k8s
180
- # - !reference [.commands, docker_login]
181
- # - !reference [.commands, set_release_name]
182
- # - !reference [.commands, docker_build_nginx]
183
- rules :
184
- - !reference [.filter_feature_only, rules]
185
-
0 commit comments