-
Notifications
You must be signed in to change notification settings - Fork 6
134 lines (127 loc) · 3.76 KB
/
ci.yaml
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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 AWS DynamoDB
- cron: '0 0 1 * *'
workflow_call:
env:
COVER_PKG: 'github.com/btnguyen2k/godynamo'
AWS_REGION: 'us-east-1'
AWS_ACCESS_KEY_ID: 'DUMMYID'
AWS_SECRET_ACCESS_KEY: 'DUMMYKEY'
AWS_DYNAMODB_ENDPOINT: 'http://localhost:8000'
AWS_DYNAMODB_URL: 'Endpoint=http://localhost:8000'
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@v3
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
TestParsing:
runs-on: ubuntu-latest
strategy:
matrix:
go: [ '1.18', 'oldstable', 'stable' ]
name: Run parsing 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@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
flags: parsing
name: parsing
TestLocal:
runs-on: ubuntu-latest
strategy:
matrix:
go: [ '1.18', 'oldstable', 'stable' ]
name: Run tests against local AWS DynamoDB 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: Start local AWS DynamoDB server
run: docker run -d --name dynamodb -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDb
- name: Run tests
run: |
go version
cd module_test \
&& go test -v -timeout 9999s -count 1 -p 1 -cover -coverpkg="${COVER_PKG}" -coverprofile coverage_local.txt ./ \
&& cd ..
- name: Codecov
uses: codecov/codecov-action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
flags: other
name: other