diff --git a/.github/workflows/build-and-release.yaml b/.github/workflows/build-and-release.yaml index 6fc11aa7a..57c327a6a 100644 --- a/.github/workflows/build-and-release.yaml +++ b/.github/workflows/build-and-release.yaml @@ -17,7 +17,7 @@ env: jobs: static-code-analysis: - runs-on: ubuntu-20.04 + runs-on: arc-amd64-runners steps: - name: Checkout uses: actions/checkout@v2 @@ -44,8 +44,6 @@ jobs: build: - runs-on: ubuntu-20.04 - strategy: matrix: include: @@ -54,26 +52,27 @@ jobs: dockerhub_push: false python_version: "3.7" run_tests: true + runs-on: arc-amd64-runners - arch: amd64 build_name: py3.8 dockerhub_push: true python_version: "3.8" run_tests: true + runs-on: arc-amd64-runners - arch: amd64 build_name: py3.9 dockerhub_push: false python_version: "3.9" run_tests: true - - # The qemu arm64 builds are *very* slow so they are split out into - # their own workflow - - # - arch: arm64 - # build_name: py3.8 - # dockerhub_push: true - # python_version: "3.8" - # run_tests: false - + runs-on: arc-amd64-runners + - arch: arm64 + build_name: py3.8 + dockerhub_push: true + python_version: "3.8" + run_tests: false + runs-on: arc-arm64-runners + + runs-on: "${{ matrix.runs-on }}" steps: - name: Checkout uses: actions/checkout@v2 @@ -149,7 +148,7 @@ jobs: needs: - build - runs-on: ubuntu-20.04 + runs-on: arc-amd64-runners strategy: matrix: @@ -181,5 +180,5 @@ jobs: run: | docker buildx imagetools create \ -t ${{ env.DOCKER_IMAGE_TAG }} \ - ${{ env.DOCKER_IMAGE_TAG }}-amd64 - # ${{ env.DOCKER_IMAGE_TAG }}-arm64 + ${{ env.DOCKER_IMAGE_TAG }}-amd64 \ + ${{ env.DOCKER_IMAGE_TAG }}-arm64 diff --git a/.github/workflows/build-arm64.yaml b/.github/workflows/build-arm64.yaml deleted file mode 100644 index 37a8ffce3..000000000 --- a/.github/workflows/build-arm64.yaml +++ /dev/null @@ -1,140 +0,0 @@ -name: Build arm64 - -on: - push: - branches: - - '*' - -concurrency: - group: build-arm64-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -env: - DOCKERHUB_NAMESPACE: closeio - PROJECT: sync-engine - # TODO: Remove this after migration - TAG_SUFFIX: "-gha" - -jobs: - build-arm64: - runs-on: ubuntu-20.04 - - strategy: - matrix: - include: - - arch: arm64 - build_name: py3.8 - dockerhub_push: true - python_version: "3.8" - run_tests: false - - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Get short sha - id: vars - run: | - echo ::set-output name=sha_short::${GITHUB_SHA::16} - shell: bash - - - name: Prepare environment - run: | - if [ "$(git log -1 --pretty=%B | head -n 1 | grep '#notests')" ]; then - echo 'SKIP_TESTS="1"' >> $GITHUB_ENV - fi - echo "DOCKER_IMAGE_TAG=${{ env.DOCKERHUB_NAMESPACE }}/${{ env.PROJECT }}:${{ steps.vars.outputs.sha_short }}-${{ matrix.build_name}}${{ env.TAG_SUFFIX }}-${{ matrix.arch }}" >> $GITHUB_ENV - shell: bash - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker context for Buildx - id: buildx-context - run: | - docker context create container-builder - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - with: - version: latest - endpoint: container-builder - - - name: Login to DockerHub - # if: ${{ github.ref == 'master' && github.event.pull_request.merged == true }} - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Build and push sync-engine images - uses: docker/build-push-action@v2 - with: - platforms: linux/${{ matrix.arch }} - push: false - load: true - build-args: - PYTHON_VERSION=${{ matrix.python_version }} - tags: | - ${{ env.DOCKER_IMAGE_TAG }} - cache-from: type=gha - cache-to: type=gha,mode=max - - - name: Run tests - if: ${{ matrix.run_tests }} - run: | - docker tag ${{ env.DOCKER_IMAGE_TAG }} ${{ env.PROJECT }}_app - if [[ -z $SKIP_TESTS ]]; then - docker-compose run app bash -ec ' - bin/wait-for-it.sh mysql:3306 \ - && NYLAS_ENV=test pytest --cov-report= --cov=inbox tests/ \ - && coverage html -d pythoncov - ' - else - echo Skipping tests - fi - - - name: Push image - if: ${{ matrix.dockerhub_push }} - run: | - docker push ${{ env.DOCKER_IMAGE_TAG }} - - multi-arch-manifest: - needs: - - build-arm64 - - runs-on: ubuntu-20.04 - - strategy: - matrix: - include: - - build_name: py3.8 - - steps: - - name: Get short sha - id: vars - run: | - echo ::set-output name=sha_short::${GITHUB_SHA::16} - shell: bash - - - name: Prepare environment - run: | - if [ "$(git log -1 --pretty=%B | head -n 1 | grep '#notests')" ]; then - echo 'SKIP_TESTS="1"' >> $GITHUB_ENV - fi - echo "DOCKER_IMAGE_TAG=${{ env.DOCKERHUB_NAMESPACE }}/${{ env.PROJECT }}:${{ steps.vars.outputs.sha_short }}-${{ matrix.build_name}}${{ env.TAG_SUFFIX }}" >> $GITHUB_ENV - shell: bash - - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - # Because the arm64 builds are so much slower, we assume they will just - # be appended to the existing manifest created by `build-and-release.yaml`. - - name: Create manifest - run: | - docker buildx imagetools create --append \ - -t ${{ env.DOCKER_IMAGE_TAG }} \ - ${{ env.DOCKER_IMAGE_TAG }}-arm64 \ No newline at end of file