====== GitLab ====== ===== Documentation ===== Des docs que je galère à retouver à chaque fois et/ou dont je me sers/parle souvent. CI/CD : * La [[https://docs.gitlab.com/ee/user/gitlab_com/index.html|configuration spécifique à l'instance SaaS GitLab.com]] et [[https://docs.gitlab.com/ee/ci/runners/saas/linux_saas_runner.html#configtoml|celle des Runners Saas]]. * [[https://docs.gitlab.com/ee/user/project/integrations/webhooks.html|Webhooks]] ===== CLI tools ===== ^ Project ^ What ^ Language ^ CLI ^ Interactive shell ^ | [[https://github.com/profclems/glab]] | CLI | Go | ✔ | ✔✔ | | https://metacpan.org/release/GitLab-API-v4 | CLI | Perl | ✔ | ✘ | | https://github.com/python-gitlab/python-gitlab | CLI | Python | ✔ | ✘ | | https://github.com/narkoz/gitlab | CLI | Ruby | ✔ | ✘ | | https://github.com/michaellihs/golab | CLI | Go | ✔ | ✘ | | https://gitlab.com/AdrianDC/gitlabci-local | Local runner | Python | ✔ | ✔ | ===== Awesome Pipelines ===== [[https://docs.gitlab.com/ee/ci/examples/README.html|GitLab CI/CD Examples]] right from the doc. ==== Docker ==== * The shiny [[https://gitlab.com/pipeline-components/org/config/-/blob/master/pipeline.yml|pipeline.yml]] file from the [[https://pipeline-components.dev/|pipeline-components]] project. * [[https://about.gitlab.com/images/13_3/cartesian-matrix.png]] : Best Practices blog post, including a Drop-in simple Docker CI. ==== Misc ==== * The Debian [[https://salsa.debian.org/salsa-ci-team/pipeline|salsa-ci-team/pipeline]] project * To infinite and beyond: [[https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml|GitLab's own pipeline]] - even the [[https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/ci/rules.gitlab-ci.yml|rules files]] is ~1500 lines long 8-O ===== GitLabForm ===== Long term goal: use https://github.com/egnyte/gitlabform ! Des trucs à faire, voir, explorer, penser: * Un webhook sur ''project_create'' pour faire un coup de sed direct, pour changer les ''{{IMAGENAME}}'' et autres ''{{DEFAULT_COMMAND}}''. Docs and pointers: * https://docs.gitlab.com/ee/development/cicd/templates.html Premium/Gold only :( * https://docs.gitlab.com/ee/user/project/settings/import_export.html ===== Todo/Explore/etc ===== * [[https://web.archive.org/web/20201201114733/https://wes.today/building-multi-arch-docker-images|Multi-architecture Docker images builds]] * [[https://www.docker.com/blog/multi-arch-build-what-about-gitlab-ci/|Pareil mais avec une image buildx pré-construite]] 8-) qu'on trouve sur [[https://github.com/jdrouet/docker-with-buildx/blob/master/Dockerfile|jdrouet/docker-with-buildx]] 8-) ==== Parent-Child Pipelines ==== === Doc === * https://docs.gitlab.com/ee/ci/multi_project_pipelines.html === Examples === (fr) [[https://blog.ippon.fr/2020/07/31/construire-la-ci-dun-monorepo-les-parent-child-pipelines-de-gitlab-ci/]]: monorepo pipelines: * root CI triggers sub-folders' pipelines * android/ builds * iOS/ builds * backend/ builds * what about a QA job that tests everything? [[https://zerotoprod.com/posts/gitlab-ci-advanced/]]: back and forth multiple projects pipelines: * project1 builds => triggers project2's test job. * Project2 tests => triggers back project1's deploy job. * Project1 deploys => triggers Project2's QA's job. * Project2 does QA. * m( ==== Matrix ==== * [[https://about.gitlab.com/releases/2020/08/22/gitlab-13-3-released/#create-a-matrix-of-jobs-using-a-simple-syntax|Blog announce]] * [[https://docs.gitlab.com/ee/ci/yaml/#parallel-matrix-jobs|documentation]] in the ''.gitlab-ci.yml Reference'' deploystacks: stage: deploy script: - bin/deploy parallel: matrix: - PROVIDER: aws STACK: - monitoring - app1 - app2 - PROVIDER: ovh STACK: [monitoring, backup, app] - PROVIDER: [gcp, vultr] STACK: [data, processing] {{https://about.gitlab.com/images/13_3/cartesian-matrix.png|Combination of Architectures, Environments, Versions.}} ===== python-gitlab cheatsheet ===== A wrapper with bash-completion: #!/bin/sh # bash completion /home/tom/.virtualenv/python-gitlab/bin/register-python-argcomplete $( basename $0 ) | bash - # wrapper /home/tom/.virtualenv/python-gitlab/bin/python /home/tom/.virtualenv/python-gitlab/bin/gitlab "$@" ''git pull'' all projects from a group: gitlab-python -o json \ group-project list \ --all --include-subgroups true \ --group-id 9969158 | jq -r '.[].ssh_url_to_repo' \ | xargs ghq get