From 157ff934c967a28acf4e16a4eb0c340f0c422185 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Sat, 14 Nov 2020 14:25:16 +0100 Subject: [PATCH 1/4] devops: push Docker image to MCR --- .github/workflows/publish.yml | 40 ++++++++++++++++++- .github/workflows/publish_canary_docker.yml | 43 +++++++++++++++++++++ .github/workflows/test_docker.yml | 8 ++-- scripts/tag_image_and_push.sh | 5 +++ 4 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/publish_canary_docker.yml create mode 100755 scripts/tag_image_and_push.sh diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 47d0f7050..f86ca85b0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,7 +3,7 @@ on: release: types: [published] jobs: - deploy: + deploy-pypi: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 @@ -28,3 +28,41 @@ jobs: TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: twine upload dist/* + publish-docker: + name: "publish to DockerHub" + # We use `docker push --all-tags` to push all tags which is a newly addition to docker + runs-on: ubuntu-20.04 + if: github.repository == 'microsoft/playwright-python' + steps: + - uses: actions/checkout@v2 + - uses: azure/docker-login@v1 + with: + login-server: playwright.azurecr.io + username: playwright + password: ${{ secrets.DOCKER_PASSWORD }} + - uses: microsoft/playwright-github-action@v1 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r local-requirements.txt + pip install -e . + - name: Build package + run: python build_package.py + - name: Install + run: python -m playwright install + - name: Build Docker image + run: docker build -t playwright-python:localbuild . + - name: tag & publish + run: | + # GITHUB_REF has a form of `refs/tags/v1.3.0`. + # TAG_NAME would be `v1.3.0` + TAG_NAME=${GITHUB_REF#refs/tags/} + ./scripts/tag_image_and_push.sh playwright-python:localbuild playwright.azurecr.io/public/playwright-python:latest + ./scripts/tag_image_and_push.sh playwright-python:localbuild playwright.azurecr.io/public/playwright-python:${TAG_NAME} + + ./scripts/tag_image_and_push.sh playwright-python:localbuild playwright.azurecr.io/public/playwright-python:focal + ./scripts/tag_image_and_push.sh playwright:localbuild-focal playwright.azurecr.io/public/playwright-python:${TAG_NAME}-focal diff --git a/.github/workflows/publish_canary_docker.yml b/.github/workflows/publish_canary_docker.yml new file mode 100644 index 000000000..b5dff43f0 --- /dev/null +++ b/.github/workflows/publish_canary_docker.yml @@ -0,0 +1,43 @@ +name: "devrelease:docker" + +on: + push: + branches: + - master + - release-* + paths: + - .github/workflows/publish_canary_docker.yml + +jobs: + publish-canary-docker: + name: "publish to DockerHub" + # We use `docker push --all-tags` to push all tags which is a newly addition to docker + runs-on: ubuntu-20.04 + if: github.repository == 'microsoft/playwright-python' + steps: + - uses: actions/checkout@v2 + - uses: azure/docker-login@v1 + with: + login-server: playwright.azurecr.io + username: playwright + password: ${{ secrets.DOCKER_PASSWORD }} + - uses: microsoft/playwright-github-action@v1 + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: 3.8 + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r local-requirements.txt + pip install -e . + - name: Build package + run: python build_package.py + - name: Install + run: python -m playwright install + - run: docker build -t playwright-python:localbuild . + - name: tag & publish + run: | + ./scripts/tag_image_and_push.sh playwright-python:localbuild playwright.azurecr.io/public/playwright-python:next + ./scripts/tag_image_and_push.sh playwright-python:localbuild playwright.azurecr.io/public/playwright-python:next-focal + ./scripts/tag_image_and_push.sh playwright-python:localbuild playwright.azurecr.io/public/playwright-python:sha-${{ github.sha }} diff --git a/.github/workflows/test_docker.yml b/.github/workflows/test_docker.yml index bdc723001..5ee2093b7 100644 --- a/.github/workflows/test_docker.yml +++ b/.github/workflows/test_docker.yml @@ -18,10 +18,6 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - - name: Set up Node.js - uses: actions/setup-node@v1 - with: - node-version: 12.x - name: Set up Python uses: actions/setup-python@v2 with: @@ -42,4 +38,6 @@ jobs: CONTAINER_ID="$(docker run --rm -v $(pwd):/root/playwright --name playwright-docker-test -d -t playwright-python:localbuild /bin/bash)" docker exec --workdir /root/playwright/ "${CONTAINER_ID}" pip install -r local-requirements.txt docker exec --workdir /root/playwright/ "${CONTAINER_ID}" pip install -e . - docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser chromium + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser firefox + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser webkit diff --git a/scripts/tag_image_and_push.sh b/scripts/tag_image_and_push.sh new file mode 100755 index 000000000..9c5b09d2e --- /dev/null +++ b/scripts/tag_image_and_push.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +echo "-- tagging: $2" +docker tag $1 $2 +docker push $2 From 7c56f6cd38d5230261c9ff15d59bdcc52b5800f3 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Tue, 24 Nov 2020 15:46:17 +0100 Subject: [PATCH 2/4] chore: remove unrelevant comment in GHA file --- .github/workflows/publish.yml | 1 - .github/workflows/publish_canary_docker.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f86ca85b0..103020833 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -30,7 +30,6 @@ jobs: run: twine upload dist/* publish-docker: name: "publish to DockerHub" - # We use `docker push --all-tags` to push all tags which is a newly addition to docker runs-on: ubuntu-20.04 if: github.repository == 'microsoft/playwright-python' steps: diff --git a/.github/workflows/publish_canary_docker.yml b/.github/workflows/publish_canary_docker.yml index b5dff43f0..e56156b5e 100644 --- a/.github/workflows/publish_canary_docker.yml +++ b/.github/workflows/publish_canary_docker.yml @@ -11,7 +11,6 @@ on: jobs: publish-canary-docker: name: "publish to DockerHub" - # We use `docker push --all-tags` to push all tags which is a newly addition to docker runs-on: ubuntu-20.04 if: github.repository == 'microsoft/playwright-python' steps: From 7be808c01835032c1509a0ab22bfb301a465fc63 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Wed, 25 Nov 2020 00:32:45 +0100 Subject: [PATCH 3/4] test if it works now --- .github/workflows/test_docker.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test_docker.yml b/.github/workflows/test_docker.yml index 5ee2093b7..b6f83dee1 100644 --- a/.github/workflows/test_docker.yml +++ b/.github/workflows/test_docker.yml @@ -3,13 +3,13 @@ on: push: paths: - '.github/workflows/test_docker.yml' - - 'driver/**' + - 'build_package.py' branches: - master pull_request: paths: - '.github/workflows/test_docker.yml' - - 'driver/**' + - 'build_package.py' branches: - master jobs: @@ -38,6 +38,7 @@ jobs: CONTAINER_ID="$(docker run --rm -v $(pwd):/root/playwright --name playwright-docker-test -d -t playwright-python:localbuild /bin/bash)" docker exec --workdir /root/playwright/ "${CONTAINER_ID}" pip install -r local-requirements.txt docker exec --workdir /root/playwright/ "${CONTAINER_ID}" pip install -e . - docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser chromium - docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser firefox - docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser webkit + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" python build_package.py + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser chromium tests/ + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser firefox tests/ + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser webkit tests/ From 0e7327f77edada35bab3bf5cc9b0bc34ddc458a8 Mon Sep 17 00:00:00 2001 From: Max Schmitt Date: Fri, 27 Nov 2020 20:34:08 +0100 Subject: [PATCH 4/4] fix: it --- .github/workflows/test_docker.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_docker.yml b/.github/workflows/test_docker.yml index b6f83dee1..a75eac645 100644 --- a/.github/workflows/test_docker.yml +++ b/.github/workflows/test_docker.yml @@ -39,6 +39,5 @@ jobs: docker exec --workdir /root/playwright/ "${CONTAINER_ID}" pip install -r local-requirements.txt docker exec --workdir /root/playwright/ "${CONTAINER_ID}" pip install -e . docker exec --workdir /root/playwright/ "${CONTAINER_ID}" python build_package.py - docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser chromium tests/ - docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser firefox tests/ - docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv --browser webkit tests/ + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv tests/sync/ + docker exec --workdir /root/playwright/ "${CONTAINER_ID}" xvfb-run pytest -vv tests/async/