diff --git a/.github/workflows/upload_app_image.yml b/.github/workflows/upload_app_image.yml index 94ed2a7..c23f6b8 100644 --- a/.github/workflows/upload_app_image.yml +++ b/.github/workflows/upload_app_image.yml @@ -12,12 +12,13 @@ on: - 'requirements.txt' - '!./web/**' jobs: - build_app_image: + build_amd64: runs-on: ubuntu-latest env: DOCKERHUB_USERNAME: rikasai DOCKER_REPOSITORY_NAME: fast-runner-backend + ARCH: amd64 steps: - name: Check out the repository @@ -38,7 +39,7 @@ jobs: GIT_TAG=$(git describe --tags --exact-match ${{ github.sha }} 2> /dev/null || echo "") echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV - - name: Build APP Image + - name: Build AMD64 Image uses: docker/build-push-action@v2 with: context: . @@ -47,4 +48,46 @@ jobs: push: true tags: | ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest + ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest-amd64 ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }} + ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}-amd64', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }} + + build_arm64: + runs-on: ubuntu-24.04-arm + + env: + DOCKERHUB_USERNAME: rikasai + DOCKER_REPOSITORY_NAME: fast-runner-backend + ARCH: arm64 + + steps: + - name: Check out the repository + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Get Git tag if exists + id: get_tag + run: | + GIT_TAG=$(git describe --tags --exact-match ${{ github.sha }} 2> /dev/null || echo "") + echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV + + - name: Build ARM64 Image + uses: docker/build-push-action@v2 + with: + context: . + file: ./Dockerfile + platforms: linux/arm64 + push: true + tags: | + ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest + ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest-arm64 + ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }} + ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}-arm64', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }} diff --git a/.github/workflows/upload_web_image.yml b/.github/workflows/upload_web_image.yml index 1e889e3..edc49aa 100644 --- a/.github/workflows/upload_web_image.yml +++ b/.github/workflows/upload_web_image.yml @@ -12,18 +12,17 @@ on: - '**/*.py' jobs: - build_and_push: + build_amd64: runs-on: ubuntu-latest - env: DOCKERHUB_USERNAME: rikasai DOCKER_REPOSITORY_NAME: fast-runner-frontend + ARCH: amd64 steps: - name: Check out the repository uses: actions/checkout@v4 - # Cache yarn dependencies - name: Cache yarn dependencies uses: actions/cache@v2 with: @@ -32,11 +31,8 @@ jobs: restore-keys: | ${{ runner.os }}-yarn- - # - name: Set up QEMU - # uses: docker/setup-qemu-action@v3 - - # - name: Set up Docker Buildx - # uses: docker/setup-buildx-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 - name: Log in to Docker Hub uses: docker/login-action@v2 @@ -50,7 +46,7 @@ jobs: GIT_TAG=$(git describe --tags --exact-match ${{ github.sha }} 2> /dev/null || echo "") echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV - - name: Build and push Docker image + - name: Build and push AMD64 Docker image uses: docker/build-push-action@v2 with: context: ./web @@ -59,4 +55,53 @@ jobs: push: true tags: | ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest + ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest-amd64 + ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }} + ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}-amd64', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }} + + build_arm64: + runs-on: ubuntu-22.04-arm + env: + DOCKERHUB_USERNAME: rikasai + DOCKER_REPOSITORY_NAME: fast-runner-frontend + ARCH: arm64 + + steps: + - name: Check out the repository + uses: actions/checkout@v4 + + - name: Cache yarn dependencies + uses: actions/cache@v2 + with: + path: ./web/node_modules + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Get Git tag if exists + id: get_tag + run: | + GIT_TAG=$(git describe --tags --exact-match ${{ github.sha }} 2> /dev/null || echo "") + echo "GIT_TAG=$GIT_TAG" >> $GITHUB_ENV + + - name: Build and push ARM64 Docker image + uses: docker/build-push-action@v2 + with: + context: ./web + file: ./web/Dockerfile-build + platforms: linux/arm64 + push: true + tags: | + ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest + ${{ env.DOCKERHUB_USERNAME }}/${{ env.DOCKER_REPOSITORY_NAME }}:latest-arm64 ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }} + ${{ env.GIT_TAG != '' && format('{0}/{1}:{2}-arm64', env.DOCKERHUB_USERNAME, env.DOCKER_REPOSITORY_NAME, env.GIT_TAG) || '' }}