ci #36
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'ci' | |
on: | |
push: | |
branches: [ '*' ] | |
pull_request: | |
types: [ opened, edited, reopened, synchronize, review_requested ] | |
branches: [ '*' ] | |
schedule: | |
# run once every month (at 00:00 UTC) to make sure the driver works with latest version of Go and CosmosDB emulator | |
- cron: '0 0 1 * *' | |
workflow_call: | |
env: | |
COVER_PKG: 'github.com/btnguyen2k/gocosmos' | |
COSMOSDB_URL: 'AccountEndpoint=https://127.0.0.1:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;TimeoutMs=30000' | |
TAG_PREFIX: 'v' | |
jobs: | |
GoFmt: | |
runs-on: ubuntu-latest | |
name: Check format with go fmt | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 'stable' | |
- name: Run go fmt | |
run: | | |
go version | |
go fmt ./... | |
GoLint: | |
name: GoLint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: 'stable' | |
- name: golangci-lint | |
uses: golangci/golangci-lint-action@v6 | |
with: | |
version: latest | |
only-new-issues: true | |
ReleaseDryRun: | |
if: github.event_name == 'push' | |
runs-on: ubuntu-latest | |
outputs: | |
RESULT: ${{ steps.release_dry_run.outputs.result }} | |
VERSION: ${{ steps.release_dry_run.outputs.releaseVersion }} | |
RELEASE_NOTES: ${{ steps.release_dry_run.outputs.releaseNotes }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Install Node | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 'lts/*' | |
- name: Release (dry-run) | |
id: release_dry_run | |
uses: btnguyen2k/action-semrelease@v3 | |
with: | |
dry-run: true | |
auto-mode: true | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
tag-major-release: false | |
tag-minor-release: false | |
branches: ${{ github.ref_name }} | |
tag-prefix: ${{ env.TAG_PREFIX }} | |
tag-only: true | |
TestModule: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run module tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
go version | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverprofile coverage.txt ./ | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: module | |
name: module | |
TestOther: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run other tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
cd module_test && \ | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="${COVER_PKG}" -coverprofile="../coverage_other.txt" -run "TestNew|TestDriver_" ./ && \ | |
cd .. | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: other | |
name: other | |
TestRestClientNonQuery: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run RestClient non-query tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
& "C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe" /DisableRateLimiting /NoUI /NoExplorer | |
while($true) { | |
try { | |
Invoke-RestMethod -Method GET https://127.0.0.1:8081/_explorer/index.html | |
ps Microsoft.Azure.Cosmos.Emulator | |
break | |
} catch { | |
echo "CosmosDB Emulator not ready, retry in 10 seconds..." | |
Start-Sleep -s 10 | |
} | |
} | |
cd module_test | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="$env:COVER_PKG" -coverprofile="../coverage_restclient_nonquery.txt" -run "TestRestClient_[^Q]" ./ | |
cd .. | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: restclient_nonquery | |
name: restclient_nonquery | |
TestRestClientQuery: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run RestClient query tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
& "C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe" /DisableRateLimiting /NoUI /NoExplorer | |
while($true) { | |
try { | |
Invoke-RestMethod -Method GET https://127.0.0.1:8081/_explorer/index.html | |
ps Microsoft.Azure.Cosmos.Emulator | |
break | |
} catch { | |
echo "CosmosDB Emulator not ready, retry in 10 seconds..." | |
Start-Sleep -s 10 | |
} | |
} | |
cd module_test | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="$env:COVER_PKG" -coverprofile="../coverage_restclient_query.txt" -run "TestRestClient_QueryDocuments" ./ | |
cd .. | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: restclient_query | |
name: restclient_query | |
TestDriverStmtDatabase: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run StmtDatabase query tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
& "C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe" /DisableRateLimiting /NoUI /NoExplorer | |
while($true) { | |
try { | |
Invoke-RestMethod -Method GET https://127.0.0.1:8081/_explorer/index.html | |
ps Microsoft.Azure.Cosmos.Emulator | |
break | |
} catch { | |
echo "CosmosDB Emulator not ready, retry in 10 seconds..." | |
Start-Sleep -s 10 | |
} | |
} | |
cd module_test | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="$env:COVER_PKG" -coverprofile="../coverage_driver_database.txt" -run "TestStmt.*Databases?_(Exec|Query)" ./ | |
cd .. | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: driver_database | |
name: driver_database | |
TestDriverStmtCollection: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run StmtCollection query tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
& "C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe" /DisableRateLimiting /NoUI /NoExplorer | |
while($true) { | |
try { | |
Invoke-RestMethod -Method GET https://127.0.0.1:8081/_explorer/index.html | |
ps Microsoft.Azure.Cosmos.Emulator | |
break | |
} catch { | |
echo "CosmosDB Emulator not ready, retry in 10 seconds..." | |
Start-Sleep -s 10 | |
} | |
} | |
cd module_test | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="$env:COVER_PKG" -coverprofile="../coverage_driver_collection.txt" -run "TestStmt.*Collections?_(Exec|Query)" ./ | |
cd .. | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: driver_collection | |
name: driver_collection | |
TestDriverStmtDocumentNonQuery: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run StmtDocumentNonQuery query tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
& "C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe" /DisableRateLimiting /NoUI /NoExplorer | |
while($true) { | |
try { | |
Invoke-RestMethod -Method GET https://127.0.0.1:8081/_explorer/index.html | |
ps Microsoft.Azure.Cosmos.Emulator | |
break | |
} catch { | |
echo "CosmosDB Emulator not ready, retry in 10 seconds..." | |
Start-Sleep -s 10 | |
} | |
} | |
cd module_test | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="$env:COVER_PKG" -coverprofile="../coverage_driver_document_non_query.txt" -run "TestStmt(Insert|Upsert|Update|Delete)_(Exec|Query)" ./ | |
cd .. | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: driver_document_non_query | |
name: driver_document_non_query | |
TestDriverStmtDocumentQuery: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
go: [ '1.18', 'oldstable', 'stable' ] | |
name: Run StmtDocumentQuery query tests with Go ${{ matrix.go }} | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
- name: Set up Go env | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Run tests | |
run: | | |
& "C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe" /DisableRateLimiting /NoUI /NoExplorer | |
while($true) { | |
try { | |
Invoke-RestMethod -Method GET https://127.0.0.1:8081/_explorer/index.html | |
ps Microsoft.Azure.Cosmos.Emulator | |
break | |
} catch { | |
echo "CosmosDB Emulator not ready, retry in 10 seconds..." | |
Start-Sleep -s 10 | |
} | |
} | |
cd module_test | |
go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="$env:COVER_PKG" -coverprofile="../coverage_driver_document_query.txt" -run "TestStmtSelect_(Exec|Query)" ./ | |
cd .. | |
- name: Codecov | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
flags: driver_document_query | |
name: driver_document_query |