Cargo
Private GitLab-Repositorien einbinden
Öffentliche Git-Repositorien können wie folgt eingebunden werden:
[dependencies]
public-repo = {git = "https://gitlab.instance.io/project/public-repo.git", tag = "v1.0.0"}
Um ein privates Git-Repositorium bei lokalen Builds einzubinden, muss das Repositorium über ssh geklont werden:
[dependencies]
private-repo = {git = "ssh://git@gitlab.instance.io/project/private-repo.git", tag = "v1.0.0"}
Damit der private ssh-Schlüssel verwendet wird, muss zudem cargo entsprechend konfiguriert werden:
mkdir .cargo
cat > .cargo/config <<EOF
[net]
git-fetch-with-cli = true
EOF
Für die Nutzung in Gitlab-CI-Prozessen muss die Pipeline so eingestellt werden, dass sie das CI-Access-Token beim Zugriff auf das Repositorium verwendet (das funktioniert natürlich nur, wenn das private Repo in derselben Gruppe wie der CI-Prozess liegt).
In .gitlab-ci.yml
zu ergänzen:
.git-access:
before_script:
- git config --global credential.helper store
- echo "https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.instance.io" > ~/.git-credentials
- git config --global url."https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.instance.io".insteadOf ssh://gitlab.instance.io
Damit wird eine Rewrite-Regel definiert, womit git bestimmte URLs ersetzen kann.
TODO: Docker / Podman-Integration (s. https://oliverjumpertz.com/blog/how-to-handle-private-gitlab-dependencies-with-cargo/)