diff --git a/.github/workflows/cicd.yaml b/.github/workflows/cicd.yaml index ac1eafe..03b5be9 100644 --- a/.github/workflows/cicd.yaml +++ b/.github/workflows/cicd.yaml @@ -68,7 +68,10 @@ jobs: - name: Docker build & Push run: | docker login -u ${{ secrets.DOCKER_ID }} -p ${{ secrets.DOCKER_PASSWORD }} - docker build -f Dockerfile -t ${{ secrets.DOCKER_REPO }}/${{ secrets.DOCKER_REPO_NAME }} . + docker run -d \ + -e JASYPT_PASSWORD=${{ secrets.JASYPT_PASSWORD }} \ + -p 8080:8080 \ + ${{ secrets.DOCKER_REPO }}/${{ secrets.DOCKER_REPO_NAME }} docker push ${{ secrets.DOCKER_REPO }}/${{ secrets.DOCKER_REPO_NAME }} ## deploy to develop diff --git a/build.gradle b/build.gradle index 4d25d1d..4cb6a4d 100644 --- a/build.gradle +++ b/build.gradle @@ -69,6 +69,9 @@ dependencies { // WebSocket implementation 'org.springframework.boot:spring-boot-starter-websocket' + + //encryption + implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3' } sonar { @@ -99,3 +102,8 @@ jacocoTestReport { tasks.test { finalizedBy tasks.jacocoTestReport } + +test { + useJUnitPlatform() + systemProperty "jasypt.encryptor.password", project.getProperties().get("jasypt.encryptor.password") +} diff --git a/src/main/java/com/ddang/global/config/JasyptConfig.java b/src/main/java/com/ddang/global/config/JasyptConfig.java new file mode 100644 index 0000000..9327406 --- /dev/null +++ b/src/main/java/com/ddang/global/config/JasyptConfig.java @@ -0,0 +1,31 @@ +package com.ddang.global.config; + +import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties; +import org.jasypt.encryption.StringEncryptor; +import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; +import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableEncryptableProperties +public class JasyptConfig { + + @Value("${jasypt.encryptor.password}") + private String PASSWORD; + + @Bean("jasyptStringEncryptor") + public StringEncryptor stringEncryptor(){ + PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); + SimpleStringPBEConfig config = new SimpleStringPBEConfig(); + config.setPassword(PASSWORD); + config.setPoolSize("1"); + config.setAlgorithm("PBEWithMD5AndDES"); + config.setStringOutputType("base64"); + config.setKeyObtentionIterations("1000"); + config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator"); + encryptor.setConfig(config); + return encryptor; + } +}