Update README.md #171
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| env: | |
| AWS_ACCESS_KEY: ${{secrets.AWS_ACCESS_KEY}} | |
| AWS_SECRET_KEY: ${{secrets.AWS_SECRET_KEY}} | |
| AWS_S3_BUCKET: ${{secrets.AWS_S3_BUCKET}} | |
| AWS_S3_BUCKET_URL: ${{secrets.AWS_S3_BUCKET_URL}} | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v2 | |
| - name: Set up JDK 11 | |
| uses: actions/setup-java@v2 | |
| with: | |
| java-version: '11' | |
| distribution: 'temurin' | |
| - name: Grant execute permission to gradlew | |
| run: chmod +x ./gradlew | |
| - name: Build with Gradle | |
| run: ./gradlew clean build | |
| - name: Run Tests | |
| run: ./gradlew test | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v1 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Build and push Docker image | |
| uses: docker/build-push-action@v2 | |
| with: | |
| context: . | |
| push: true | |
| tags: ${{ secrets.IMAGE_NAME }} | |
| file: Dockerfile_spring2 | |
| registry: docker.io | |
| auth: | | |
| { | |
| "username": ${{ secrets.DOCKER_USERNAME }}, | |
| "password": ${{ secrets.DOCKER_PASSWORD }} | |
| } | |
| build-args: | | |
| AWS_ACCESS_KEY=${{ secrets.AWS_ACCESS_KEY }} | |
| AWS_SECRET_KEY=${{ secrets.AWS_SECRET_KEY }} | |
| AWS_S3_BUCKET=${{ secrets.AWS_S3_BUCKET }} | |
| AWS_S3_BUCKET_URL=${{ secrets.AWS_S3_BUCKET_URL }} | |
| - name: Install Docker and Docker Compose | |
| run: | | |
| #!/bin/bash | |
| set -e | |
| sudo apt-get update | |
| sudo apt-get remove moby-containerd moby-runc | |
| sudo apt-get install -y containerd runc | |
| sudo apt-get install -y docker.io | |
| while true; do | |
| if sudo apt-get install -y containerd runc docker.io; then | |
| break | |
| else | |
| sudo apt-get update --fix-missing | |
| sleep 5 | |
| fi | |
| done | |
| sudo systemctl start docker | |
| sudo systemctl enable docker | |
| sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose | |
| sudo chmod +x /usr/local/bin/docker-compose | |
| - name: Set up AWS credentials | |
| uses: aws-actions/configure-aws-credentials@v1 | |
| with: | |
| aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} | |
| aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }} | |
| aws-region: ${{ secrets.AWS_DEFAULT_REGION }} | |
| - name: SSH to EC2 instance | |
| uses: appleboy/ssh-action@master | |
| with: | |
| host: 3.35.56.77 | |
| username: ${{ secrets.SSH_USERNAME }} | |
| key: ${{ secrets.SSH_PRIVATE_KEY }} | |
| script: | | |
| cd /home/ubuntu/myapp | |
| sudo docker-compose ps -q | xargs -r docker stop | |
| sudo docker-compose pull -v | |
| sudo docker-compose up -d |