-
Notifications
You must be signed in to change notification settings - Fork 0
/
action.yml
89 lines (71 loc) · 3.43 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
name: Run MongoDB Server
description: Runs MongoDB Server using a method appropriate for the target platform
inputs:
connection-string-name:
description: Name of the output environment variable that will receive the connection string
required: false
default: "MongoDBConnectionString"
mongodb-replica-set:
description: "MongoDB replica set name (no replica set by default)"
required: false
default: ""
mongodb-version:
description: "MongoDB version (default 7.0.6)"
required: false
default: "7.0.6"
mongodb-port:
description: "MongoDB port to use (default 27017)"
required: false
default: 27017
runs:
using: "composite"
steps:
- name: Install MongoDB Server (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
$databaseServiceName = "MongoDB$(Get-Random)"
$tempPath = [System.IO.Path]::GetTempPath()
$databaseRootDirectory = Join-Path $tempPath $databaseServiceName
$databaseDataDirectory = Join-Path $databaseRootDirectory "data"
$databaseLogsDirectory = Join-Path $databaseRootDirectory "logs"
$databaseLogFile = Join-Path $databaseLogsDirectory "logs.txt"
mkdir $databaseRootDirectory > $null
mkdir $databaseDataDirectory > $null
mkdir $databaseLogsDirectory > $null
$version = [Version]::new("${{ inputs.mongodb-version }}")
$databaseBinDirectory = "C:\Program Files\MongoDB\Server\$($version.Major).$($version.Minor)\bin"
echo "::group:: Installing MongoDB $version to $databaseBinDirectory"
choco install mongodb --version=""${{ inputs.mongodb-version }}"" -y --no-progress
echo "::endgroup::"
echo "::group:: Starting MongoDB $databaseServiceName on port ${{ inputs.mongodb-port }}"
$replicaSet = "${{ inputs.mongodb-replica-set }}"
if($replicaSet) {
echo "Starting MongoD with replica"
& "$databaseBinDirectory\mongod.exe" --dbpath $databaseDataDirectory --logpath $databaseLogFile --port ${{ inputs.mongodb-port }} --bind_ip 127.0.0.1 --install --serviceName $databaseServiceName --serviceDisplayName $databaseServiceName --replSet $replicaSet
}
else {
echo "Starting MongoD without replica"
& "$databaseBinDirectory\mongod.exe" --dbpath $databaseDataDirectory --logpath $databaseLogFile --port ${{ inputs.mongodb-port }} --bind_ip 127.0.0.1 --install --serviceName $databaseServiceName --serviceDisplayName $databaseServiceName
}
net start $databaseServiceName
echo "::endgroup::"
echo "::endgroup::"
echo "::group::Installing MongoDB Shell"
choco install mongodb-shell -y --no-progress
echo "::endgroup::"
if($replicaSet) {
& mongosh "mongodb://127.0.0.1:${{ inputs.mongodb-port }}" --eval "rs.initiate()"
}
- name: Start MongoDB Server (Linux)
if: runner.os == 'Linux'
uses: supercharge/mongodb-github-action@v1.10.0
with:
mongodb-replica-set: ${{ inputs.mongodb-replica-set }}
mongodb-port: ${{ inputs.mongodb-port }}
mongodb-version: ${{ inputs.mongodb-version }}
- name: Setup Connection string
shell: pwsh
run: |
echo "Setting environment variable ${{ inputs.connection-string-name }} to MongoDB connection string..."
echo "${{ inputs.connection-string-name }}=mongodb://127.0.0.1:${{ inputs.mongodb-port }}" >> $Env:GITHUB_ENV