Skip to content

Commit 60d9a78

Browse files
committed
Builds musl version fully static
1 parent 300e246 commit 60d9a78

File tree

4 files changed

+37
-41
lines changed

4 files changed

+37
-41
lines changed

.github/workflows/build.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ jobs:
99
steps:
1010
- name: Checkout
1111
uses: actions/checkout@v4
12-
- name: Setup Rust toolchain
13-
uses: dtolnay/rust-toolchain@stable
14-
with:
15-
toolchain: 1.78.0
1612
- name: Build
17-
run: cargo build --release --locked
13+
run: |
14+
docker run --rm -v $(pwd):/app -w /app rust:alpine sh -c "
15+
apk -U --no-progress add musl-dev sqlite-dev sqlite-static
16+
cargo build --release --locked
17+
"
1818
- name: Package current compilation
1919
id: package-current
2020
run: |

.gitlab-ci.yml

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ variables:
55
QUAY_REGISTRY_URL: "quay.io"
66
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/rockpass/${CI_COMMIT_TAG}"
77
ARTIFACTS_AMD64_GLIBC: rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}-linux-amd64-glibc
8-
ARTIFACTS_AMD64_MUSL: rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}-linux-amd64-musl
8+
ARTIFACTS_AMD64_STATIC: rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}-linux-amd64-static
99
ARTIFACTS_ARM64: rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}-linux-arm64
1010
PACKAGE_NAME_AMD64_GLIBC: rockpass-${CI_COMMIT_TAG}-linux-amd64-glibc.tar.xz
1111
PACKAGE_PATH_AMD64_GLIBC: rockpass-${CI_COMMIT_TAG}-linux-amd64-glibc
12-
PACKAGE_NAME_AMD64_MUSL: rockpass-${CI_COMMIT_TAG}-linux-amd64-musl.tar.xz
13-
PACKAGE_PATH_AMD64_MUSL: rockpass-${CI_COMMIT_TAG}-linux-amd64-musl
12+
PACKAGE_NAME_AMD64_STATIC: rockpass-${CI_COMMIT_TAG}-linux-amd64-static.tar.xz
13+
PACKAGE_PATH_AMD64_STATIC: rockpass-${CI_COMMIT_TAG}-linux-amd64-static
1414
PACKAGE_NAME_ARM64: rockpass-${CI_COMMIT_TAG}-linux-arm64.tar.xz
1515
PACKAGE_PATH_ARM64: rockpass-${CI_COMMIT_TAG}-linux-arm64
1616

@@ -25,7 +25,7 @@ stages:
2525

2626
Test AMD64 glibc:
2727
stage: Test
28-
image: rust:buster
28+
image: rust:bookworm
2929
script:
3030
- cargo test
3131
cache:
@@ -35,7 +35,7 @@ Test AMD64 glibc:
3535

3636
Build AMD64 glibc:
3737
stage: Build
38-
image: rust:buster
38+
image: rust:bookworm
3939
script:
4040
- cargo build --release --locked
4141
artifacts:
@@ -47,20 +47,18 @@ Build AMD64 glibc:
4747
paths:
4848
- target
4949

50-
Build AMD64 musl:
50+
Build AMD64 static:
5151
stage: Build
5252
image: rust:alpine
53-
variables:
54-
RUSTFLAGS: -Ctarget-feature=-crt-static
5553
script:
56-
- apk -U --no-progress add libc-dev sqlite-dev
54+
- apk -U --no-progress add musl-dev sqlite-dev sqlite-static
5755
- cargo build --release --locked
5856
artifacts:
59-
name: ${ARTIFACTS_AMD64_MUSL}
57+
name: ${ARTIFACTS_AMD64_STATIC}
6058
paths:
6159
- target/release/rockpass
6260
cache:
63-
key: ${CI_COMMIT_REF_SLUG}-amd64-musl
61+
key: ${CI_COMMIT_REF_SLUG}-amd64-static
6462
paths:
6563
- target
6664

@@ -99,19 +97,19 @@ Archive AMD64 glibc:
9997
rules:
10098
- if: $CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "merge_request_event"
10199

102-
Archive AMD64 musl:
100+
Archive AMD64 static:
103101
stage: Archive
104102
script:
105-
- install -Dm755 "target/release/rockpass" "${ARTIFACTS_AMD64_MUSL}/rockpass"
106-
- install -Dm644 "rockpass.toml.example" "${ARTIFACTS_AMD64_MUSL}/rockpass.toml.example"
107-
- install -Dm644 "README.md" "${ARTIFACTS_AMD64_MUSL}/README.md"
108-
- install -Dm644 "LICENSE" "${ARTIFACTS_AMD64_MUSL}/LICENSE"
103+
- install -Dm755 "target/release/rockpass" "${ARTIFACTS_AMD64_STATIC}/rockpass"
104+
- install -Dm644 "rockpass.toml.example" "${ARTIFACTS_AMD64_STATIC}/rockpass.toml.example"
105+
- install -Dm644 "README.md" "${ARTIFACTS_AMD64_STATIC}/README.md"
106+
- install -Dm644 "LICENSE" "${ARTIFACTS_AMD64_STATIC}/LICENSE"
109107
artifacts:
110-
name: ${ARTIFACTS_AMD64_MUSL}
108+
name: ${ARTIFACTS_AMD64_STATIC}
111109
paths:
112-
- ${ARTIFACTS_AMD64_MUSL}/
110+
- ${ARTIFACTS_AMD64_STATIC}/
113111
needs:
114-
- Build AMD64 musl
112+
- Build AMD64 static
115113
rules:
116114
- if: $CI_COMMIT_TAG == null && $CI_PIPELINE_SOURCE != "merge_request_event"
117115

@@ -149,21 +147,21 @@ Package AMD64 glibc:
149147
rules:
150148
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"
151149

152-
Package AMD64 musl:
150+
Package AMD64 static:
153151
stage: Package
154152
script:
155153
- apk -U --no-progress add xz
156-
- install -Dm755 "target/release/rockpass" "${PACKAGE_PATH_AMD64_MUSL}/rockpass"
157-
- install -Dm644 "rockpass.toml.example" "${PACKAGE_PATH_AMD64_MUSL}/rockpass.toml.example"
158-
- install -Dm644 "README.md" "${PACKAGE_PATH_AMD64_MUSL}/README.md"
159-
- install -Dm644 "LICENSE" "${PACKAGE_PATH_AMD64_MUSL}/LICENSE"
160-
- tar cvJf "${PACKAGE_NAME_AMD64_MUSL}" "${PACKAGE_PATH_AMD64_MUSL}"
154+
- install -Dm755 "target/release/rockpass" "${PACKAGE_PATH_AMD64_STATIC}/rockpass"
155+
- install -Dm644 "rockpass.toml.example" "${PACKAGE_PATH_AMD64_STATIC}/rockpass.toml.example"
156+
- install -Dm644 "README.md" "${PACKAGE_PATH_AMD64_STATIC}/README.md"
157+
- install -Dm644 "LICENSE" "${PACKAGE_PATH_AMD64_STATIC}/LICENSE"
158+
- tar cvJf "${PACKAGE_NAME_AMD64_STATIC}" "${PACKAGE_PATH_AMD64_STATIC}"
161159
artifacts:
162-
name: ${ARTIFACTS_AMD64_MUSL}
160+
name: ${ARTIFACTS_AMD64_STATIC}
163161
paths:
164-
- ${PACKAGE_NAME_AMD64_MUSL}
162+
- ${PACKAGE_NAME_AMD64_STATIC}
165163
needs:
166-
- Build AMD64 musl
164+
- Build AMD64 static
167165
rules:
168166
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"
169167

@@ -203,7 +201,7 @@ Build and publish branch Docker image:
203201
rules:
204202
- if: $CI_COMMIT_TAG == null && $CI_PROJECT_ID == "43241571" && $CI_PIPELINE_SOURCE != "merge_request_event" && $CI_COMMIT_REF_PROTECTED == "true"
205203
needs:
206-
- Build AMD64 musl
204+
- Build AMD64 static
207205

208206
Build and publish release Docker image:
209207
stage: Docker
@@ -248,7 +246,7 @@ Build and publish release Docker image:
248246
rules:
249247
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"
250248
needs:
251-
- Build AMD64 musl
249+
- Build AMD64 static
252250

253251
Publish release:
254252
stage: Publish
@@ -257,7 +255,7 @@ Publish release:
257255
- |
258256
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${PACKAGE_NAME_AMD64_GLIBC} "${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_AMD64_GLIBC}"
259257
- |
260-
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${PACKAGE_NAME_AMD64_MUSL} "${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_AMD64_MUSL}"
258+
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${PACKAGE_NAME_AMD64_STATIC} "${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_AMD64_STATIC}"
261259
- |
262260
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${PACKAGE_NAME_ARM64} "${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_ARM64}"
263261
rules:
@@ -269,7 +267,7 @@ Release:
269267
script: |
270268
release-cli create --name "Release ${CI_COMMIT_TAG}" --tag-name ${CI_COMMIT_TAG} \
271269
--assets-link "{\"name\":\"${PACKAGE_NAME_AMD64_GLIBC}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_AMD64_GLIBC}\"}" \
272-
--assets-link "{\"name\":\"${PACKAGE_NAME_AMD64_MUSL}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_AMD64_MUSL}\"}" \
270+
--assets-link "{\"name\":\"${PACKAGE_NAME_AMD64_STATIC}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_AMD64_STATIC}\"}" \
273271
--assets-link "{\"name\":\"${PACKAGE_NAME_ARM64}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${PACKAGE_NAME_ARM64}\"}"
274272
rules:
275273
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"

Dockerfile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ ARG ALPINE_VERSION=latest
22

33
FROM alpine:${ALPINE_VERSION}
44
RUN adduser -S -D -H -h /var/lib/rockpass -s /sbin/nologin -G users -g rockpass rockpass && \
5-
apk -U --no-progress add libgcc sqlite-libs && \
6-
install -d -m0755 -o100 -g100 /var/lib/rockpass && \
7-
rm -f /var/cache/apk/*
5+
install -d -m0755 -o100 -g100 /var/lib/rockpass
86
COPY target/release/rockpass /bin/rockpass
97
EXPOSE 8000
108
ENV ROCKPASS_DATABASES="{rockpass={url=\"/var/lib/rockpass/rockpass.sqlite\"}}" \

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ learn how to create your first user.
4444
### With Docker
4545

4646
You can download a Rockpass Docker image from [here][glcr], from [Docker
47-
Hub][hub] or from [Quay][quay] (only `linux-amd64-musl`).
47+
Hub][hub] or from [Quay][quay] (only `linux-amd64`).
4848

4949
To run it, simply exec.
5050
```

0 commit comments

Comments
 (0)