Skip to content
This repository has been archived by the owner on Jul 12, 2023. It is now read-only.

CI

CI #2169

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: '0 0 */1 * *'
workflow_dispatch:
concurrency:
group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
test:
name: test
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- uses: actions/setup-go@v3
with:
go-version: '1.19'
- name: Download modules
run: go mod download
- name: go-test
shell: bash
env:
# The Twilio credentials are not actually a "secret" (they are test
# credentials). On pull requests from forks, the secrets are not
# available, so skip SMS in the e2e tests.
TWILIO_ACCOUNT_SID: ${{ secrets.TWILIO_ACCOUNT_SID }}
TWILIO_AUTH_TOKEN: ${{ secrets.TWILIO_AUTH_TOKEN }}
E2E_SKIP_SMS: ${{ secrets.TWILIO_AUTH_TOKEN == '' }}
run: make test-acc
- name: go-coverage
shell: bash
run: |-
OUTPUT="$(make test-coverage)"
TOTAL="$(echo $OUTPUT | awk 'END{print $NF}')"
echo "::group::Coverage (${TOTAL})"
echo "${OUTPUT}"
echo "::endgroup::"
lint:
name: lint
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Check out code
uses: actions/checkout@v3
- uses: reviewdog/action-setup@v1
- name: Install pcregrep
run: sudo apt-get -yqq install pcregrep
- uses: actions/setup-go@v3
with:
go-version: '1.19'
- name: Download modules
run: go mod download
- name: go-lint
shell: bash
run: |-
set -eEu
set +o pipefail
make lint
- name: zapw-logger
shell: bash
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }}
run: |-
set -eEu
set +o pipefail
make zapcheck 2>&1 | \
reviewdog -efm="%f:%l:%c: %m" \
-name="zap-logger" \
-reporter="github-pr-check" \
-filter-mode="diff_context" \
-fail-on-error="true" \
-level="error"
- name: controller-without-returns
shell: bash
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }}
run: |-
set -eEu
set +o pipefail
pcregrep \
--recursive \
--line-number --multiline \
--include '.+\.go$' \
'\b(Back|InternalError|NotFound|Unauthorized|MissingRealm|MissingAuthorizedApp|MissingSession|MissingUser|RedirectToMFA|RedirectToChangePassword)\(.+\)\s+(//.*\s+)?^((?!return).)*$' \
. | \
reviewdog -efm="%f:%l:%m" \
-name="controller-returns" \
-reporter="github-pr-check" \
-filter-mode="diff_context" \
-fail-on-error="true" \
-level="error"
- name: copyright-check
shell: bash
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }}
run: |-
set -eEu
set +o pipefail
YEAR=$(date +"%Y")
find . -type f -name '*.go' -exec awk 'FNR==1{if ($0!~"Copyright '"${YEAR}"'" && $0!~"Code generated") print FILENAME ":1:missing copyright or invalid copyright year";}' '{}' + | \
reviewdog -efm="%f:%l:%m" \
-name="copyright-check" \
-reporter="github-pr-check" \
-filter-mode="diff_context" \
-fail-on-error="true" \
-level="error"
- name: generate-check
shell: bash
run: |-
set -eEu
set +o pipefail
make generate-check
- name: tab-check
shell: bash
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }}
run: |-
set -eEu
set +o pipefail
make tabcheck | \
reviewdog -efm="%f:%l:%m" \
-name="tab-check" \
-reporter="github-pr-check" \
-filter-mode="diff_context" \
-fail-on-error="true" \
-level="error"