|
1 | 1 | ---
|
2 |
| -stage: none |
3 |
| -group: unassigned |
4 |
| -info: Any user with at least the Maintainer role can merge updates to this content. For details, see https://docs.gitlab.com/ee/development/development_processes.html#development-guidelines-review. |
| 2 | +redirect_to: 'index.md' |
| 3 | +remove_date: '2025-01-31' |
5 | 4 | ---
|
6 | 5 |
|
7 |
| -# Windows Development |
| 6 | +<!-- markdownlint-disable --> |
8 | 7 |
|
9 |
| -There are times in development where a Windows development machine is needed. |
10 |
| -This is a guide for how to get a Windows development virtual machine on Google Cloud Platform |
11 |
| -(GCP) with the same preinstalled tools as the GitLab shared Windows runners. |
| 8 | +This document was moved to [another location](index.md). |
12 | 9 |
|
13 |
| -## Why Windows in Google Cloud? |
14 |
| - |
15 |
| -Use of Microsoft Windows operating systems on company laptops is banned under the GitLab [Approved Operating Systems policy](https://internal.gitlab.com/handbook/it/it-self-service/operating-systems/). |
16 |
| - |
17 |
| -This can make it difficult to develop features for the Windows platforms. Using GCP allows us to have a temporary Windows machine that can be removed once we're done with it. |
18 |
| - |
19 |
| -## Shared Windows runners |
20 |
| - |
21 |
| -You can use the shared Windows runners in the case that you don't need a full Windows development machine. |
22 |
| -The [GitLab 12.7 Release Post](https://about.gitlab.com/releases/2020/01/22/gitlab-12-7-released/#windows-shared-runners-on-gitlabcom-beta) |
23 |
| -and [Windows shared runner beta blog post](https://about.gitlab.com/blog/2020/01/21/windows-shared-runner-beta/#getting-started) both |
24 |
| -outline quite a bit of useful information. |
25 |
| - |
26 |
| -To use the shared Windows runners add the following `tags` to relevant jobs in your `.gitlab-ci.yml` file: |
27 |
| - |
28 |
| -```yaml |
29 |
| -tags: |
30 |
| - - shared-windows |
31 |
| - - windows |
32 |
| - - windows-1809 |
33 |
| -``` |
34 |
| -
|
35 |
| -A list of software preinstalled on the Windows images is available at: [Preinstalled software](https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/blob/main/cookbooks/preinstalled-software/README.md). |
36 |
| -
|
37 |
| -## GCP Windows image for development |
38 |
| -
|
39 |
| -The [shared Windows GitLab runners](https://about.gitlab.com/releases/2020/01/22/gitlab-12-7-released/#windows-shared-runners-on-gitlabcom-beta) |
40 |
| -are built with [Packer](https://www.packer.io/). |
41 |
| -
|
42 |
| -The Infrastructure as Code repository for building the Google Cloud images is available at: |
43 |
| -[GitLab Google Cloud Platform Shared Runner Images](https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers). |
44 |
| -
|
45 |
| -### Build image |
46 |
| -
|
47 |
| -There is a chance that your Google Cloud group may already have an image |
48 |
| -built. Search the available images before you do the work to build your |
49 |
| -own. |
50 |
| -
|
51 |
| -Build a Google Cloud image with the above shared runners repository by doing the following: |
52 |
| -
|
53 |
| -1. Install [Packer](https://www.packer.io/) (tested to work with version 1.5.1). |
54 |
| -1. Install Packer Windows Update Provisioner. |
55 |
| - 1. Clone the repository <https://github.com/rgl/packer-provisioner-windows-update> and `cd` into the cloned directory. |
56 |
| - 1. Run the command `go build -o packer-provisioner-windows-update` (requires `go` to be installed). |
57 |
| - 1. Verify `packer-provisioner-windows-update` is in the `PATH` environment variable. |
58 |
| -1. Add all [required environment variables](https://gitlab.com/gitlab-org/ci-cd/shared-runners/images/gcp/windows-containers/-/blob/main/packer.json#L2-10) |
59 |
| - in the `packer.json` file to your environment (perhaps use [`direnv`](https://direnv.net/)). |
60 |
| -1. Build the image by running the command: `packer build packer.json`. |
61 |
| - |
62 |
| -## How to use a Windows image in GCP |
63 |
| - |
64 |
| -1. In a web browser, go to the [Google Cloud Platform console](https://console.cloud.google.com/compute/images). |
65 |
| -1. Filter images by the name you used when creating image, `windows` is likely all you need to filter by. |
66 |
| -1. Select the image's name. |
67 |
| -1. Select **CREATE INSTANCE**. |
68 |
| -1. Important: Change name to what you'd like as you can't change it later. |
69 |
| -1. Optional: Change Region to be closest to you as well as any other option you'd like. |
70 |
| -1. Select **Create** at the bottom of the page. |
71 |
| -1. Select the name of your newly created VM Instance (optionally you can filter to find it). |
72 |
| -1. Select **Set Windows password**. |
73 |
| -1. Optional: Set a username or use default. |
74 |
| -1. Select **Next**. |
75 |
| -1. Copy and save the password as it is not shown again. |
76 |
| -1. Select **RDP** down arrow. |
77 |
| -1. Select **Download the RDP file**. |
78 |
| -1. Open the downloaded RDP file with the Windows remote desktop app (<https://learn.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-clients>). |
79 |
| -1. Select **Continue** to accept the certificate. |
80 |
| -1. Enter the password and select **Next**. |
81 |
| - |
82 |
| -You should now be connected into a Windows machine with a command prompt. |
83 |
| - |
84 |
| -### Optional: Use GCP VM Instance as a runner |
85 |
| - |
86 |
| -- Register the runner with a project: `gitlab-runner.exe register`. |
87 |
| -- Install the runner:`gitlab-runner.exe install`. |
88 |
| -- Start the runner: `gitlab-runner.exe start`. |
89 |
| - |
90 |
| -For more information, see [Install GitLab Runner on Windows](https://docs.gitlab.com/runner/install/windows.html) |
91 |
| -and [Registering runners](https://docs.gitlab.com/runner/register/index.html). |
92 |
| - |
93 |
| -## Developer tips |
94 |
| - |
95 |
| -Here are a few tips on GCP and Windows. |
96 |
| - |
97 |
| -### GCP cost savings |
98 |
| - |
99 |
| -To minimize the cost of your GCP VM instance, stop it when you're not using it. |
100 |
| -If you do, you must download the RDP file again from the console as the IP |
101 |
| -address changes every time you stop and start it. |
102 |
| - |
103 |
| -### chocolatey |
104 |
| - |
105 |
| -Chocolatey is a package manager for Windows. You can search for packages on <https://chocolatey.org/>. |
106 |
| - |
107 |
| -- `choco install vim` |
108 |
| - |
109 |
| -### Visual Studio (install / usage for full GUI) |
110 |
| - |
111 |
| -You can install Visual Studio and run it within the Windows Remote Desktop app. |
112 |
| - |
113 |
| -Install it by running: `choco install visualstudio2019community` |
114 |
| - |
115 |
| -Start it by running: `"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe" .` |
116 |
| - |
117 |
| -### .NET 3 support |
118 |
| - |
119 |
| -You can install .NET version 3 support with the following `DISM` command: |
120 |
| - |
121 |
| -`DISM /Online /Enable-Feature /FeatureName:NetFx3 /All` |
122 |
| - |
123 |
| -### nix -> Windows `cmd` tips |
124 |
| - |
125 |
| -The first tip for using the Windows command shell is to open PowerShell and use that instead. |
126 |
| - |
127 |
| -Start PowerShell: `start powershell`. |
128 |
| - |
129 |
| -PowerShell has aliases for all of the following commands so you don't have to learn the native commands: |
130 |
| - |
131 |
| -- `ls` ---> `dir` |
132 |
| -- `rm` ---> `del` |
133 |
| -- `rm -rf nonemptydir` ---> `rmdir /S nonemptydir` |
134 |
| -- `/` ---> <code>\</code> (path separator) |
135 |
| -- `cat` ---> `type` |
136 |
| -- `mv` ---> `move` |
137 |
| -- Redirection works the same (for example, `>` and `2>&1`) |
138 |
| -- `.\some.exe` to call a local executable |
139 |
| -- curl is available |
140 |
| -- `..` and `.` are available |
| 10 | +<!-- This redirect file can be deleted after <2025-01-31>. --> |
| 11 | +<!-- Redirects that point to other docs in the same project expire in three months. --> |
| 12 | +<!-- Redirects that point to docs in a different project or site (for example, link is not relative and starts with `https:`) expire in one year. --> |
| 13 | +<!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> |
0 commit comments