diff --git a/gitlab/bootstrap/gitlab.tar.gz b/gitlab/bootstrap/gitlab.tar.gz new file mode 100644 index 0000000..4ad1807 Binary files /dev/null and b/gitlab/bootstrap/gitlab.tar.gz differ diff --git a/gitlab/bootstrap/setup.sh b/gitlab/bootstrap/setup.sh new file mode 100755 index 0000000..7d7f846 --- /dev/null +++ b/gitlab/bootstrap/setup.sh @@ -0,0 +1,43 @@ +#!/usr/bin/env bash +container_name="gitlab" + +if [ ! -d /srv/data ]; then + echo "Extracting GitLab data" + sudo tar -xzf gitlab/bootstrap/gitlab.tar.gz -C /srv +fi + +echo -e "Checking for GitLab \U1F575" + +if [ "$(docker ps -a | grep $container_name)" ]; then + echo -e "GitLab is running \U1F603" + docker start $container_name +else + echo -e "Starting new GitLab container \U1F4E0" + docker run --detach \ + --hostname 172.17.0.2 \ + --publish 80:80 \ + --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-ee:latest + + # updates file permissions to avoid git and server errors + docker exec -it gitlab update-permissions &> /dev/null +fi + +# allow valet to talk to GitLab by removing network isolation between containers +export DOCKER_ARGS="--network=host" +`grep -q "export DOCKER_ARGS=" ~/.bashrc || echo 'export DOCKER_ARGS="--network=host"' >> ~/.bashrc` + +echo -e "\U23F0 Waiting for GitLab to be ready. This might take a while..." +until $(curl --output /dev/null --silent --head --fail http://localhost); do + printf '.' + sleep 5 +done + +echo -e '\nGitLab is up and running! \U1F680' +echo "Username: root" +docker exec -it $container_name grep 'Password:' /etc/gitlab/initial_root_password \ No newline at end of file diff --git a/gitlab/readme.md b/gitlab/readme.md new file mode 100644 index 0000000..67913b8 --- /dev/null +++ b/gitlab/readme.md @@ -0,0 +1,61 @@ +# Valet labs for GitLab + +This lab bootstraps a Valet environment using GitHub Codespaces and enables you to run the Valet CI/CD migration tool against a isolated GitLab instance running in Docker. + +- [Use this Repo as a template](#repo-template) +- [Prerequisites](#prerequisites) +- [Codespace secrets](#codespace-secrets) +- [Action secrets](#action-secrets) +- [Azure DevOps project creation](#azure-devops-project-creation) +- [Use Valet with a codespace](#use-valet-with-a-codespace) +- [Labs for Azure DevOps](#labs-for-azure-devops) + +## Repo template + +1. Verify you are in your own Repository created from the landing page [Valet Labs](https://github.com/valet-customers/labs). + +## Prerequisites +1. Create a GitHub personal access token. + - To do so, navigate to your GitHub `Settings` - click your profile photo and then click `Settings`. + - Go to `Developer Settings` + - Go to `Personal Access Tokens` -> `Legacy tokens (if present)` + - Click `Generate new token` -> `Legacy tokens (if present)`. If required, provide your password. + - Select at least these scopes: `read packages` and `workflow`. Optionally, provide a text in the **Note** field and change the expiration. + - Click `Generate token` + - Copy the PAT somewhere safe and temporary. + +## Codespace secrets +Please add the following Codespace secrets. +- `VALET_GHCR_PASSWORD`: Add `VALET_GHCR_PASSWORD` as the `Name` and the GitHub personal access token created above as the value. + +Steps to create the Codespace secrets. Complete for secret noted above: + +- Navigate to the `Settings` tab in this repo +- Find `Secrets` and click the down arrow +- Click `Codespaces` +- Click `New Repository Secret` to create a new secret +- Name the secret as noted above +- Paste in the value noted above +- Click `Add Secret` + +## Use Valet with a codespace + +1. Start the codespace + - Click the `Code` with button down arrow above repository on the repository's landing page. + - Click the `Codespaces` tab + - Click `Create codespaces on main` to create the codespace. If you are in another branch then the `main` branch, the codespace will button will have the current branch specified. + - Wait a couple minutes, then verify that the codespace starts up. Once it is fully booted up, the termininal should be present. +2. Verify Valet CLI is installed and working. More information on the [GitHub Valet CLI extension](https://github.com/github/gh-valet) + - Verify Valet CLI is installed and working + - Run `gh valet version` in the Visual Studio Code terminal and verify the output looks like the below image. Note the valet version will be different than below as the latest version gets pulled down. + - If `gh valet version` did not produce a similar image with a version please follow these instructions [Troubleshoot GH Valet extension](#troubleshoot-gh-valet-extension) + - Start using Valet by following along with the [Labs for Azure DevOps](#labs-for-azure-devops) +3. Run GitLab setup script. This script will setup GitLab and ensure it is ready to use. In general, this script should be run first if you are starting a new codespace or restarting a existing one. + - In the codespace terminal run `source gitlab/bootstrap/setup.sh` + +## Labs for GitLab +Perform the following labs to test-drive Valet +- TBD + +## Troubleshoot GH Valet extension +TBD