Skip to content

Commit 4a921d0

Browse files
authored
Merge pull request #202 from tSQLt-org/VSCCI
Created devcontainer environment for development and fixed CI pipeline accordingly.
2 parents ecf1ae2 + 12532f4 commit 4a921d0

File tree

174 files changed

+4916
-7770
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+4916
-7770
lines changed

.devcontainer/Dockerfile

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Use the specified image as the base
2+
FROM mcr.microsoft.com/devcontainers/base:bullseye
3+
4+
# Set environment variables, if any
5+
# ENV MY_ENV_VAR=my_value
6+
7+
# Run package updates and install packages
8+
RUN apt-get update
9+
10+
11+
CMD code --install-extension ms-mssql.mssql
12+
13+
USER vscode
14+
RUN curl https://run.spawn.cc/install | sh
15+
ENV PATH="/home/vscode/.spawnctl/bin:$PATH"
16+
17+
USER root
18+
RUN apt-get update && apt-get install -y curl gnupg software-properties-common \
19+
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
20+
&& chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
21+
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list \
22+
&& apt-get update \
23+
&& apt-get install -y gh
24+
25+
RUN apt-get update && \
26+
apt-get install -y mono-complete
27+
28+
ENV TSQLTCERTPATH /var/tSQLtCertTemp
29+
ENV TSQLTCERTPASSWORD P@ssw0rdP@ssw0rdP@ssw0rdP@ssw0rd
30+
RUN mkdir -p $TSQLTCERTPATH && \
31+
chmod 777 $TSQLTCERTPATH
32+
33+
# Add the Microsoft SQL Server repository
34+
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
35+
&& curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/msprod.list
36+
37+
RUN apt-get update
38+
ENV ACCEPT_EULA=Y
39+
RUN apt-get install -y mssql-tools unixodbc-dev
40+
ENV PATH="$PATH:/opt/mssql-tools/bin"
41+
42+
RUN apt-get install -y unzip
43+
44+
RUN curl -L https://aka.ms/sqlpackage-linux -o sqlpackage.zip \
45+
&& unzip sqlpackage.zip -d /opt/sqlpackage \
46+
&& chmod +x /opt/sqlpackage/sqlpackage \
47+
&& rm sqlpackage.zip
48+
ENV PATH="$PATH:/opt/sqlpackage"
49+
50+
RUN apt-get install -y wget apt-transport-https software-properties-common && \
51+
wget -q "https://packages.microsoft.com/config/debian/$(. /etc/os-release && echo $VERSION_ID)/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb && \
52+
dpkg -i packages-microsoft-prod.deb && \
53+
apt-get update && \
54+
apt-get install -y powershell
55+
56+
RUN pwsh -Command "Install-Module -Name SqlServer -Scope AllUsers -AllowClobber -Force"
57+
58+
RUN pwsh -Command "Install-Module -Name Az -AllowClobber -Scope AllUsers -Force"
59+
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
60+
RUN curl -Lo bicep https://github.com/Azure/bicep/releases/latest/download/bicep-linux-x64 \
61+
&& chmod +x ./bicep \
62+
&& mv ./bicep /usr/local/bin/bicep
63+
64+
# Set the default shell to PowerShell
65+
SHELL ["pwsh", "-Command"]
66+
67+

.devcontainer/devcontainer.json

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2+
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-in-docker
3+
{
4+
"name": "Docker in Docker",
5+
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
6+
//"image": "mcr.microsoft.com/devcontainers/base:bullseye",
7+
//"image": "mcr.microsoft.com/mssql/server:2022-latest",
8+
// "image": "mcr.microsoft.com/devcontainers/base:bullseye",
9+
"build": {
10+
// Path is relataive to the devcontainer.json file.
11+
"dockerfile": "Dockerfile"
12+
},
13+
14+
"features": {
15+
"ghcr.io/devcontainers/features/docker-in-docker:2": {
16+
"version": "latest",
17+
"enableNonRootDocker": "true",
18+
"moby": "true"
19+
},
20+
// "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
21+
"ghcr.io/devcontainers/features/dotnet:1": {},
22+
"ghcr.io/devcontainers/features/git:1": {},
23+
// "ghcr.io/devcontainers/features/git-lfs:1": {},
24+
// "ghcr.io/devcontainers/features/github-cli:1": {},
25+
// "ghcr.io/devcontainers/features/go:1": {},
26+
// "ghcr.io/devcontainers/features/powershell:1": {},
27+
// "ghcr.io/devcontainers/features/python:1": {},
28+
},
29+
30+
// Use this environment variable if you need to bind mount your local source code into a new container.
31+
"remoteEnv": {
32+
"LOCAL_WORKSPACE_FOLDER": "${localWorkspaceFolder}"
33+
},
34+
35+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
36+
"forwardPorts": [],
37+
38+
"customizations": {
39+
"vscode": {
40+
"settings": {
41+
"remote.autoForwardPorts": false
42+
},
43+
"extensions": [
44+
"ms-mssql.mssql",
45+
"redhat.vscode-yaml",
46+
"ms-vscode.powershell",
47+
"ms-azuretools.vscode-docker",
48+
"ms-mssql.sql-bindings-vscode",
49+
"ms-mssql.sql-database-projects-vscode",
50+
"ms-mssql.data-workspace-vscode",
51+
"github.vscode-github-actions",
52+
"ms-dotnettools.csdevkit",
53+
"ms-vscode.powershell",
54+
"ms-azuretools.vscode-bicep",
55+
]
56+
}
57+
},
58+
59+
// Use 'postCreateCommand' to run commands after the container is created.
60+
"postCreateCommand": ["/bin/sh", "-c", "whoami && pwd && chmod 777 ./.devcontainer/postCreateCommand.sh && ./.devcontainer/postCreateCommand.sh"], //
61+
62+
// Use 'postStartCommand' to run commands after the container is created.
63+
"postStartCommand": ["/bin/sh", "-c", "whoami && pwd && chmod 777 ./.devcontainer/postStartCommand.sh && ./.devcontainer/postStartCommand.sh"], //
64+
65+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
66+
// "remoteUser": "root"
67+
}
68+
69+

.devcontainer/postCreateCommand.sh

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
cd "$(dirname "$0")"
2+
3+
docker --version
4+
docker-compose -f sqlserver.yml up -d --force-recreate
5+
6+
cd "$TSQLTCERTPATH"
7+
openssl req -x509 -newkey rsa:4096 -keyout tSQLtOfficialSigningKey.key -out tSQLtOfficialSigningKey.crt -days 365 -nodes -subj "/CN=yourdomain.com"
8+
openssl pkcs12 -export -out tSQLtOfficialSigningKey.pfx -inkey tSQLtOfficialSigningKey.key -in tSQLtOfficialSigningKey.crt -passout pass:"$TSQLTCERTPASSWORD"
9+
10+
11+
# pwsh -File ../tSQLt/PrepareServer.ps1

.devcontainer/postStartCommand.sh

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
cd "$(dirname "$0")"
2+
3+
docker --version
4+
docker-compose -f sqlserver.yml up -d

.devcontainer/sqlserver.yml

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: "3"
2+
services:
3+
sql_server:
4+
image: mcr.microsoft.com/mssql/server:2022-latest
5+
ports:
6+
- "1433:1433"
7+
environment:
8+
ACCEPT_EULA: 'Y'
9+
MSSQL_SA_PASSWORD: 'P@ssw0rd'
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
-----BEGIN CERTIFICATE-----
2+
MIIFEzCCAvugAwIBAgIUA+19JzEdOm4/g23a0HCbrZuMPGMwDQYJKoZIhvcNAQEL
3+
BQAwGTEXMBUGA1UEAwwOeW91cmRvbWFpbi5jb20wHhcNMjMxMjAxMjAxMzA5WhcN
4+
MjQxMTMwMjAxMzA5WjAZMRcwFQYDVQQDDA55b3VyZG9tYWluLmNvbTCCAiIwDQYJ
5+
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAOss5YSKp/ARdrfH7M20JT6y8KvX0iIj
6+
26oMM/JgeAvzNHt7CRnneVtJQpQTpfT0ugskolBV/XHGJ+3bOdnTsDiWea6dZ7zq
7+
SOIB0T3R+dA3EDFNUaVysVvrKzLU/GZL9RsZpMyvNUoChcL7UyTp+RWvS0reFCtp
8+
wpoLsrE0YCFckoDCFiKFivdLg/eESJyeR6W3fq+8XrlqZ2Vin+FbukH/eTC3aoUO
9+
s9z25K6v8nDn4EwqgDGdPyyU4EqnFy5oxEWwd1YoGQjXbGXTVZ6L8nUySadr8yXh
10+
DAc2Orsd0RN5r6vJJFDbxbab0mYayyq7ZfoGjKVbgUS2jZHMpDUhgnTjXD+oI7PV
11+
TrIqnY0pRTzh8xVOgFQP8H5J9aIS/tZDvImItmZ9MR1w/PoXt4VHd7nR8NMG/68I
12+
f9CXSj3Fza+bCw3az+PTd04BC14kxXMPfRahu2KB4TZJBOQeTRJaB0aq8Lo1hZE0
13+
R6Amds3ouMo0jRww1LJ2r7CLRRp0CXRn+xD3e1GjcFQrW4vKTjR+7fSzJmpbl0Gf
14+
XvicJBxLUSx6fIr1eEzEIy5zeZi2gK+SZ8zwIoN1xLKnED2WY2fYupuuw1CsG+vP
15+
61087mJc1WCZGaTP2iQgfp7/P+WApzbM4Rvtbem1K9Jtq/F+EHHVJOZXqs50/+Lu
16+
cz8DgvBWV5sxAgMBAAGjUzBRMB0GA1UdDgQWBBTSgnxtHjMiZWC78QZOjshCcwjh
17+
XTAfBgNVHSMEGDAWgBTSgnxtHjMiZWC78QZOjshCcwjhXTAPBgNVHRMBAf8EBTAD
18+
AQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCLpIQhtjlyu1J4tVASpA4BhCVbjibDYZQF
19+
xJ2Bbpkk/LcspV3Ekgij1aQBQNwoEPbU3uxog+xJr8hWuN5GmU2btCToeG2C7OKA
20+
Zn7USHuPoFUV8FA1MAS4iFrQOnZykzgX611lyeE7/ooABwidPZoVcvoWb5U6Niel
21+
PqDUoUrMg3gRIaG9zm4+009TDbcntfS/MtX6wrMKXlke01PQtLo3ohmti1KURXqI
22+
7Hu9NouFGxsUT+o8bkip/CsbScc7Ief9ADAJGEw+TSu2mD+1f7zgPeNzrR0kKbxp
23+
0Kr3OXUCophzWaO+oIEYzZMLXUpA9jVW5NUPcmW+shuT0IiK3WQJnpMBaGzs9XQT
24+
8LtrJrD9uVq9HpAGnjTfzoMWpBkqeIaG772NDKq9Z8LG4JVo2gV9rGC9uysDcms0
25+
dGFt5AfFecM5nOqsPss4BjP85ZH7quzIhm57SVaMvuO3N2OvHyoJJDy4OQy7P/rq
26+
fBrmjP//Jb/i/hcRdZt17LhRdU2tuESHNWReFn0wRNLXOjkgg+Nntfl7qOUfNC23
27+
///3xTr5UhfArr2HZn9uo7VrrF99mF4CJTmqwic1e5RC3knnNwwB7JR8/O0H5csL
28+
qKy57PSAU+w0pCrw/a4qeX+IswRLvQ6myTKIiDDGAruN/HOYEsAW3kuSLOxYFMKh
29+
9F7w2nGAcA==
30+
-----END CERTIFICATE-----
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-----BEGIN PRIVATE KEY-----
2+
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
51+
11bvPI4fB5GVVMDLhPFgNyqPTwE4oJg=
52+
-----END PRIVATE KEY-----
3.96 KB
Binary file not shown.

Build/Build.ps1

-59
This file was deleted.

0 commit comments

Comments
 (0)