I’m new to Gitlab CI and I’m trying to figure out a problem.
For my first pipeline I want to do the following:
- Use an Ubuntu image
- Update the
apt
package database and install a few utilities - Use curl to pull down
kubectl
- Validate that
kubectl
works.
Here’s my configuration:
image: ubuntu:focal
variables:
K8S_VERSION: 'v1.19.15'
install-apt:
stage: build
- apt -qq update
- apt -qq -y install curl
install-kubectl:
stage: build
script:
- curl --silent --show-error -LO https://dl.k8s.io/release/${K8S_VERSION}/bin/linux/amd64/kubectl && chmod +x kubectl
- curl --silent --show-error -LO https://dl.k8s.io/${K8S_VERSION}/bin/linux/amd64/kubectl.sha256
- echo "$(<kubectl.sha256) kubectl" | sha256sum --check
test-kubectl:
stage: test
script:
- ./kubectl version --short --client
The trouble is, the install-kubectl
stage is failing with this error:
$ curl --silent --show-error -LO https://dl.k8s.io/${K8S_VERSION}/bin/linux/amd64/kubectl.sha256
/usr/bin/bash: line 108: curl: command not found
ERROR: Job failed: exit code 1
I’m confused why curl
is not installed, when it should have been installed in the install-apt
build stage.
I thought the build stages happened in the order specified in the file. Is that not the case?
My example here is simplified. I my real-world use case, I actually have 1 or 2 more build stages, each with 2-3 commands each, and I’m trying to figure out how to do that without squashing all 10 commands into a single build stage.