Flyway 一部手動で作業する

Spring BootプロジェクトでFlywayを利用していますが、手動で作業しないといけないケースが出てきます。データが多いテーブルに手動でカラムを追加したり、indexを追加したりなどなど。 手動で作業した場合は誰がいつ作業したのかが管理できないため、履歴管理する方法がないかと思い、公式ドキュメントを読んでみました。 ignoreIgnoredMigrationsパラメーターを検証してみました。 バージョン Flyway flyway-core 7.1.1 Spring Boot 2.4.1 テーブル追加しサーバー起動 sqlバージョンファイル追加 V1.0.0__Create_accounts.sql CREATE TABLE accounts ( user_id serial PRIMARY KEY, username VARCHAR ( 50 ) UNIQUE NOT NULL, password VARCHAR ( 50 ) NOT NULL, created_on TIMESTAMP NOT NULL ); V1.1.0__Modify_accounts.sql ALTER TABLE accounts ADD COLUMN last_login TIMESTAMP; サーバー起動 サーバー起動時、DBへ正常的にSQL文が反映されました。 2021-04-15 11:06:14.196 INFO 7888 --- [ restartedMain] o.f.core.internal.command.DbValidate : Successfully validated 2 migrations (execution time 00:00.029s) 2021-04-15 11:06:14.209 INFO 7888 --- [ restartedMain] o....

2021-04-15 · bokyung

SentryをSpringBootプロジェクトへ適用する

react.jsへSentryを適用しようと思い、公式ドキュメントを見てみると対応言語の中にSpringBootがあったため、試してみました。 バージョン Spring Boot 2.4.1 Sentry sentry-spring-boot-starter 4.3.0 Sentryへプロジェクト追加及び設定 Sentryへログイン後、プロジェクト作成。 Client Keys (DSN)メニューに書いてある、DSNキーをコピーしておきます。 build.gradle.ktsに依存関係を追加します。 build.gradle.kts implementation("io.sentry:sentry-spring-boot-starter:4.3.0") application.properties에 DSN (Data Source Name)を設定します。 application.properties # DSN設定 sentry.dsn=https://xxxxxxxxxxxxxxxxxxxxxxxxxxx@xxxxxx.ingest.sentry.io/xxxxx # エラートレース設定 sentry.enable-tracing=true application-development.properties # 各環境の設定も可能です。 sentry.environment=development Sentryにエラーを送るための設定 サンプルプロジェクトがRestApiプロジェクトなので、@RestControllerAdviceを利用して共通エラー処理を追加しました。 @RestControllerAdvice class SampleControllerAdvice { @ResponseStatus(HttpStatus.BAD_REQUEST) @ExceptionHandler(MissingPathVariableException::class) fun handleMissingPathVariable(ex: MissingPathVariableException): Map<String, String> { Sentry.captureException(ex) val error: Map<String, String> = mapOf("code" to "E0001", "message" to "Parameter error") return error } @ResponseStatus(HttpStatus.UNSUPPORTED_MEDIA_TYPE) @ExceptionHandler(HttpMediaTypeNotSupportedException::class) fun handleHttpMediaTypeNotSupported(ex: HttpMediaTypeNotSupportedException): Map<String, String> { Sentry....

2021-04-15 · bokyung

Jenkins環境でSpring Batch Jobを実行する

JenkinsでSpring Batch Jobを実行してみました。 Jenkinsの環境 Amazon Linux2 AMI ID : ami-0f27d081df46f326c AMI名 : amzn2-ami-hvm-2.0.20210303.0-x86_64-gp2 Jenkins version : Jenkins 2.284 環境変数とプラグイン設定 複数のJobを登録する場合は、各Jobに同じパラメータを設定することになりますが、環境変数に登録しておくと一括管理ができます。 Jobパラメーターに実行日を渡すために、timestamperプラグインを利用しました。 Manage Jenkins > System Configuration > Configure System > Global properties > Environment variablesでJob共通で利用している環境変数を設定します。 Batch Job登録 New Item > Freestyle projectを選び、JOBを登録します。 java -jar ${JAR_NAME} ${DB_HOST} ${DB_PORT} ${DB_NAME} ${DB_USER} ${DB_PASSWORD} \ --spring.batch.job.names=${JOB_NAME} version=${BUILD_NUMBER} requestDate=${BUILD_TIMESTAMP} --spring.batch.job.enabled=true --spring.profiles.active=dev Batch Job実行 Jobを実行し、実行結果を確認します。 2021-03-31 13:09:56.358 INFO 3564 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2021-03-31 13:09:56....

2021-03-31 · bokyung

Jenkins環境でSpring BatchプロジェクトをGradleビルドする

Spring BatchのJob Runnerを調査していましたが、その中でJenkinsでbatchプロジェクトをgradleビルドをしてみました。 Jenkinsの環境 Amazon Linux2 AMI ID : ami-0f27d081df46f326c AMI名 : amzn2-ami-hvm-2.0.20210303.0-x86_64-gp2 Jenkins version : Jenkins 2.284 認証情報登録 Github ID/PASSWORD認証方法 JenkinsでRepository関連作業ができるようにGithub上でPersonal access tokensを発行します。 ( Settings > Developer settings > Personal access tokens ) Manage Jenkins > Manage Credentials > domainにあるglobalをクリックします。 KindはUsername with passwordを選び、パスワード欄にはPersonal access tokens値を入力し認証情報を追加します。 Github SSH 認証方法 SSH鍵を作成します。 Githubプロジェクト設定のDeploy keysに公開鍵を追加します。 KindはSSH Username with private keyを選び、Private Key > Enter directlyに秘密鍵を追加します。 Gradle, JDK設定 プロジェクトで利用するGradleとJDKを Manage Jenkins > System Configuration > Global Tool Configurationにて設定します。一つのバージョンのみ設定した場合は、各JOBでデフォルトとして設定されます。複数のバージョンが登録されている場合は、JOB設定時バージョンを選べられます。 Job登録 New Item > Freestyle projectを選び、JOBを登録します。github access tokens認証の場合は、Repository URLに git@github....

2021-03-30 · bokyung