summaryrefslogtreecommitdiff
path: root/.github/workflows/ci-cd.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/ci-cd.yml')
-rw-r--r--.github/workflows/ci-cd.yml87
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
bgstack15