- All notable changes to this project will be documented in this file.
- The format is based on Keep a Changelog.
- We do not follow semantic versioning.
- All changes are solely tracked by date and have a git tag available (from 2021-10-19 onwards):
- format
go-starter-YYYY-MM-DD - e.g.
go-starter-2021-10-19
- format
- The latest
masteris considered stable and should be periodically merged into our customer projects.
- Fixes minor
Makefiletypos. - New go-starter releases are now git tagged (starting from the previous release
go-starter-2021-10-19onwards). See FAQ: What's the process of a new go-starter release? - You may now specify a specific tag/branch/commit from the upstream go-starter project while running
make git-fetch-go-starter,make git-compare-go-starterandmake git-merge-go-starter. This will especially come in handy if you want to do a multi-phased merge (for projects that haven't been updated in a long time):- Merge with the latest:
make git-merge-go-starter - Merge with a specific tag, e.g. the tag
go-starter-2021-10-19:GIT_GO_STARTER_TARGET=go-starter-2021-10-19 make git-merge-go-starter - Merge with a specific branch, e.g. the branch
mr/housekeeping:GIT_GO_STARTER_TARGET=go-starter/mr/housekeeping make git-merge-go-starter(heads up! it'sgo-starter/<branchname>) - Merge with a specific commit, e.g. the commit
e85bedb94c3562602bc23d2bfd09fca3b13d1e02:GIT_GO_STARTER_TARGET=e85bedb94c3562602bc23d2bfd09fca3b13d1e02 make git-merge-go-starter
- Merge with the latest:
- The primary GitHub Action pipeline
.github/workflows/build-test.ymlhas been synced to include most validation tasks from our internal.drone.ymlpipeline. Furthermore:- Avoid
Build & TestGitHub Action running twice (onpushand onpull_request). - Add trivy scan to our base Build & Test pipeline (as we know also build and test the
apptarget docker image). - Our GitHub Action pipeline will no longer attempt to cache the previously built Docker images by other pipelines, as extracting/restoring from cache (docker buildx) typically takes longer than fully rebuilding the whole image. We will reinvestigate caching mechanisms in the future if GitHub Actions provides a speedier and official integration for Docker images.
- Avoid
- BREAKING Upgrades to Go 1.17.1
golang:1.17.1-buster- Switch to
//go:build <tag>from// +build <tag>. - Migrates
go.modviago mod tidy -go=1.17(pruned module graphs). - Do the following to upgrade:
make git-merge-go-starter./docker-helper --rebuild- Manually remove the new second
requireblock (with all the// indirectmodules) within yourgo.mod - Execute
go mod tidy -go=1.17once so the secondrequireblock appears again. - Find
// +build <tag>and replace it with//go:build <tag>. make all.- Recheck your
go.modthat the newly added// indirecttransitive dependencies are the proper version as you were previously using (e.g. via the output frommake get-licensesandmake get-embedded-modules). Feel free to move any// indirecttagged dependencies in your firstrequireblock to the second block. This is where they should live.
- Switch to
- BREAKING You now need to take special care when it comes to parsing semicolons (
;) in query strings vianet/urlandnet/httpfrom Go >1.17!- Anything before the semicolon will now be stripped. e.g.
example?a=1;b=2&c=3would have returnedmap[a:[1] b:[2] c:[3]], while now it returnsmap[c:[3]] - See Go 1.17 URL query parsing.
- You may need to manually migrate your handlers/tests regarding this new default handling.
- Anything before the semicolon will now be stripped. e.g.
- Added
make test-update-goldenfor easily refreshing all golden files / snapshot tests (y + ENTERconfirmation). - Upgrades golangci-lint from
v1.41.1tov1.42.1(for referencev1.42.0). - Bump github.com/go-openapi/strfmt from 0.20.1 to 0.20.2
- Bump github.com/go-openapi/errors from 0.20.0 to 0.20.1
- Bump github.com/go-openapi/runtime from 0.19.29 to 0.19.31
- Bump github.com/rs/zerolog from 1.23.0 to 1.25.0
- Bump google.golang.org/api from 0.52.0 to 0.57.0
- Bump github.com/lib/pq from v1.10.2 to v1.10.3
- Bump github.com/spf13/viper from 1.8.1 to v1.9.0
- Bump github.com/labstack/echo from 4.5.0 to v4.6.1
- Update golang.org/x/crypto and golang.org/x/sys
- Hotfix: We will pin the
Dockerfiledevelopment and builder stage togolang:1.16.7-buster(+-buster) for now, as currently the new debian bullseye release within the go official docker images breaks some tooling. The upgrade to debian bullseye and Go 1.17 will happensimultaneouslyseparately within go-starter in the following weeks.
- remove ioutil (https://golang.org/doc/go1.16#ioutil)
- Bump golang from 1.16.6 to 1.16.7 (requires
./docker-helper.sh --rebuild). - Adds
util.GetEnvAsStringArrTrimmedand minorutiltest coverage upgrades.
README.mdbadges for go-starter.- Fix some misspellings of English words within
internal/test/*.gocomments. - Upgrades
- Bump
github.com/labstack/echo/v4from 4.4.0 to 4.5.0:- Switch from
github.com/dgrijalva/jwt-gotogithub.com/golang-jwt/jwtto mitigate CVE-2020-26160. - Note that it might take some time until the former dep fully leaves our dependency graph, as it is also a transitive dependency of various versions of
github.com/spf13/viper. - However, even though this functionality was never used by go-starter, this change fixes an important part: The original
github.com/dgrijalva/jwt-gois no longer included in the finalappbinary, it is fully replaced bygithub.com/golang-jwt/jwt. - Our
.trivyignorestill excludes CVE-2020-26160 as trivy cannot skip checking transitive dependencies. - Breaking: If you have actually directly depended upon
github.com/dgrijalva/jwt-go, please switch togithub.com/golang-jwt/jwtvia the following command:find -type f -name "*.go" -exec sed -i "s/dgrijalva\/jwt-go/golang-jwt\/jwt/g" {} \;
- Switch from
- Bump
- Upgrades:
- Bump golang from 1.16.5 to 1.16.6
- Bump github.com/labstack/echo/v4 from 4.3.0 to 4.4.0 (adds
binder.BindHeaderssupport, not affecting our goswaggerruntime.Validatablebind helpers) - Bump github.com/gabriel-vasile/mimetype from 1.3.0 to 1.3.1
- Bump github.com/spf13/cobra from 1.1.3 to 1.2.1 (and see all the big completion upgrades in 1.2.0)
- Bump google.golang.org/api from 0.49.0 to 0.52.0
- Bump gotestsum to 1.7.0 (adds handy keybindings while you are in
make watch-testsmode, see While in watch mode, pressing some keys will perform an action) - Bump watchexec to 1.17.0
- Bump golang.org/x/crypto to
v0.0.0-20210711020723-a769d52b0f97
- Fixed
Makefilehas disregardedpipefails in executed targets (e.g.make sql-spec-migratepreviously returned exit code0even if there were migration errors as its output was piped internally). We now set-cEeuo pipefailfor make's shell args, preventing these issues.
- BREAKING Switched from
golinttorevivegolintis deprecated.reviveis considered to be a drop-in replacement forgolint, however this change still might lead to breaking changes in your codebase.
- BREAKING
make lintno longer uses--fastwhen callinggolangci-lint- Up until now,
make lintalso rangolangci-lintusing the--fastflag to remain consistent with the linting performed by VSCode automatically. - As running only fast linters in both steps meant skipping quite a few validations (only 4/13 enabled linters are actually active), a decision has been made to break consistency between the two lint-steps and perform "full" linting during the build pipeline.
- This change could potentially bring up additional warnings and thus fail your build until fixed.
- Up until now,
- BREAKING
gosecis now also applied to test packages- All linters are now applied to every source code file in this project, removing the previous exclusion of
gosecfrom test files/packages - As
gosecmight (incorrectly) detect some hardcoded credentials in your tests (variable names such aspasswordResetLinkget flagged), this change might require some fixes after merging.
- All linters are now applied to every source code file in this project, removing the previous exclusion of
- Extended auth middleware to allow for multiple auth token sources
- Default token validator uses access token table, maintaining previous behavior without any changes required.
- Token validator can be changed to e.g. use separate API keys for specific endpoints, allowing for more flexibility if so desired.
- Changed
util.LogFromContextto always return a valid logger- Helper no longer returns a disabled logger if context provided did not have an associated logger set (e.g. by middleware). If you still need to disable the logger for a certain context/function, use
util.DisableLogger(ctx, true)to force-disable it. - Added request ID to context in logger middleware.
- Helper no longer returns a disabled logger if context provided did not have an associated logger set (e.g. by middleware). If you still need to disable the logger for a certain context/function, use
- Extended DB query helpers
- Fixed TSQuery escaping, should now properly handle all type of user input.
- Implemented helper for JSONB queries (see
ExampleWhereJSONfor implementation details). - Added
LeftOuterJoinhelper, similar to already existingLeftJoinvariants. - Managed transactions (via
WithTransaction) can now have their options configured viaWithConfiguredTransaction. - Added util to combine query mods with
ORexpression.
- Implemented middleware for parsing
Cache-Controlheader- Allows for cache handling in relevant services, parsed directive is stored in request context.
- New middleware is enabled by default, can be disabled via env var (
SERVER_ECHO_ENABLE_CACHE_CONTROL_MIDDLEWARE).
- Added extra misc. helpers
- Extra helpers for slice handling and generating random strings from a given character set have been included (
util.ContainsAllString,util.UniqueString,util.GenerateRandomString). - Added util to check whether current execution runs inside a test environment (
util.RunningInTest).
- Extra helpers for slice handling and generating random strings from a given character set have been included (
- Test and snapshot util improvements
- Added
snapshoter.SaveUas a shorthand for updating a single test - Implemented
GenericArrayPayloadwith respective request helpers for array payloads in tests - Added VScode launch task for updating all snapshots in a single test file
- Added
- We now directly bake the
gsdevcli "bridge" (it actually just runsgo run -tags scripts /app/scripts/main.go "$@") into thedevelopmentstage of ourDockerfileand create it at/usr/bin/gsdev(requires./docker-helper.sh --rebuild).gsdevwas previously symlinked to/app/binfrom/app/scripts/gsdev(within the projects' workspace) andchmod +xvia theMakefileduringinit.- However this lead to problems with WSL2 VSCode related development setups (always dirty git workspaces as WSL2 tries to prevent
+xflags). - BREAKING encountered at 2021-06-30: Upgrading your project via
make git-merge-go-starterif you already have installed our previousgsdevapproach from 2021-06-22 may require additional steps:- It might be necessary to unlink the current
gsdevsymlink residing at/app/bin/gsdevbefore merging up (as this symlinked file will no longer exist)! - Do this by issuing
rm -f /app/bin/gsdevwhich will remove the symlink which pointed to the previous (now gone bash script) at/app/scripts/gsdev. - It might also be handy to install the newer variant directly into your container (without requiring a image rebuild). Do this by:
sudo suto become root in the container,- issuing the following command:
printf '#!/bin/bash\nset -Eeo pipefail\ncd /app && go run -tags scripts ./scripts/main.go "$@"' > /usr/bin/gsdev && chmod 755 /usr/bin/gsdev(in sync with what we do in ourDockerfile) and [CTRL + c]to return to being thedevelopmentuser within your container.
- It might be necessary to unlink the current
- Introduces GitHub Actions docker layer caching via docker buildx. For details see
.github/workflows/build-test.yml. - Upgrades:
- Bump golang from 1.16.4 to 1.16.5
- golangci-lint@v1.41.1
- Bump github.com/rs/zerolog from 1.22.0 to 1.23.0
- Bump github.com/go-openapi/runtime from 0.19.28 to 0.19.29
- Bump github.com/volatiletech/sqlboiler/v4 from 4.5.0 to 4.6.0
- Bump github.com/rubenv/sql-migrate v0.0.0-20210408115534-a32ed26c37ea to v0.0.0-20210614095031-55d5740dbbcc
- Bump github.com/spf13/viper v1.7.1 to v1.8.0
- Bump golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a to v0.0.0-20210616213533-5ff15b29337e
- Bump golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea to v0.0.0-20210616094352-59db8d763f22
- Bump google.golang.org/api v0.47.0 to v0.49.0
- Fixes linting within
/scripts/**/*.go, now activated by default.
- Development scripts are no longer called via
go run [script]but viagsdev:- The
gsdevcli is our new entrypoint for development workflow specific scripts, these scripts are not available in the finalappbinary. - All previous
go runscripts have been moved to their respective/scripts/cmdcli entrypoint + internal implementation within/scripts/internal/**. - Please use
gsdev --helpto get an overview of available development specific commands. gsdevrelys on a tiny helper bash scriptscripts/gsdevwhich gets symlinked to/app/binonmake init.- Use
make test-scriptsto run tests regarding these internal scripts within/scripts/**/*_test.go. - We now enforce that all
/scripts/**/*.gofiles set the// +build scriptsbuild tag. We do this to ensure these files are not directly depended upon from the actualappsource-code within/internal.
- The
- VSCode's
.devcontainer/devcontainer.jsonnow defines that the go tooling must use thescriptsbuild tag for its IntelliSense. This is neccessary to still get proper code-completion when modifying resources at/scripts/**/*.go. You may need to reattach VSCode and/or run./docker-helper.sh --rebuild.
- Scaffolding tool to quickly generate generic CRUD endpoint stubs. Usage:
gsdev scaffold [resource name] [flags], also seegsdev scaffold --help.
- Scans for CVE-2020-26160 also match for our final
appbinary, however, we do not usegithub.com/dgrijalva/jwt-goas part of our auth logic. This dependency is mostly here because of child dependencies, that yet need to upgrade to>=v4.0.0. Therefore, we currently disable this CVE for scans in this project (via.trivyignore). - Upgrades
Dockerfile:watchexec@v1.16.1,lichen@v0.1.4(requires./docker-helper.sh --rebuild).
- Upgraded
Dockerfiletogolang:1.16.4,gotestsum@v1.6.4,golangci-lint@v1.40.1,watchexec@v1.16.0(requires./docker-helper.sh --rebuild). - Upgraded
go.mod:- github.com/labstack/echo/v4@v4.3.0
- github.com/lib/pq@v1.10.2
- github.com/gabriel-vasile/mimetype@v1.3.0
github.com/go-openapi/runtime@v0.19.28- github.com/rs/zerolog@v1.22.0
github.com/rubenv/sql-migrate@v0.0.0-20210408115534-a32ed26c37eagolang.org/x/crypto@v0.0.0-20210513164829-c07d793c2f9agolang.org/x/sys@v0.0.0-20210514084401-e8d321eab015- google.golang.org/api@v0.46.0
- GitHub Actions:
- Pin to
actions/checkout@v2.3.4. - Remove unnecessary
git checkout HEAD^2in CodeQL step (Code Scanning recommends analyzing the merge commit for best results). - Limit trivy and codeQL actions to
pushagainstmasterandpull_requestagainstmasterto overcome read-only access workflow errors.
- Pin to
- Adds
test.WithTestDatabaseFromDump*,test.WithTestServerFromDumpmethods for writing tests based on a database dump file that needs to be imported first:- We dynamically setup IntegreSQL pools for all combinations passed through a
test.DatabaseDumpConfig{}object:DumpFile stringis required, absolute path to dump fileApplyMigrations booloptional, defaultfalse, automigrate after installing the dumpApplyTestFixtures booloptional, defaultfalse, import fixtures after (migrating) installing the dump
test.ApplyDump(ctx context.Context, t *testing.T, db *sql.DB, dumpFile string) errormay be used to apply a dump to an existing database connection.- As we have dedicated IntegreSQL pools for each combination, testing performance should be on par with the default IntegreSQL database pool.
- We dynamically setup IntegreSQL pools for all combinations passed through a
- Adds
test.WithTestDatabaseEmpty*methods for writing tests based on an empty database (also a dedicated IntegreSQL pool). - Adds context aware
test.WithTest*Contextmethods reusing the providedcontext.Context(first arg). - Adds
make sql-dumpcommand to easily create a dump of the localdevelopmentdatabase to/app/dumps/development_YYYY-MM-DD-hh-mm-ss.sql(.gitignored).
test.ApplyMigrations(t *testing.T, db *sql.DB) (countMigrations int, err error)is now public (e.g. for usage withtest.WithTestDatabaseEmpty*ortest.WithTestDatabaseFromDump*)test.ApplyTestFixtures(ctx context.Context, t *testing.T, db *sql.DB) (countFixtures int, err error)is now public (e.g. for usage withtest.WithTestDatabaseEmpty*ortest.WithTestDatabaseFromDump*)internal/test/test_database_test.goand/app/internal/test/test_server_test.gowere massively refactored to allow for better extensibility later on (non breaking, all method signatures are backward-compatible).
- Adds echo
NoCachemiddleware: Usemiddleware.NoCache()andmiddleware.NoCacheWithConfig(Skipper)to explicitly force browsers to never cache calls to these handlers/groups.
/swagger.ymland/-/*now explicity set no-cache headers by default, forcing browsers to re-execute calls each and every time.- Upgrade watchexec@v1.15.0 (requires
./docker-helper.sh --rebuild).
- Live-Reload for our swagger-ui is now available out of the box:
- allaboutapps/browser-sync acts as proxy at localhost:8081.
- Requires
./docker-helper.sh --up. - Best used in combination with
make watch-swagger(still refreshesmake allormake swaggerof course).
- Upgrades to swaggerapi/swagger-ui:v3.46.0 from swaggerapi/swagger-ui:v3.28.0
- Upgrades to github.com/labstack/echo@v4.2.2
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2- Upgrades to google.golang.org/api@v0.44.0
- Moved
/api/main.ymlto/api/config/main.ymlto overcome path resolve issues (../definitions) with the VSCode 42crunch.vscode-openapi extension (auto-included in our devContainer) and our go-swagger concat behaviour. - Updated api/README.md information about
/api/swagger.ymlgeneration logic and changedmake swagger-concataccordingly
- Bump golang from v1.16.2 to v1.16.3 (requires
./docker-helper.sh --rebuild).
- Bump golang.org/x/crypto@v0.0.0-20210322153248-0c34fe9e7dc2
- Bump golang.org/x/sys@v0.0.0-20210331175145-43e1dd70ce54
- Bump github.com/go-openapi/swag@v0.19.15
- Bump github.com/go-openapi/strfmt@v0.20.1
- Bump github.com/gotestyourself/gotestsum@v1.6.3 (requires
./docker-helper.sh --rebuild).
- Bump golangci-lint@v1.39.0 (requires
./docker-helper.sh --rebuild).
- Bump github.com/rs/zerolog from 1.20.0 to 1.21.0
- Bump google.golang.org/api from 0.42.0 to 0.43.0
- We no longer do explicit calls to
t.Parallel()in our go-starter tests (except autogenerated code). For the reasons why see FAQ: Should I uset.Parallel()in my tests?. - Switched to github.com/uw-labs/lichen for getting license information of embedded dependencies in our final
./bin/appbinary. - The following make targets are no longer flagged as
(opt)and thus move into the mainmake helptarget (usemake help-allto see all targets):make lint: Runs golangci-lint and make check-*.make go-test-print-slowest: Print slowest running tests (must be done after running tests).make get-licenses: Prints licenses of embedded modules in the compiled bin/app.make get-embedded-modules: Prints embedded modules in the compiled bin/app.make clean: Cleans ./tmp and ./api/tmp folder.make get-module-name: Prints current go module-name (pipeable).
make check-gen-dirsnow ignores.DS_Storewithin/internal/models/**/*and/internal/types/**/*and echo an errors detailing what happened.- Upgrade to
github.com/go-openapi/runtime@v0.19.27
make allno longer executesmake infoas part of its targets chain.- It's very common to use
make allmultiple times per day during development and thats fine! However, the output ofmake infois typically ignored by our engineers (if they explicitly want this information, they usemake info). Somake allwas just too spammy in it's previous form. make infodoes network calls and typically takes around 5sec to execute. This slowdown is not acceptable when runningmake all, especially if the information it provides isn't used anyways.- Thus: Just trigger
make infomanually if you need the information of the[spec DB]structure, current[handlers]and[go.mod]information. Furthermore you may also visittmp/.info-db,tmp/.info-handlersandtmp/.info-goafter triggeringmake infoas we store this information there after a run.
- It's very common to use
- Upgrades
go.mod:github.com/volatiletech/sqlboiler/v4@v4.5.0github.com/rogpeppe/go-internal@v1.8.0golang.org/x/crypto@v0.0.0-20210314154223-e6e6c4f2bb5bgolang.org/x/sys@v0.0.0-20210314195730-07df6a141424golang.org/x/sys@v0.0.0-20210315160823-c6e025ad8005google.golang.org/api@v0.42.0
make helpno longer reports(opt)flagged targets, usemake help-allinstead.make toolsnow executesgo install {}in parallelmake infonow fetches information in parallel- Seeding: Switch to
db|dbUtil.WithTransactioninstead of manually managing the db transaction. Note: We will enforce usingWithTransactioninstead of manually managing the life-cycle of db transactions through a custom linter in an upcoming change. It's way safer and manually managing db transactions only makes sense in very very special cases (where you will be able to opt-out via linter excludes). Also see What'sWithTransaction, shouldn't I usedb.BeginTx,db.Commit, anddb.Rollback?.
- The correct implementation of
(util|scripts).GetProjectRootDir() stringnow gets automatically selected based on thescriptsbuild tag.- We currently have 2 different
GetProjectRootDir()implementations and each one is useful on its own:util.GetProjectRootDir()gets used whileapporgo testruns and resolves in the following way: usePROJECT_ROOT_DIR(if set), else default to the resolved path to the executable unless we can't resolve that, then panic!scripts.GetProjectRootDir()gets used while generation time (make go-generate) and resolves in the following way: usePROJECT_ROOT_DIR(if set), otherwise default to/app(baked, as we can assume we are in thedevelopmentcontainer).
/internal/util/(get_project_root_dir.go|get_project_root_dir_scripts.go)is now introduced to automatically switch to the proper implementation based on the// +build !scriptsor// +build scriptsbuild tag, thus it's now consistent to importutil.GetProjectRootDir(), especially while handler generation time (make go-generate).
- We currently have 2 different
- Upgrades to
golang@v1.16.2(use./docker-helper.sh --rebuild). - Silence resolve of
GO_MODULE_NAMEifgowas not found in path (typically host env related).
make build(make go-build) now setsinternal/config.ModuleName,internal/config.Commitandinternal/config.BuildDatevia-ldflags./-/version(mgmt key auth) endpoint is now available, prints the same asapp -v.app -vis now available and prints out buildDate and commit. Sample:
app -v
github.com/mwieser/go-micro @ 19c4cdd0da151df432cd5ab33c35c8987b594cac (2021-03-11T15:42:27+00:00)- Upgrades to
golang@v1.16.1(use./docker-helper.sh --rebuild). - Updates
google.golang.org/api@v0.41.0,github.com/gabriel-vasile/mimetype@v1.2.0(new supported formats),golang.org/x/sys - Removed
**/.gitfrom.dockerignore(builderstage) as we want the local git repo available while runningmake go-build. app --helpnow prominently includes the module name of the project.- Prominently recommend
make force-module-nameafter runningmake git-merge-go-starterto fix all import paths.
- Introduces
CHANGELOG.md
make git-merge-go-starternow uses--allow-unrelated-historiesby default.README.mdand FAQ now mention that it's recommended to executemake git-merge-go-starterduring project setup (especially for single commit generated from template project project setups).- See FAQ: I want to compare or update my project/fork to the latest go-starter master.
- Various typos in
README.mdandMakefile. - Upgrade to
golangci-lint@v1.38.0
allaboutapps/nullableis now included by default. See #58, FAQ: I need an optional Swagger payload property that is nullable!
- Upgrade to
labstack/echo@v4.2.1,lib/pq@v1.10.0
util.BindAndValidateis now marked as deprecated aslabstack/echo@v4.2.0exposes a more granular binding through itsDefaultBinder.
- The more specialized variants
util.BindAndValidatePathAndQueryParamsandutil.BindAndValidateBodyare now available. See/internal/util/http.go.
golang@v1.16.0labstack/echo@v4.2.0
- Upgrades to
pgFormatter@v5.0.0+ forces VSCode to use that version within the devcontainer through it's extension.
golang@v1.15.8,go-swagger@v0.26.1
- Dockerfile updates:
- golang@1.15.7
- apt add icu-devtools (VSCode live sharing)
- gotestsum@1.6.1
- golangci-lint@v1.36.0
- goswagger@v0.26.0
- go.mod:
- sqlboiler@4.4.0
- swag@0.19.3
- strfmt@0.20.0
- testify@1.7.0
- go-openapi/runtime@v0.19.26
- go-openapi/swag@v0.19.13
- go-openapi/validate@v0.20.1
- jordan-wright/email
- rogpeppe/go-internal@v1.7.0
- golang.org/x/crypto
- golang.org/x/sys
- google.golang.org/api@v0.38.0
- disabled goswagger generate server flag
--keep-spec-orderas relative resolution of its temporal created yml file is broken - see go-swagger/go-swagger#2216
make watch-swaggerandmake watch-sql
- sqlboiler@4.3.0
make watch-tests: Watches .go files and runs package tests on modifications.
pprofhandlers, see FAQ: I need to (remotely) pprof my running service!
make git-merge-go-starter, see FAQ: I want to compare or update my project/fork to the latest go-starter master.
app probe readinessandapp probe livenesssub-commands./-/readyand/-/healthyhandlers.
- Force VSCode to use our installed version of golang-cilint
- All
*.gofiles in/scriptsnow use the build tagscriptsso we can ensure they are not compiled into the finalappbinary.
go.notfile to ensure certain generation- / test-only dependencies don't end up in the finalappbinary. Automatically checked thoughmake(sub-targetmake check-embedded-modules-go-not).
- Switch to
distrolessas final app stage, see FAQ: Should I use distroless/base or debian:buster-slim in the Dockerfile app stage?