diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index eb08970a..ce2c0f54 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -13,19 +13,27 @@ on: jobs: publish: runs-on: ubuntu-latest - + defaults: + run: + working-directory: ./application/backend + steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Checkout uses: actions/checkout@v2 + with: + ref: dev/backend - name: Setup JDK uses: actions/setup-java@v2.3.1 with: java-version: '11' distribution: 'temurin' cache: 'gradle' + + - name: Build jar + run: ./gradlew jar - name: Build image - run: ./application/backend/gradlew bootBuildImage + run: docker build . -t beabee/beabee_spring - name: Docker login uses: docker/login-action@v1.10.0 with: @@ -38,13 +46,25 @@ jobs: deploy: runs-on: ubuntu-latest needs: publish - + defaults: + run: + working-directory: ./application + steps: - - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v1 - with: - aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: ${{ secrets.AWS_REGION }} - -# TODO Waiting for AWS registaration to cmoplete. + - name: Write the SSH key to a temp file + run: echo ${{ secrets.SSH_KEY }} > temp.pem + + - name: Copy docker-compose.yml into to EC2 instance with SCP. + run: scp -i ./temp.pem ./docker-compose.yml ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/home/${{ secrets.SSH_USER }} + + - name: Login to Docker Hub at EC2 instance + run: ssh -i ./temp.pem ./docker-compose.yml ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKER_PASSWORD }}" + + - name: Down currently running BeABee application + run: ssh -i ./temp.pem ./docker-compose.yml ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "docker-compose do + + - name: Run services with Docker Compose + run: ssh -i ./temp.pem ./docker-compose.yml ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }} "docker-compose up" + + - name: Delete temp key file + run: rm temp.pem diff --git a/application/backend/Dockerfile b/application/backend/Dockerfile new file mode 100644 index 00000000..700d007a --- /dev/null +++ b/application/backend/Dockerfile @@ -0,0 +1,3 @@ +FROM openjdk:13-alpine +COPY build/libs/beabee-0.0.1-SNAPSHOT.jar app.jar +ENTRYPOINT ["java","-jar","/app.jar"] \ No newline at end of file diff --git a/application/docker-compose.yml b/application/docker-compose.yml new file mode 100644 index 00000000..438aafa5 --- /dev/null +++ b/application/docker-compose.yml @@ -0,0 +1,35 @@ +version: '3' + +services: + db-server: + image: "postgres" + container_name: "db-server" + ports: + - "5432:5432" + environment: + POSTGRES_DB: beabee + POSTGRES_USER: postgres + POSTGRES_PASSWORD: 5432 + networks: + - beabeenw + beabee-server: + image: "beabeeapp/beabee" + container_name: "beabee-server" + ports: + - "8085:8085" + environment: + spring.datasource.url: jdbc:postgresql://db-server:5432/beabee + SPRING_DATASOURCE_USERNAME: postgres + SPRING_DATASOURCE_PASSWORD: 5432 + networks: + - beabeenw + depends_on: + - db-server + restart: always +networks: + beabeenw: + driver: bridge + ipam: + driver: default + config: + - subnet: '10.111.6.0/24'