diff --git a/.github/workflows/docker-github-package-ec2-deploy.yml b/.github/workflows/docker-github-package-ec2-deploy.yml new file mode 100644 index 0000000..f5fbeaf --- /dev/null +++ b/.github/workflows/docker-github-package-ec2-deploy.yml @@ -0,0 +1,74 @@ +name: Deploy to Amazon EC2(github -> package -> EC2 docker image) + +on: + push: + branches: [ master ] # push할 때 동작할 branch를 입력해주세요. + workflow_dispatch: + inputs: + logLevel: + description: 'Log level' + required: true + default: 'debug' + tags: + description: 'Run action' + required: true + default: 'Run ' +env: + #DOCKER_IMAGE: ghcr.io/{Repository author}/{Repository name} # 예를 들면, ghcr.io/dolphago/github-follow-unfollow + DOCKER_IMAGE: ghcr.io/${{ github.actor }}/xit-framework + VERSION: ${{ github.sha }} + NAME: xit-framework-bo + +jobs: + build: + name: Build + runs-on: ubuntu-latest + steps: + - name: Check out source code + uses: actions/checkout@v2 + - name: Set up docker buildx + id: buildx + uses: docker/setup-buildx-action@v1 + - name: Cache docker layers + uses: actions/cache@v2 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ env.VERSION }} # runner 설정에서 읽어들일거에요. + restore-keys: | + ${{ runner.os }}-buildx- + - name: Login to ghcr + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GIT_ACS_TOKEN }} + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + builder: ${{ steps.buildx.outputs.name }} + push: true #${{ github.event_name != 'pull_request' }} + tags: ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} + + deploy: + needs: build + name: Deploy + runs-on: [ self-hosted, label-development ] + steps: + - name: Login to ghcr + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GIT_ACS_TOKEN }} + - name: Docker run + #docker ps -q --filter "name=xit-framework-bo" | grep -q . && docker stop xit-framework-bo && docker rm -fv xit-framework-bo + #docker run -d -p 8090:8090 --name xit-framework-bo --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} + #docker run -d -p 8090:8090 --name xit-framework-bo --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} + #docker ps -q --filter "name=xit-framework-bo" | grep -q . && docker stop xit-framework-bo && docker rm -fv xit-framework-bo + #docker stop ${{ env.NAME }} && docker rm ${{ env.NAME }} && docker rmi ${{ env.DOCKER_IMAGE }}:latest + run: | + docker run -d -p 8090:8090 --name ${{ env.NAME }} --restart always ${{ env.DOCKER_IMAGE }}:${{ env.VERSION }} + sleep 5 + docker image prune -a + sleep 5 \ No newline at end of file