Drop Router V1 (#2621) #2312
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, pull_request] | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
services: | |
mongodb: | |
image: mongo:4 | |
ports: ['27017:27017'] | |
redis: | |
image: redis | |
ports: ['6379:6379'] | |
steps: | |
- uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/go/pkg/mod | |
~/.cache/go-build | |
key: ${{ runner.os }}-gorace-${{ hashFiles('**/go.sum') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-gorace-${{ hashFiles('**/go.sum') }}- | |
${{ runner.os }}-gorace- | |
# This magic line is to restore the timestamps (mtime) for each file based | |
# on the its last commit. This allows Go test cache to reuse results for | |
# tests that depend on fixture files. | |
- run: git ls-tree -r -t --full-name --name-only HEAD | grep -v vendor | xargs -I{} -P4 sh -c 'touch -d $(git log --pretty=format:%cI -1 HEAD -- "{}") "{}"' | |
- run: sudo apt-get update && sudo apt-get install -y xmlsec1 | |
- run: go test -race ./... | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
- run: make yamllint | |
- uses: golangci/golangci-lint-action@v3 | |
with: | |
version: v1.52.2 | |
env: | |
GOROOT: '' | |
check-contributors: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- run: ./misc/check-contributors.sh | |
leakdetector: | |
runs-on: ubuntu-latest | |
services: | |
mongodb: | |
image: mongo:4 | |
ports: ['27017:27017'] | |
redis: | |
image: redis | |
ports: ['6379:6379'] | |
steps: | |
- uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- uses: actions/cache@v2 | |
with: | |
path: | | |
~/go/pkg/mod | |
~/.cache/go-build | |
key: ${{ runner.os }}-goleak-${{ hashFiles('**/go.sum') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-goleak-${{ hashFiles('**/go.sum') }}- | |
${{ runner.os }}-goleak- | |
- run: git ls-tree -r -t --full-name --name-only HEAD | grep -v vendor | xargs -I{} -P4 sh -c 'touch -d $(git log --pretty=format:%cI -1 HEAD -- "{}") "{}"' | |
- run: sudo apt-get update && sudo apt-get install -y xmlsec1 | |
- run: make leakdetector | |
check-handlers: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
- uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- run: ./misc/check-handlers.sh | |
check-events: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
- uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- run: ./misc/check-events.sh | |
check-api-doc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
- uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- run: make check-api-doc | |
validate-api-spec: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
- run: make validate-api-spec | |
verify-codegen: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-go@v2 | |
with: | |
go-version: '1.20' | |
- uses: actions/checkout@v2 | |
- uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: | | |
${{ runner.os }}-go- | |
- run: go install golang.org/x/tools/cmd/goimports@latest | |
- run: ./hack/verify-codegen.sh | |
docker-image: | |
needs: | |
- test | |
- lint | |
- check-contributors | |
- leakdetector | |
- check-handlers | |
- check-events | |
- check-api-doc | |
- validate-api-spec | |
- verify-codegen | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v1 | |
- uses: actions/cache@v2 | |
with: | |
path: /tmp/.buildx-cache | |
key: ${{ runner.os }}-buildx-${{ github.sha }} | |
restore-keys: | | |
${{ runner.os }}-buildx- | |
- uses: Surgo/docker-smart-tag-action@v1 | |
id: smarttag | |
with: | |
docker_image: tsuru/api | |
default_branch: main | |
tag_with_sha: 'true' | |
- uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_PASSWORD }} | |
- uses: docker/build-push-action@v2 | |
with: | |
context: . | |
push: true | |
tags: ${{ steps.smarttag.outputs.tag }} | |
cache-from: type=local,src=/tmp/.buildx-cache | |
cache-to: type=local,dest=/tmp/.buildx-cache | |
platforms: linux/amd64,linux/arm64 | |
publish-release: | |
needs: [docker-image] | |
runs-on: ubuntu-latest | |
if: github.event_name != 'pull_request' && startsWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
fetch-depth: 0 | |
- uses: goreleaser/goreleaser-action@v2 | |
with: | |
args: release --rm-dist | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
publish-openapi-specs: | |
if: github.event_name != 'pull_request' && github.ref == format('refs/heads/{0}', github.event.repository.default_branch) | |
needs: [validate-api-spec] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/setup-node@v3 | |
- name: Install SwaggerHub CLI | |
run: |- | |
npm install -g [email protected] | |
swaggerhub version | |
- name: yq - portable yaml processor | |
uses: mikefarah/[email protected] | |
- uses: actions/checkout@v3 | |
- name: Update OpenAPI specs on SwaggerHub | |
run: ./misc/swaggerhub-update-api-specs.sh | |
env: | |
SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }} |