You've already forked golang-saas-starter-kit
mirror of
https://github.com/raseels-repos/golang-saas-starter-kit.git
synced 2025-06-25 00:46:51 +02:00
ignore missing static directory for deploy
This commit is contained in:
@ -377,10 +377,10 @@ Access/Secret Keys are required
|
|||||||
--dry-run print out the deploy details
|
--dry-run print out the deploy details
|
||||||
```
|
```
|
||||||
|
|
||||||
* `schema` - Runs the database migration using credentials from AWS Secrets Manager.
|
* `schema migrate` - Runs the database migration using credentials from AWS Secrets Manager.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ cicd -env [dev|stage|prod] schema
|
$ cicd -env [dev|stage|prod] schema migrate
|
||||||
```
|
```
|
||||||
|
|
||||||
* `help` - Shows a list of commands
|
* `help` - Shows a list of commands
|
||||||
@ -398,12 +398,12 @@ Access/Secret Keys are required
|
|||||||
|
|
||||||
Build the example service _web-app_
|
Build the example service _web-app_
|
||||||
```bash
|
```bash
|
||||||
$ cicid --env=dev build service --name=web-app --release-tag=testv1 --dry-run=false
|
$ cicid --env=prod build service --name=web-app --release-tag=testv1 --dry-run=false
|
||||||
```
|
```
|
||||||
|
|
||||||
Deploy the example service _web-app_
|
Deploy the example service _web-app_
|
||||||
```bash
|
```bash
|
||||||
$ cicid --env=dev deploy service --name=web-app --release-tag=testv1 --dry-run=false
|
$ cicid --env=prod deploy service --name=web-app --release-tag=testv1 --dry-run=false
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
2
go.mod
2
go.mod
@ -39,7 +39,7 @@ require (
|
|||||||
github.com/tinylib/msgp v1.1.0 // indirect
|
github.com/tinylib/msgp v1.1.0 // indirect
|
||||||
github.com/urfave/cli v1.21.0
|
github.com/urfave/cli v1.21.0
|
||||||
github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2
|
github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2
|
||||||
gitlab.com/geeks-accelerator/oss/devops v1.0.2
|
gitlab.com/geeks-accelerator/oss/devops v1.0.3
|
||||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4
|
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4
|
||||||
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
|
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 // indirect
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7 // indirect
|
||||||
|
2
go.sum
2
go.sum
@ -201,6 +201,8 @@ github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2 h1:zzrxE1FKn5ryB
|
|||||||
github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY=
|
github.com/xwb1989/sqlparser v0.0.0-20180606152119-120387863bf2/go.mod h1:hzfGeIUDq/j97IG+FhNqkowIyEcD88LrW6fyU3K3WqY=
|
||||||
gitlab.com/geeks-accelerator/oss/devops v1.0.2 h1:LqME1zTc9bgB+J/tw7tv1WDjvgmrgl2OZdKcRToleqg=
|
gitlab.com/geeks-accelerator/oss/devops v1.0.2 h1:LqME1zTc9bgB+J/tw7tv1WDjvgmrgl2OZdKcRToleqg=
|
||||||
gitlab.com/geeks-accelerator/oss/devops v1.0.2/go.mod h1:rvI71qNJyNiO99ZgGnv/PmJCVrjJjupsXBmfYFXdjGM=
|
gitlab.com/geeks-accelerator/oss/devops v1.0.2/go.mod h1:rvI71qNJyNiO99ZgGnv/PmJCVrjJjupsXBmfYFXdjGM=
|
||||||
|
gitlab.com/geeks-accelerator/oss/devops v1.0.3 h1:SE2ZD4Csvmm3t/50RoJkVLjDcwXKHayQYawSkpOSqIw=
|
||||||
|
gitlab.com/geeks-accelerator/oss/devops v1.0.3/go.mod h1:rvI71qNJyNiO99ZgGnv/PmJCVrjJjupsXBmfYFXdjGM=
|
||||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
@ -26,7 +26,7 @@ func migrationList(ctx context.Context, db *sqlx.DB, log *log.Logger, isUnittest
|
|||||||
return []*sqlxmigrate.Migration{
|
return []*sqlxmigrate.Migration{
|
||||||
// Create table users.
|
// Create table users.
|
||||||
{
|
{
|
||||||
ID: "20190522-01a",
|
ID: "20190522-01b",
|
||||||
Migrate: func(tx *sql.Tx) error {
|
Migrate: func(tx *sql.Tx) error {
|
||||||
q1 := `CREATE TABLE IF NOT EXISTS users (
|
q1 := `CREATE TABLE IF NOT EXISTS users (
|
||||||
id char(36) NOT NULL,
|
id char(36) NOT NULL,
|
||||||
@ -57,10 +57,10 @@ func migrationList(ctx context.Context, db *sqlx.DB, log *log.Logger, isUnittest
|
|||||||
},
|
},
|
||||||
// Create new table accounts.
|
// Create new table accounts.
|
||||||
{
|
{
|
||||||
ID: "20190522-01b",
|
ID: "20190522-01c",
|
||||||
Migrate: func(tx *sql.Tx) error {
|
Migrate: func(tx *sql.Tx) error {
|
||||||
q1 := `CREATE TYPE account_status_t as enum('active','pending','disabled')`
|
q1 := `CREATE TYPE account_status_t as enum('active','pending','disabled')`
|
||||||
if _, err := tx.Exec(q1); err != nil {
|
if _, err := tx.Exec(q1); err != nil && !errorIsAlreadyExists(err) {
|
||||||
return errors.WithMessagef(err, "Query failed %s", q1)
|
return errors.WithMessagef(err, "Query failed %s", q1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,15 +103,15 @@ func migrationList(ctx context.Context, db *sqlx.DB, log *log.Logger, isUnittest
|
|||||||
},
|
},
|
||||||
// Create new table user_accounts.
|
// Create new table user_accounts.
|
||||||
{
|
{
|
||||||
ID: "20190522-01d",
|
ID: "20190522-01e",
|
||||||
Migrate: func(tx *sql.Tx) error {
|
Migrate: func(tx *sql.Tx) error {
|
||||||
q1 := `CREATE TYPE user_account_role_t as enum('admin', 'user')`
|
q1 := `CREATE TYPE user_account_role_t as enum('admin', 'user')`
|
||||||
if _, err := tx.Exec(q1); err != nil {
|
if _, err := tx.Exec(q1); err != nil && !errorIsAlreadyExists(err) {
|
||||||
return errors.WithMessagef(err, "Query failed %s", q1)
|
return errors.WithMessagef(err, "Query failed %s", q1)
|
||||||
}
|
}
|
||||||
|
|
||||||
q2 := `CREATE TYPE user_account_status_t as enum('active', 'invited','disabled')`
|
q2 := `CREATE TYPE user_account_status_t as enum('active', 'invited','disabled')`
|
||||||
if _, err := tx.Exec(q2); err != nil {
|
if _, err := tx.Exec(q2); err != nil && !errorIsAlreadyExists(err) {
|
||||||
return errors.WithMessagef(err, "Query failed %s", q2)
|
return errors.WithMessagef(err, "Query failed %s", q2)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +157,7 @@ func migrationList(ctx context.Context, db *sqlx.DB, log *log.Logger, isUnittest
|
|||||||
ID: "20190622-01",
|
ID: "20190622-01",
|
||||||
Migrate: func(tx *sql.Tx) error {
|
Migrate: func(tx *sql.Tx) error {
|
||||||
q1 := `CREATE TYPE project_status_t as enum('active','disabled')`
|
q1 := `CREATE TYPE project_status_t as enum('active','disabled')`
|
||||||
if _, err := tx.Exec(q1); err != nil {
|
if _, err := tx.Exec(q1); err != nil && !errorIsAlreadyExists(err) {
|
||||||
return errors.WithMessagef(err, "Query failed %s", q1)
|
return errors.WithMessagef(err, "Query failed %s", q1)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,12 +178,12 @@ func migrationList(ctx context.Context, db *sqlx.DB, log *log.Logger, isUnittest
|
|||||||
},
|
},
|
||||||
Rollback: func(tx *sql.Tx) error {
|
Rollback: func(tx *sql.Tx) error {
|
||||||
q1 := `DROP TYPE project_status_t`
|
q1 := `DROP TYPE project_status_t`
|
||||||
if _, err := tx.Exec(q1); err != nil {
|
if _, err := tx.Exec(q1); err != nil && !errorIsAlreadyExists(err) {
|
||||||
return errors.WithMessagef(err, "Query failed %s", q1)
|
return errors.WithMessagef(err, "Query failed %s", q1)
|
||||||
}
|
}
|
||||||
|
|
||||||
q2 := `DROP TABLE IF EXISTS projects`
|
q2 := `DROP TABLE IF EXISTS projects`
|
||||||
if _, err := tx.Exec(q2); err != nil {
|
if _, err := tx.Exec(q2); err != nil && !errorIsAlreadyExists(err) {
|
||||||
return errors.WithMessagef(err, "Query failed %s", q2)
|
return errors.WithMessagef(err, "Query failed %s", q2)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -668,3 +668,11 @@ func migrationList(ctx context.Context, db *sqlx.DB, log *log.Logger, isUnittest
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// errorIsAlreadyExists checks an error message for the error "already exists"
|
||||||
|
func errorIsAlreadyExists(err error) bool {
|
||||||
|
if strings.Contains(err.Error(), "already exists") {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
@ -7,7 +7,6 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
"geeks-accelerator/oss/saas-starter-kit/internal/platform/web/webcontext"
|
||||||
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
"geeks-accelerator/oss/saas-starter-kit/internal/schema"
|
||||||
@ -163,7 +162,7 @@ func runMigrate(log *log.Logger, targetEnv string, dbInfo DB) error {
|
|||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
// Execute the migrations
|
// Execute the migrations
|
||||||
if err = schema.Migrate(ctx, env, masterDb, log, false); err != nil {
|
if err = schema.Migrate(ctx, targetEnv, masterDb, log, false); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user