Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: new plugin gitlab-ce-docker #692

Merged
merged 6 commits into from
Jun 21, 2022

Conversation

aFlyBird0
Copy link
Member

@aFlyBird0 aFlyBird0 commented Jun 19, 2022

Pre-Checklist

Note: please complete ALL items in the following checklist.

  • I have read through the CONTRIBUTING.md documentation.
  • My code has the necessary comments and documentation (if needed).
  • I have added relevant tests

Description

  1. This plugin installs Gitlab-ce-docker in an existing docker.
  2. It uses shell to operate docker.

Related Issues

close #509

New Behavior (screenshots if needed)

1. Run dtm init. It is skipped due to the development version.

2. Run dtm apply for the first time.

root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# ./dtm apply -f gitlab-ce-docker.yaml  -y
2022-06-19 17:33:48 ℹ [INFO]  Apply started.
2022-06-19 17:33:48 ℹ [INFO]  Got Backend from config: local
2022-06-19 17:33:48 ℹ [INFO]  Using dir <.devstream> to store plugins.
2022-06-19 17:33:48 ℹ [INFO]  Using local backend. State file: devstream.state.
2022-06-19 17:33:48 ℹ [INFO]  Tool (gitlab-ce-docker/default) found in config but doesn't exist in the state, will be created.
2022-06-19 17:33:48 ℹ [INFO]  Start executing the plan.
2022-06-19 17:33:48 ℹ [INFO]  Changes count: 1.
2022-06-19 17:33:48 ℹ [INFO]  -------------------- [  Processing progress: 1/1.  ] --------------------
2022-06-19 17:33:48 ℹ [INFO]  Processing: (gitlab-ce-docker/default) -> Create ...
Stdout: rc: Pulling from gitlab/gitlab-ce
Stdout: d7bfe07ed847: Pulling fs layer
Stdout: 16e9d4c7ab95: Pulling fs layer
Stdout: 3da81e5df18e: Pulling fs layer
Stdout: 0a861474c2cc: Pulling fs layer
...
...
Stdout: 0a861474c2cc: Pull complete
Stdout: 0d1234e64a73: Pull complete
Stdout: b043aadf974e: Pull complete
Stdout: 941e1df16dd8: Pull complete
Stdout: 426dd5d47e05: Verifying Checksum
Stdout: 426dd5d47e05: Download complete
Stdout: 426dd5d47e05: Pull complete
Stdout: Digest: sha256:3db38bd7e5efc6b5d2582c1285328e82973131f52b09a16913671deec3ee9cb6
Stdout: Status: Downloaded newer image for gitlab/gitlab-ce:rc
Stdout: docker.io/gitlab/gitlab-ce:rc
2022-06-19 17:38:22 ℹ [INFO]  Running container as the name <gitlab>
Stdout: d36a2ebedd1c92fb4c0c3f3f040d36b8be2725cfeeaa14fe74b4ef01dc7df854
2022-06-19 17:38:24 ✔ [SUCCESS]  Tool (gitlab-ce-docker/default) Create done.
2022-06-19 17:38:24 ℹ [INFO]  -------------------- [  Processing done.  ] --------------------
2022-06-19 17:38:24 ✔ [SUCCESS]  All plugins applied successfully.
2022-06-19 17:38:24 ✔ [SUCCESS]  Apply finished.

image

3. Run dtm apply again.

root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# ./dtm apply -f gitlab-ce-docker.yaml  -y2022-06-19 18:23:08 ℹ [INFO]  Apply started.
2022-06-19 18:23:08 ℹ [INFO]  Got Backend from config: local
2022-06-19 18:23:08 ℹ [INFO]  Using dir <.devstream> to store plugins.
2022-06-19 18:23:08 ℹ [INFO]  Using local backend. State file: devstream.state.
2022-06-19 18:23:08 ℹ [INFO]  No changes done since last apply. There is nothing to do.
2022-06-19 18:23:08 ✔ [SUCCESS]  Apply finished.

4. Update ssh_port in config file and run dtm apply. (port 8122 -> 8123)

root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# ./dtm apply -f gitlab-ce-docker.yaml  -y --debug
2022-06-19 18:25:36 ℹ [INFO]  Log level is: debug.
2022-06-19 18:25:36 ℹ [INFO]  Apply started.
2022-06-19 18:25:36 λ [DEBUG]  Original config: 
---
# core config
varFile: "" # If not empty, use the specified external variables config file
toolFile: "" # If not empty, use the specified external tools config file
state: # state config, backend can be local or s3
  backend: local
  options:
    stateFile: devstream.state

---

tools:
# name of the tool
- name: gitlab-ce-docker
  # id of the tool instance
  instanceID: default
  # format: name.instanceID; If specified, dtm will make sure the dependency is applied first before handling this tool.
  dependsOn: [ ]
  # options for the plugin
  options:
    # hostname for running docker
    hostname: gitlab.devstream.io
    # the path where you store docker volumes of gitlab
    gitlab_home: /srv/gitlab
    # ssh port exposed in the host machine
    ssh_port: 8123
    # http port exposed in the host machine
    http_port: 8180
    # https port exposed in the host machine
    # todo: support https, reference: https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https
    https_port: 8443


2022-06-19 18:25:36 ℹ [INFO]  Got Backend from config: local
2022-06-19 18:25:36 ℹ [INFO]  Using dir <.devstream> to store plugins.
2022-06-19 18:25:36 λ [DEBUG]  The global manager m is not initialized.
2022-06-19 18:25:36 ℹ [INFO]  Using local backend. State file: devstream.state.
2022-06-19 18:25:36 λ [DEBUG]  Used the Backend: local.
2022-06-19 18:25:36 λ [DEBUG]  Got a state from the backend: gitlab-ce-docker_default -> {gitlab-ce-docker default [] map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8122] map[HTTPPort:8180 HTTPSPort:8443 SSHPort:8122 containerRunning:true hostname:gitlab.devstream.io volumes:/srv/gitlab/config,/srv/gitlab/data,/srv/gitlab/logs]}.
2022-06-19 18:25:36 λ [DEBUG]  isForce:false
2022-06-19 18:25:36 λ [DEBUG]  TOOL gitlab-ce-docker.default dependency already solved

2022-06-19 18:25:36 λ [DEBUG]  BATCH: [{gitlab-ce-docker default [] map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8123]}]
2022-06-19 18:25:36 λ [DEBUG]    map[string]any{
        ... // 2 identical entries
        "http_port":  int(8180),
        "https_port": int(8443),
-       "ssh_port":   int(8123),
+       "ssh_port":   int(8122),
  }

2022-06-19 18:25:36 λ [DEBUG]  Changes for the plan:
2022-06-19 18:25:36 λ [DEBUG]  Change - 1/1 -> 
{
  ActionName: Update,
  Tool: {Name: gitlab-ce-docker, InstanceID: default}}
}
2022-06-19 18:25:36 ℹ [INFO]  Tool (gitlab-ce-docker/default) config drifted from the state, will be updated.
2022-06-19 18:25:36 ℹ [INFO]  Start executing the plan.
2022-06-19 18:25:36 ℹ [INFO]  Changes count: 1.
2022-06-19 18:25:36 λ [DEBUG]  TOOL gitlab-ce-docker.default dependency already solved

2022-06-19 18:25:36 λ [DEBUG]  BATCH: [{gitlab-ce-docker default [] map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8123]}]
2022-06-19 18:25:36 ℹ [INFO]  -------------------- [  Processing progress: 1/1.  ] --------------------
2022-06-19 18:25:36 ℹ [INFO]  Processing: (gitlab-ce-docker/default) -> Update ...
2022-06-19 18:25:36 λ [DEBUG]  Tool's raw changes are: map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8123].
2022-06-19 18:25:36 λ [DEBUG]  Container gitlab volumes: [/srv/gitlab/config /srv/gitlab/data /srv/gitlab/logs]
2022-06-19 18:25:36 ℹ [INFO]  Stopping container gitlab ...
Stdout: gitlab
2022-06-19 18:25:46 ℹ [INFO]  Removing container gitlab ...
Stdout: gitlab
2022-06-19 18:25:46 λ [DEBUG]  Docker run command: 
        docker run --detach \
        --hostname gitlab.devstream.io \
        --publish 8443:443 --publish 8180:80 --publish 8123:22 \
        --name gitlab \
        --restart always \
        --volume /srv/gitlab/config:/etc/gitlab \
        --volume /srv/gitlab/logs:/var/log/gitlab \
        --volume /srv/gitlab/data:/var/opt/gitlab \
        --shm-size 256m \
        gitlab/gitlab-ce:rc

Stdout: 610fe9177eb956d4bf9e5f4589914d3fd04f37f8f08916cfb91aa514ed649d38
2022-06-19 18:25:47 λ [DEBUG]  Start -> StatesMap now is:
gitlab-ce-docker_default:
  name: gitlab-ce-docker
  instanceid: default
  dependson: []
  options:
    gitlab_home: /srv/gitlab
    hostname: gitlab.devstream.io
    http_port: 8180
    https_port: 8443
    ssh_port: 8122
  resource:
    HTTPPort: "8180"
    HTTPSPort: "8443"
    SSHPort: "8122"
    containerRunning: true
    hostname: gitlab.devstream.io
    volumes: /srv/gitlab/config,/srv/gitlab/data,/srv/gitlab/logs

2022-06-19 18:25:47 ✔ [SUCCESS]  Tool (gitlab-ce-docker/default) Update done.
2022-06-19 18:25:47 λ [DEBUG]  End -> StatesMap now is:
gitlab-ce-docker_default:
  name: gitlab-ce-docker
  instanceid: default
  dependson: []
  options:
    gitlab_home: /srv/gitlab
    hostname: gitlab.devstream.io
    http_port: 8180
    https_port: 8443
    ssh_port: 8123
  resource:
    HTTPPort: "8180"
    HTTPSPort: "8443"
    SSHPort: "8123"
    containerRunning: true
    hostname: gitlab.devstream.io
    volumes: /srv/gitlab/config,/srv/gitlab/data,/srv/gitlab/logs

2022-06-19 18:25:47 ℹ [INFO]  -------------------- [  Processing done.  ] --------------------
2022-06-19 18:25:47 ✔ [SUCCESS]  All plugins applied successfully.
2022-06-19 18:25:47 ✔ [SUCCESS]  Apply finished.

4. Test if the plugin could detect the chanes of running docker.

Now the ssh port is 8123
image

Let's change the ssh port of running docker into 8122.

root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# docker stop gitlab
gitlab
root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# docker rm gitlab
gitlab
root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# docker run --detach \
> --hostname gitlab.devstream.io \
> --publish 8443:443 --publish 8180:80 --publish 8122:22 \
> --name gitlab \
> --restart always \
> --volume /srv/gitlab/config:/etc/gitlab \
> --volume /srv/gitlab/logs:/var/log/gitlab \
> --volume /srv/gitlab/data:/var/opt/gitlab \
> --shm-size 256m \
> gitlab/gitlab-ce:rc
546b8fc047c05debfee43b850b28806ef82c0c444e944a82b0a30db441ab6dfd
root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# ./dtm apply -f gitlab-ce-docker.yaml  -y --debug2022-06-19 18:49:30 ℹ [INFO]  Log level is: debug.2022-06-19 18:49:30 ℹ [INFO]  Apply started.
2022-06-19 18:49:30 λ [DEBUG]  Original config: 
---
# core config
varFile: "" # If not empty, use the specified external variables config file
toolFile: "" # If not empty, use the specified external tools config file
state: # state config, backend can be local or s3
  backend: local
  options:
    stateFile: devstream.state

---

tools:
# name of the tool
- name: gitlab-ce-docker
  # id of the tool instance
  instanceID: default
  # format: name.instanceID; If specified, dtm will make sure the dependency is applied first before handling this tool.
  dependsOn: [ ]
  # options for the plugin
  options:
    # hostname for running docker
    hostname: gitlab.devstream.io
    # the path where you store docker volumes of gitlab
    gitlab_home: /srv/gitlab
    # ssh port exposed in the host machine
    ssh_port: 8123
    # http port exposed in the host machine
    http_port: 8180
    # https port exposed in the host machine
    # todo: support https, reference: https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https
    https_port: 8443


2022-06-19 18:49:30 ℹ [INFO]  Got Backend from config: local
2022-06-19 18:49:30 ℹ [INFO]  Using dir <.devstream> to store plugins.
2022-06-19 18:49:30 λ [DEBUG]  The global manager m is not initialized.
2022-06-19 18:49:30 ℹ [INFO]  Using local backend. State file: devstream.state.
2022-06-19 18:49:30 λ [DEBUG]  Used the Backend: local.
2022-06-19 18:49:30 λ [DEBUG]  Got a state from the backend: gitlab-ce-docker_default -> {gitlab-ce-docker default [] map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8123] map[HTTPPort:8180 HTTPSPort:8443 SSHPort:8123 containerRunning:true hostname:gitlab.devstream.io volumes:/srv/gitlab/config,/srv/gitlab/data,/srv/gitlab/logs]}.
2022-06-19 18:49:30 λ [DEBUG]  isForce:false
2022-06-19 18:49:30 λ [DEBUG]  TOOL gitlab-ce-docker.default dependency already solved

2022-06-19 18:49:30 λ [DEBUG]  BATCH: [{gitlab-ce-docker default [] map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8123]}]
2022-06-19 18:49:30 λ [DEBUG]  Container gitlab volumes: [/srv/gitlab/config /srv/gitlab/data /srv/gitlab/logs]
2022-06-19 18:49:30 λ [DEBUG]  Container gitlab port bindings: [22/tcp->8122 443/tcp->8443 80/tcp->8180]
2022-06-19 18:49:30 λ [DEBUG]  Container gitlab port bindings: [22/tcp->8122 443/tcp->8443 80/tcp->8180]
2022-06-19 18:49:30 λ [DEBUG]  Container gitlab port bindings: [22/tcp->8122 443/tcp->8443 80/tcp->8180]
2022-06-19 18:49:30 λ [DEBUG]    map[string]any{
        "HTTPPort":         string("8180"),
        "HTTPSPort":        string("8443"),
-       "SSHPort":          string("8122"),
+       "SSHPort":          string("8123"),
        "containerRunning": bool(true),
        "hostname":         string("gitlab.devstream.io"),
        "volumes":          string("/srv/gitlab/config,/srv/gitlab/data,/srv/gitlab/logs"),
  }

2022-06-19 18:49:30 λ [DEBUG]  Changes for the plan:
2022-06-19 18:49:30 λ [DEBUG]  Change - 1/1 -> 
{
  ActionName: Update,
  Tool: {Name: gitlab-ce-docker, InstanceID: default}}
}
2022-06-19 18:49:30 ℹ [INFO]  Tool (gitlab-ce-docker/default) drifted from the state, will be updated.
2022-06-19 18:49:30 ℹ [INFO]  Start executing the plan.
2022-06-19 18:49:30 ℹ [INFO]  Changes count: 1.
2022-06-19 18:49:30 λ [DEBUG]  TOOL gitlab-ce-docker.default dependency already solved

2022-06-19 18:49:30 λ [DEBUG]  BATCH: [{gitlab-ce-docker default [] map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8123]}]
2022-06-19 18:49:30 ℹ [INFO]  -------------------- [  Processing progress: 1/1.  ] --------------------
2022-06-19 18:49:30 ℹ [INFO]  Processing: (gitlab-ce-docker/default) -> Update ...
2022-06-19 18:49:30 λ [DEBUG]  Tool's raw changes are: map[gitlab_home:/srv/gitlab hostname:gitlab.devstream.io http_port:8180 https_port:8443 ssh_port:8123].
2022-06-19 18:49:30 λ [DEBUG]  Container gitlab volumes: [/srv/gitlab/config /srv/gitlab/data /srv/gitlab/logs]
2022-06-19 18:49:30 ℹ [INFO]  Stopping container gitlab ...
Stdout: gitlab
2022-06-19 18:49:41 ℹ [INFO]  Removing container gitlab ...
Stdout: gitlab
2022-06-19 18:49:41 λ [DEBUG]  Docker run command: 
        docker run --detach \
        --hostname gitlab.devstream.io \
        --publish 8443:443 --publish 8180:80 --publish 8123:22 \
        --name gitlab \
        --restart always \
        --volume /srv/gitlab/config:/etc/gitlab \
        --volume /srv/gitlab/logs:/var/log/gitlab \
        --volume /srv/gitlab/data:/var/opt/gitlab \
        --shm-size 256m \
        gitlab/gitlab-ce:rc

Stdout: 47b19cdbd2b1b9fa90c510c5cdb56efdc5c3ba08014474efa2bcc1e9756c9d8a
2022-06-19 18:49:41 λ [DEBUG]  Start -> StatesMap now is:
gitlab-ce-docker_default:
  name: gitlab-ce-docker
  instanceid: default
  dependson: []
  options:
    gitlab_home: /srv/gitlab
    hostname: gitlab.devstream.io
    http_port: 8180
    https_port: 8443
    ssh_port: 8123
  resource:
    HTTPPort: "8180"
    HTTPSPort: "8443"
    SSHPort: "8123"
    containerRunning: true
    hostname: gitlab.devstream.io
    volumes: /srv/gitlab/config,/srv/gitlab/data,/srv/gitlab/logs

2022-06-19 18:49:41 ✔ [SUCCESS]  Tool (gitlab-ce-docker/default) Update done.
2022-06-19 18:49:41 λ [DEBUG]  End -> StatesMap now is:
gitlab-ce-docker_default:
  name: gitlab-ce-docker
  instanceid: default
  dependson: []
  options:
    gitlab_home: /srv/gitlab
    hostname: gitlab.devstream.io
    http_port: 8180
    https_port: 8443
    ssh_port: 8123
  resource:
    HTTPPort: "8180"
    HTTPSPort: "8443"
    SSHPort: "8123"
    containerRunning: true
    hostname: gitlab.devstream.io
    volumes: /srv/gitlab/config,/srv/gitlab/data,/srv/gitlab/logs

2022-06-19 18:49:41 ℹ [INFO]  -------------------- [  Processing done.  ] --------------------
2022-06-19 18:49:41 ✔ [SUCCESS]  All plugins applied successfully.
2022-06-19 18:49:41 ✔ [SUCCESS]  Apply finished.

5. Run dtm delete with the version of latest commit.

root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# ./dtm delete -f gitlab-ce-docker.yaml
2022-06-20 01:16:25 ℹ [INFO]  Delete started.
2022-06-20 01:16:25 ℹ [INFO]  Got Backend from config: local
2022-06-20 01:16:25 ℹ [INFO]  Using dir <.devstream> to store plugins.
2022-06-20 01:16:25 ℹ [INFO]  Using local backend. State file: devstream.state.
2022-06-20 01:16:25 ℹ [INFO]  Tool (gitlab-ce-docker/default) will be deleted.
Continue? [y/n]
Enter a value (Default is n): y

2022-06-20 01:16:26 ℹ [INFO]  Start executing the plan.
2022-06-20 01:16:26 ℹ [INFO]  Changes count: 1.
2022-06-20 01:16:26 ℹ [INFO]  -------------------- [  Processing progress: 1/1.  ] --------------------
2022-06-20 01:16:26 ℹ [INFO]  Processing: (gitlab-ce-docker/default) -> Delete ...
2022-06-20 01:16:27 ℹ [INFO]  Stopping container gitlab ...
Stdout: gitlab
2022-06-20 01:16:37 ℹ [INFO]  Removing container gitlab ...
Stdout: gitlab
2022-06-20 01:16:37 ℹ [INFO]  Removing image gitlab/gitlab-ce:rc ...
Stdout: Untagged: gitlab/gitlab-ce:rc
Stdout: Untagged: gitlab/gitlab-ce@sha256:3db38bd7e5efc6b5d2582c1285328e82973131f52b09a16913671deec3ee9cb6
Stdout: Deleted: sha256:a8543d702e3936433d24afc671741a3e2ca02cf32f8d848f6675ae86f32f1b05
Stdout: Deleted: sha256:d26f7e023c7ddd4bc1e00d40efcaeb3d17f02e502e943c4d9f4ed8130dbc4c70
Stdout: Deleted: sha256:de0c0b8630d43307f7c294890944cac539f9b6973f2d95a040a71ccafa1f2175
Stdout: Deleted: sha256:7b424332bad6bf172fb5f48ab036085ccd7f6619cf22a806a684f1d6cf738ff5
Stdout: Deleted: sha256:8d7586ee0cadfe1379632385d6786c3e9982274cb08414e06124066299b88a5e
Stdout: Deleted: sha256:3575fd0b8f841d143d53daaa6c315b4b7fe109ac1bf1241fa6b861558f28d66f
Stdout: Deleted: sha256:d03432d839d54e194629634ec61c57b62317f20838105d6859948e20a2e5efc3
Stdout: Deleted: sha256:67ce837fd3a347c45d7c2925e0ad8771f649ac96573cc563048e536dca8cb12d
Stdout: Deleted: sha256:af7ed92504ae4c20128a0f01048d41d467fef5c795c38d0defdb998a187ed1d4
2022-06-20 01:16:43 ℹ [INFO]  Prepare to delete 'gitlab-ce-docker_default' from States.
2022-06-20 01:16:43 ✔ [SUCCESS]  Tool (gitlab-ce-docker/default) delete done.
2022-06-20 01:16:43 ℹ [INFO]  -------------------- [  Processing done.  ] --------------------
2022-06-20 01:16:43 ✔ [SUCCESS]  All plugins deleted successfully.
2022-06-20 01:16:43 ✔ [SUCCESS]  Delete finished.
root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# docker ps 
CONTAINER ID   IMAGE                    COMMAND                  CREATED       STATUS       PORTS     NAMES
root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# docker image ls gitlab/gitlab-ce:rc
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
root@VM-16-17-ubuntu:/home/lhp/gitlab-ce-docker-test# 

Addition

  1. I didn't write many code comments because I think most of the code is self-explanatory and writing comments would be more confusing. If anyone thinks it is needed please feel free to tell me.
  2. I didn't write unit tests because it is hard and I think it is suitable to test in e2e tests.

@aFlyBird0 aFlyBird0 requested a review from a team as a code owner June 19, 2022 10:32
@aFlyBird0
Copy link
Member Author

There is a bug: the interface of Read shouldn't return errors even if failed to read ports, volumes, hostname.

Because:

  1. When the docker is stopped it could cause these errors.
  2. If Read failed, the following steps contain the docker's restart will be aborted.

Copy link
Member

@daniel-hutao daniel-hutao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the comment.

@aFlyBird0 aFlyBird0 requested a review from daniel-hutao June 20, 2022 11:20
Copy link
Member

@daniel-hutao daniel-hutao left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@daniel-hutao daniel-hutao merged commit 1f7813d into devstream-io:main Jun 21, 2022
@aFlyBird0 aFlyBird0 deleted the gitlab-ce-docker branch June 30, 2022 05:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

🍀 Proposal: New Plugin Development: GitLab CE
3 participants