Skip to content

Commit 31f45fb

Browse files
committed
TUN-9800: Migrate apt internal builds to Gitlab
1 parent 17533b1 commit 31f45fb

File tree

6 files changed

+178
-73
lines changed

6 files changed

+178
-73
lines changed

.ci/apt-internal.gitlab-ci.yml

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
.register_inputs: &register_inputs
2+
stage: release-internal
3+
runOnBranches: "^master$"
4+
COMPONENT: "common"
5+
6+
.register_inputs_stable_bookworm: &register_inputs_stable_bookworm
7+
<<: *register_inputs
8+
runOnChangesTo: ['RELEASE_NOTES']
9+
FLAVOR: "bookworm"
10+
SERIES: "stable"
11+
12+
.register_inputs_stable_trixie: &register_inputs_stable_trixie
13+
<<: *register_inputs
14+
runOnChangesTo: ['RELEASE_NOTES']
15+
FLAVOR: "trixie"
16+
SERIES: "stable"
17+
18+
.register_inputs_next_bookworm: &register_inputs_next_bookworm
19+
<<: *register_inputs
20+
FLAVOR: "bookworm"
21+
SERIES: next
22+
23+
.register_inputs_next_trixie: &register_inputs_next_trixie
24+
<<: *register_inputs
25+
FLAVOR: "trixie"
26+
SERIES: next
27+
28+
################################################
29+
### Generate Debian Package for Internal APT ###
30+
################################################
31+
.cloudflared-apt-build: &cloudflared_apt_build
32+
stage: package
33+
needs:
34+
- ci-image-get-image-ref
35+
- linux-packaging # For consistency, we only run this job after we knew we could build the packages for external delivery
36+
image: $BUILD_IMAGE
37+
cache: {}
38+
script:
39+
- make cloudflared-deb
40+
artifacts:
41+
paths:
42+
- cloudflared*.deb
43+
44+
##############
45+
### Stable ###
46+
##############
47+
cloudflared-amd64-stable:
48+
<<: *cloudflared_apt_build
49+
rules:
50+
- !reference [.default-rules, run-on-release]
51+
variables: &amd64-stable-vars
52+
GOOS: linux
53+
GOARCH: amd64
54+
FIPS: true
55+
ORIGINAL_NAME: true
56+
CGO_ENABLED: 1
57+
58+
cloudflared-arm64-stable:
59+
<<: *cloudflared_apt_build
60+
rules:
61+
- !reference [.default-rules, run-on-release]
62+
variables: &arm64-stable-vars
63+
GOOS: linux
64+
GOARCH: arm64
65+
FIPS: false # TUN-7595
66+
ORIGINAL_NAME: true
67+
CGO_ENABLED: 1
68+
69+
############
70+
### Next ###
71+
############
72+
cloudflared-amd64-next:
73+
<<: *cloudflared_apt_build
74+
rules:
75+
- !reference [.default-rules, run-on-master]
76+
variables:
77+
<<: *amd64-stable-vars
78+
NIGHTLY: true
79+
80+
cloudflared-arm64-next:
81+
<<: *cloudflared_apt_build
82+
rules:
83+
- !reference [.default-rules, run-on-master]
84+
variables:
85+
<<: *arm64-stable-vars
86+
NIGHTLY: true
87+
88+
include:
89+
- local: .ci/commons.gitlab-ci.yml
90+
91+
##########################################
92+
### Publish Packages to Internal Repos ###
93+
##########################################
94+
# Bookworm AMD64
95+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
96+
inputs:
97+
<<: *register_inputs_stable_bookworm
98+
jobPrefix: cloudflared-bookworm-amd64
99+
needs: &amd64-stable ["cloudflared-amd64-stable"]
100+
101+
# Bookworm ARM64
102+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
103+
inputs:
104+
<<: *register_inputs_stable_bookworm
105+
jobPrefix: cloudflared-bookworm-arm64
106+
needs: &arm64-stable ["cloudflared-arm64-stable"]
107+
108+
# Trixie AMD64
109+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
110+
inputs:
111+
<<: *register_inputs_stable_trixie
112+
jobPrefix: cloudflared-trixie-amd64
113+
needs: *amd64-stable
114+
115+
# Trixie ARM64
116+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
117+
inputs:
118+
<<: *register_inputs_stable_trixie
119+
jobPrefix: cloudflared-trixie-arm64
120+
needs: *arm64-stable
121+
122+
##################################################
123+
### Publish Nightly Packages to Internal Repos ###
124+
##################################################
125+
# Bookworm AMD64
126+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
127+
inputs:
128+
<<: *register_inputs_next_bookworm
129+
jobPrefix: cloudflared-nightly-bookworm-amd64
130+
needs: &amd64-next ['cloudflared-amd64-next']
131+
132+
# Bookworm ARM64
133+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
134+
inputs:
135+
<<: *register_inputs_next_bookworm
136+
jobPrefix: cloudflared-nightly-bookworm-arm64
137+
needs: &arm64-next ['cloudflared-arm64-next']
138+
139+
# Trixie AMD64
140+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
141+
inputs:
142+
<<: *register_inputs_next_trixie
143+
jobPrefix: cloudflared-nightly-trixie-amd64
144+
needs: *amd64-next
145+
146+
# Trixie ARM64
147+
- component: $CI_SERVER_FQDN/cloudflare/ci/apt-register/register@~latest
148+
inputs:
149+
<<: *register_inputs_next_trixie
150+
jobPrefix: cloudflared-nightly-trixie-arm64
151+
needs: *arm64-next

.ci/commons.gitlab-ci.yml

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,13 @@
2020
- if: $CI_COMMIT_BRANCH != null && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
2121
when: on_success
2222
- when: never
23-
24-
# This before_script is injected into every job that runs on master meaning that if there is no tag the step
25-
# will succeed but only write "No tag present - Skipping" to the console.
26-
.check-tag:
27-
before_script:
28-
- |
29-
# Check if there is a Git tag pointing to HEAD
30-
echo "Tag found: $(git tag --points-at HEAD | grep .)"
31-
if git tag --points-at HEAD | grep .; then
32-
echo "Tag found: $(git tag --points-at HEAD | grep .)"
33-
export "VERSION=$(git tag --points-at HEAD | grep .)"
34-
else
35-
echo "No tag present — skipping."
36-
exit 0
37-
fi
23+
# Rules to run the job only when a release happens
24+
run-on-release:
25+
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
26+
changes:
27+
- 'RELEASE_NOTES'
28+
when: on_success
29+
- when: never
3830

3931
.component-tests:
4032
image: $BUILD_IMAGE

.ci/image/Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ RUN apt-get update && \
2222
rpm \
2323
# create deb and rpm repository files
2424
reprepro \
25-
createrepo-c && \
25+
createrepo-c \
26+
# gcc for cross architecture compilation in arm
27+
gcc-aarch64-linux-gnu \
28+
libc6-dev-arm64-cross && \
2629
rm -rf /var/lib/apt/lists/* && \
2730
# Install wixl
2831
curl -o /usr/local/bin/wixl -L https://pkg.cloudflare.com/binaries/wixl && \

.ci/release.gitlab-ci.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ include:
2828
.default-release-job: &release-job-defaults
2929
stage: release
3030
image: $BUILD_IMAGE
31-
rules:
32-
- !reference [.default-rules, run-on-master]
3331
cache:
3432
paths:
3533
- .cache/pip
@@ -76,7 +74,8 @@ include:
7674
###########################################
7775
release-cloudflared-to-github:
7876
<<: *release-job-defaults
79-
extends: .check-tag
77+
rules:
78+
- !reference [.default-rules, run-on-release]
8079
needs:
8180
- ci-image-get-image-ref
8281
- linux-packaging
@@ -91,7 +90,8 @@ release-cloudflared-to-github:
9190
#########################################
9291
release-cloudflared-to-r2:
9392
<<: *release-job-defaults
94-
extends: .check-tag
93+
rules:
94+
- !reference [.default-rules, run-on-release]
9595
needs:
9696
- ci-image-get-image-ref
9797
- linux-packaging # We only release non-FIPS binaries to R2
@@ -104,6 +104,8 @@ release-cloudflared-to-r2:
104104
#################################################
105105
release-cloudflared-nightly-to-r2:
106106
<<: *release-job-defaults
107+
rules:
108+
- !reference [.default-rules, run-on-master]
107109
variables:
108110
<<: *release-job-variables
109111
R2_BUCKET: cloudflared-pkgs-next
@@ -120,6 +122,8 @@ release-cloudflared-nightly-to-r2:
120122
#############################
121123
generate-version-file:
122124
<<: *release-job-defaults
125+
rules:
126+
- !reference [.default-rules, run-on-release]
123127
needs:
124128
- ci-image-get-image-ref
125129
script:

.gitlab-ci.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ default:
77
VAULT_ID_TOKEN:
88
aud: https://vault.cfdata.org
99

10-
stages: [sync, pre-build, build, validate, test, package, release, review]
10+
stages: [sync, pre-build, build, validate, test, package, release, release-internal, review]
1111

1212
include:
1313
#####################################################
@@ -45,6 +45,11 @@ include:
4545
#####################################################
4646
- local: .ci/release.gitlab-ci.yml
4747

48+
#####################################################
49+
########## Release Packages Internally ##############
50+
#####################################################
51+
- local: .ci/apt-internal.gitlab-ci.yml
52+
4853
#####################################################
4954
############## Manual Claude Review #################
5055
#####################################################

cfsetup.yaml

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,2 @@
1-
pinned_go: &pinned_go go-boring=1.24.9-1
2-
3-
build_dir: &build_dir /cfsetup_build
4-
default-flavor: bookworm
5-
6-
bookworm: &bookworm
7-
build-fips-internal-deb:
8-
build_dir: *build_dir
9-
builddeps: &build_fips_deb_deps
10-
- *pinned_go
11-
- build-essential
12-
- fakeroot
13-
- rubygem-fpm
14-
post-cache:
15-
- export GOOS=linux
16-
- export GOARCH=amd64
17-
- export FIPS=true
18-
- export ORIGINAL_NAME=true
19-
- make cloudflared-deb
20-
build-internal-deb-nightly-amd64:
21-
build_dir: *build_dir
22-
builddeps: *build_fips_deb_deps
23-
post-cache:
24-
- export GOOS=linux
25-
- export GOARCH=amd64
26-
- export NIGHTLY=true
27-
- export FIPS=true
28-
- export ORIGINAL_NAME=true
29-
- make cloudflared-deb
30-
build-internal-deb-nightly-arm64:
31-
build_dir: *build_dir
32-
builddeps: *build_fips_deb_deps
33-
post-cache:
34-
- export GOOS=linux
35-
- export GOARCH=arm64
36-
- export NIGHTLY=true
37-
# - export FIPS=true # TUN-7595
38-
- export ORIGINAL_NAME=true
39-
- make cloudflared-deb
40-
build-deb-arm64:
41-
build_dir: *build_dir
42-
builddeps:
43-
- *pinned_go
44-
- build-essential
45-
- fakeroot
46-
- rubygem-fpm
47-
post-cache:
48-
- export GOOS=linux
49-
- export GOARCH=arm64
50-
- make cloudflared-deb
51-
52-
trixie: *bookworm
1+
# A valid cfsetup.yaml is required but we dont have any real config to specify
2+
dummy_key: true

0 commit comments

Comments
 (0)