diff options
Diffstat (limited to '.github/workflows/ci-cd.yml')
-rw-r--r-- | .github/workflows/ci-cd.yml | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml new file mode 100644 index 00000000..24f170c6 --- /dev/null +++ b/.github/workflows/ci-cd.yml @@ -0,0 +1,87 @@ +name: ci-cd + +on: + push: + branches: [ main ] + +env: + DOCKERHUB_USER: hildan + DOCKER_IMAGE_NAME: seven-wonders-server + DOCKER_IMAGE_TAG_SHA: sha-${{ github.sha }} + DOCKER_IMAGE_TAG_BUILD: build-${{ github.run_id }} + HEROKU_APP_NAME: seven-wonders-online + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up JDK 15 + uses: actions/setup-java@v1.4.3 + with: + java-version: 15 + + - name: Gradle build cache + uses: actions/cache@v2 + with: + path: ~/.gradle/caches + key: ${{ runner.os }}-gradle-build-${{ hashFiles('**/*.gradle*') }} + restore-keys: ${{ runner.os }}-gradle-build- + + - name: Gradle wrapper cache + uses: actions/cache@v2 + with: + path: ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle-wrapper.properties') }} + + - name: Build with Gradle + run: ./gradlew build + + # technically optional, brings support for more platform to Docker Buildx + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + # required for Docker build/push + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ env.DOCKERHUB_USER }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.CONTAINER_REGISTRY_TOKEN }} + + - name: Login to Heroku Container Registry + uses: docker/login-action@v1 + with: + registry: registry.heroku.com + username: ${{ secrets.HEROKU_EMAIL }} + password: ${{ secrets.HEROKU_API_KEY }} + + - name: Build and push to DockerHub and GitHub Container Registry + uses: docker/build-push-action@v2 + with: + context: ./sw-server + file: ./sw-server/Dockerfile + push: true + tags: | + ${{ env.DOCKERHUB_USER }}/${{ env.DOCKER_IMAGE_NAME }}:latest + ${{ env.DOCKERHUB_USER }}/${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_IMAGE_TAG_SHA }} + ${{ env.DOCKERHUB_USER }}/${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_IMAGE_TAG_BUILD }} + ghcr.io/${{ github.repository_owner }}/${{ env.DOCKER_IMAGE_NAME }}:latest + ghcr.io/${{ github.repository_owner }}/${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_IMAGE_TAG_SHA }} + ghcr.io/${{ github.repository_owner }}/${{ env.DOCKER_IMAGE_NAME }}:${{ env.DOCKER_IMAGE_TAG_BUILD }} + registry.heroku.com/${{ env.HEROKU_APP_NAME }}/web + + - name: Heroku release (deploy Docker image) + env: + HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }} + run: heroku container:release -a ${{ env.HEROKU_APP_NAME }} web |