Skip to content

Commit d75b87a

Browse files
committed
Migrate to GitLab
1 parent 47e707f commit d75b87a

File tree

6 files changed

+157
-100
lines changed

6 files changed

+157
-100
lines changed

.github/docker.sh

Lines changed: 0 additions & 31 deletions
This file was deleted.

.github/workflows/docker.yml

Lines changed: 0 additions & 49 deletions
This file was deleted.

.gitlab-ci.yml

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
default:
2+
image: alpine:latest
3+
4+
variables:
5+
QUAY_REGISTRY_URL: "quay.io"
6+
PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/rockpass/${CI_COMMIT_TAG}"
7+
PACKAGE: rockpass-release-${CI_COMMIT_TAG}.tar.xz
8+
9+
stages:
10+
- Build
11+
- Package
12+
- Docker
13+
- Publish
14+
- Release
15+
16+
Build Rockpass:
17+
stage: Build
18+
image: rust:alpine
19+
script:
20+
- apk -U --no-progress add libc-dev sqlite-dev
21+
- cargo build --release --locked
22+
artifacts:
23+
name: rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
24+
paths:
25+
- target/release/rockpass
26+
cache:
27+
key: ${CI_COMMIT_REF_SLUG}
28+
paths:
29+
- target
30+
31+
Package Rockpass:
32+
stage: Package
33+
script:
34+
- apk -U --no-progress add xz
35+
- install -Dm755 "target/release/rockpass" "rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}/rockpass"
36+
- install -Dm644 "rockpass.toml.example" "rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}/rockpass.toml.example"
37+
- install -Dm644 "README.md" "rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}/README.md"
38+
- install -Dm644 "LICENSE" "rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}/LICENSE"
39+
- tar cvJf "rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}.tar.xz" "rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}"
40+
artifacts:
41+
name: rockpass-package-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}
42+
paths:
43+
- rockpass-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}.tar.xz
44+
rules:
45+
- if: $CI_COMMIT_TAG == null
46+
47+
Package Rockpass release:
48+
stage: Package
49+
script:
50+
- apk -U --no-progress add xz
51+
- install -Dm755 "target/release/rockpass" "rockpass-${CI_COMMIT_TAG}/rockpass"
52+
- install -Dm644 "rockpass.toml.example" "rockpass-${CI_COMMIT_TAG}/rockpass.toml.example"
53+
- install -Dm644 "README.md" "rockpass-${CI_COMMIT_TAG}/README.md"
54+
- install -Dm644 "LICENSE" "rockpass-${CI_COMMIT_TAG}/LICENSE"
55+
- tar cvJf ${PACKAGE} "rockpass-${CI_COMMIT_TAG}"
56+
artifacts:
57+
name: rockpass-release-package-${CI_COMMIT_TAG}
58+
paths:
59+
- ${PACKAGE}
60+
rules:
61+
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"
62+
63+
Build and publish Docker image:
64+
stage: Docker
65+
image: docker
66+
services:
67+
- docker:dind
68+
script:
69+
- docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME} .
70+
- docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
71+
- docker push ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}
72+
- docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_TOKEN}
73+
- docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME} ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}
74+
- docker push ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}
75+
- docker login -u ${QUAY_USERNAME} -p ${QUAY_PASSWORD} ${QUAY_REGISTRY_URL}
76+
- docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME} ${QUAY_REGISTRY_URL}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}
77+
- docker push ${QUAY_REGISTRY_URL}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_REF_NAME}
78+
rules:
79+
- if: $CI_COMMIT_TAG == null && $CI_PROJECT_ID == "43241571"
80+
81+
Build and publish release Docker image:
82+
stage: Docker
83+
image: docker
84+
services:
85+
- docker:dind
86+
script:
87+
- |
88+
semver() {
89+
NUM='0|[1-9][0-9]*'
90+
SEMVER_REGEX="^(${NUM})\\.(${NUM})\\.(${NUM})$"
91+
if [[ "${1}" =~ "${SEMVER_REGEX}" ]]; then
92+
MINOR_PATCH="${1#*.}"
93+
MAJOR="${1%%.*}"
94+
MINOR="${MINOR_PATCH%.*}"
95+
PATCH="${MINOR_PATCH#*.}"
96+
IMAGE="${2:-$CI_REGISTRY_IMAGE}"
97+
docker tag ${IMAGE}:latest ${IMAGE}:${MAJOR}
98+
docker tag ${IMAGE}:latest ${IMAGE}:${MAJOR}.${MINOR}
99+
docker push ${IMAGE}:${MAJOR}
100+
docker push ${IMAGE}:${MAJOR}.${MINOR}
101+
fi
102+
}
103+
- docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} .
104+
- docker login -u gitlab-ci-token -p ${CI_JOB_TOKEN} ${CI_REGISTRY}
105+
- docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} ${CI_REGISTRY_IMAGE}:latest
106+
- docker push ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG}
107+
- docker push ${CI_REGISTRY_IMAGE}:latest
108+
- semver ${CI_COMMIT_TAG}
109+
- docker login -u ${DOCKERHUB_USERNAME} -p ${DOCKERHUB_TOKEN}
110+
- docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_TAG}
111+
- docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:latest
112+
- docker push ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_TAG}
113+
- docker push ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:latest
114+
- semver ${CI_COMMIT_TAG} ${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}
115+
- docker login -u ${QUAY_USERNAME} -p ${QUAY_PASSWORD} ${QUAY_REGISTRY_URL}
116+
- docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} ${QUAY_REGISTRY_URL}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_TAG}
117+
- docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG} ${QUAY_REGISTRY_URL}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:latest
118+
- docker push ${QUAY_REGISTRY_URL}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:${CI_COMMIT_TAG}
119+
- docker push ${QUAY_REGISTRY_URL}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}:latest
120+
- semver ${CI_COMMIT_TAG} ${QUAY_REGISTRY_URL}/${CI_PROJECT_NAMESPACE}/${CI_PROJECT_NAME}
121+
rules:
122+
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"
123+
124+
Publish Rockpass release:
125+
stage: Publish
126+
image: curlimages/curl:latest
127+
script:
128+
- |
129+
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file ${PACKAGE} "${PACKAGE_REGISTRY_URL}/${PACKAGE}"
130+
rules:
131+
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"
132+
133+
Release:
134+
stage: Release
135+
image: registry.gitlab.com/gitlab-org/release-cli:latest
136+
script: |
137+
release-cli create --name "Release ${CI_COMMIT_TAG}" --tag-name ${CI_COMMIT_TAG} \
138+
--assets-link "{\"name\":\"${PACKAGE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${PACKAGE}\"}"
139+
rules:
140+
- if: $CI_COMMIT_TAG && $CI_PROJECT_ID == "43241571"

Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ version = "0.7.0"
44
authors = ["Óscar García Amor"]
55
license = "GPL-3.0"
66
readme = "README.md"
7-
repository = "https://github.com/ogarcia/rockpass"
8-
documentation = "https://github.com/ogarcia/rockpass"
9-
homepage = "https://github.com/ogarcia/rockpass"
7+
repository = "https://gitlab.com/ogarcia/rockpass"
8+
documentation = "https://gitlab.com/ogarcia/rockpass"
9+
homepage = "https://gitlab.com/ogarcia/rockpass"
1010
description = """
11-
A small and ultrasecure Lesspass database server written in Rust.
11+
A small and ultrasecure LessPass database API server written in Rust.
1212
"""
13-
keywords = ["lesspass", "database", "rocket", "server"]
13+
keywords = ["lesspass", "sqlite", "database", "api", "server"]
1414
edition = "2018"
15-
include = ["migrations/", "src/", "diesel.toml", "LICENSE", "README.md", "Rocket.toml.example"]
15+
include = ["migrations/", "src/", "diesel.toml", "LICENSE", "README.md", "rockpass.toml.example"]
1616

1717
[dependencies]
1818
base64 = "0.13.0"

Dockerfile

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
1-
ARG ALPINE_VERSION=3.17.1
2-
3-
FROM alpine:${ALPINE_VERSION} AS builder
4-
COPY . /rockpass/src
5-
RUN /rockpass/src/.github/docker.sh
1+
ARG ALPINE_VERSION=latest
62

73
FROM alpine:${ALPINE_VERSION}
8-
RUN apk -U --no-progress upgrade && \
9-
apk --no-progress add libgcc sqlite-libs && \
4+
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 && \
106
install -d -m0755 -o100 -g100 /var/lib/rockpass && \
117
rm -f /var/cache/apk/*
12-
COPY --from=builder /rockpass/pkg /
8+
COPY target/release/rockpass /bin/rockpass
139
EXPOSE 8000
1410
ENV ROCKPASS_DATABASES="{rockpass={url=\"/var/lib/rockpass/rockpass.sqlite\"}}" \
1511
ROCKPASS_ADDRESS="0.0.0.0" \

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ A small and ultrasecure [LessPass][lesspass] database server written in
1212
Simply download latest release from [releases page][releases]. You can use
1313
[systemd unit][unit] from [Arch Linux package][package] to run it.
1414

15-
[releases]: https://github.com/ogarcia/rockpass/releases
15+
[releases]: https://gitlab.com/ogarcia/rockpass/-/releases
1616
[unit]: https://aur.archlinux.org/cgit/aur.git/tree/rockpass.service?h=rockpass
1717
[package]: https://aur.archlinux.org/packages/rockpass
1818

1919
### With Docker
2020

21-
A docker image of Rockpass can be downloaded from [here][ghcr] or from
22-
[Docker Hub][hub].
21+
You can download a Rockpass Docker image from [here][glcr], from [Docker
22+
Hub][hub] or from [Quay][quay].
2323

2424
To run it, simply exec.
2525
```
@@ -34,8 +34,9 @@ This start Rockpass and publish the port to host.
3434
Warning: this is a basic run, all data will be destroyed after container
3535
stop and rm.
3636

37-
[ghcr]: https://github.com/users/ogarcia/packages/container/package/rockpass
37+
[glcr]: https://gitlab.com/ogarcia/rockpass/container_registry
3838
[hub]: https://hub.docker.com/r/ogarcia/rockpass
39+
[quay]: https://quay.io/repository/ogarcia/rockpass
3940

4041
#### Persist data using a Docker volume
4142

@@ -91,7 +92,7 @@ rustup override set stable
9192

9293
To build Rockpass binary simply execute the following commands.
9394
```sh
94-
git clone https://github.com/ogarcia/rockpass.git
95+
git clone https://gitlab.com/ogarcia/rockpass.git
9596
cd rockpass
9697
cargo build --release
9798
```
@@ -359,4 +360,4 @@ _user@example.com_ and all of his/her passwords settings.
359360
```
360361
361362
[lesspass]: https://lesspass.com/
362-
[lesspass-client]: https://github.com/ogarcia/lesspass-client
363+
[lesspass-client]: https://gitlab.com/ogarcia/lesspass-client

0 commit comments

Comments
 (0)