MAINT: Upgrade the remaining GitHub Actions. <!-- Thank you for contributing to Pyodide! All improvements are welcome,
     so don't be afraid to make a PR. -->

### Description

<!-- Please explain what your PR is about:
     - reasoning for the change
     - some details of updated code
     - any noteworthy choices to be aware of
	Please refer to any related issues by #<issue_id> -->

- https://github.com/actions/checkout/releases
- https://github.com/docker/build-push-action/releases
- https://github.com/docker/login-action/releases
- https://github.com/docker/metadata-action/releases
- https://github.com/pypa/gh-action-pypi-publish/releases
- https://github.com/test-summary/action/releases

Also, add a final check to the CPython upgrade instructions.

### Checklists

<!-- Note:
     If you think some of these steps are not necessary for your PR,
     remove those checkboxes, or mark them as checked. If you keep unchecked checkboxes,
     we will assume that your PR is not ready to be merged  -->

- [ ] Add a [CHANGELOG](https://github.com/pyodide/pyodide/blob/main/docs/project/changelog.md) entry
- [x] Add / update tests
- [ ] Add new / update outdated documentation

name: pyodide-env-docker
on:
  workflow_dispatch:
    inputs:
      chrome_version:
        description: "Version of the chrome browser (e.g. 97, 96, latest)."
        required: false
        default: "97"
      firefox_version:
        description: "Version of the firefox browser (e.g. 96, 95, latest)."
        required: false
        default: "96"
      tag:
        description: "Tag of the docker image to build (If not set, <release-date>-chrome[version]-firefox[version] will be used)"
        required: false
        default: ""
env:
  GHCR_REGISTRY: ghcr.io
  IMAGE_NAME: pyodide/pyodide-env
jobs:
  build_docker:
    runs-on: ubuntu-latest
    environment: Docker
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Log into Docker Hub registry
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Extract Docker metadata
        id: meta
        uses: docker/metadata-action@v3
        with:
          images: ${{ env.IMAGE_NAME }}
      - name: Set tag
        id: tag
        run: |
          TAG=${{ github.event.inputs.tag }}
          if [ -z "$TAG" ]; then
            DATE=$(date +'%Y%m%d')
            TAG="$DATE-chrome${{ github.event.inputs.chrome_version }}-firefox${{ github.event.inputs.firefox_version }}"
          fi
          echo "::set-output name=tag::$TAG"
      - name: Build and push Docker image to Docker Hub
        id: build
        uses: docker/build-push-action@v2
        with:
          file: ./Dockerfile
          push: true
          tags: ${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            CHROME_VERSION=${{ github.event.inputs.chrome_version }}
            FIREFOX_VERSION=${{ github.event.inputs.firefox_version }}
      - name: Image digest
        run: echo ${{ steps.build.outputs.digest }}
  build_ghcr:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2
      - name: Log into registry ${{ env.GHCR_REGISTRY }}
        uses: docker/login-action@v1
        with:
          registry: ${{ env.GHCR_REGISTRY }}
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Extract Docker metadata
        id: meta
        uses: docker/metadata-action@v3
        with:
          images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
      - name: Set tag
        id: tag
        run: |
          TAG=${{ github.event.inputs.tag }}
          if [ -z "$TAG" ]; then
            DATE=$(date +'%Y%m%d')
            TAG="$DATE-chrome${{ github.event.inputs.chrome_version }}-firefox${{ github.event.inputs.firefox_version }}"
          fi
          echo "::set-output name=tag::$TAG"
      - name: Build and push Docker image to ${{ env.GHCR_REGISTRY }}
        id: build
        uses: docker/build-push-action@v2
        with:
          file: ./Dockerfile
          push: true
          tags: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            CHROME_VERSION=${{ github.event.inputs.chrome_version }}
            FIREFOX_VERSION=${{ github.event.inputs.firefox_version }}
      - name: Image digest
        run: echo ${{ steps.build.outputs.digest }}

name: pyodide-env-docker
on:
  workflow_dispatch:
    inputs:
      chrome_version:
        description: "Version of the chrome browser (e.g. 109, 108, latest)."
        required: false
        default: "109"
      firefox_version:
        description: "Version of the firefox browser (e.g. 109, 108, latest)."
        required: false
        default: "109"
      tag:
        description: "Tag of the docker image to build (If not set, <release-date>-chrome[version]-firefox[version] will be used)"
        required: false
        default: ""
env:
  GHCR_REGISTRY: ghcr.io
  IMAGE_NAME: pyodide/pyodide-env
jobs:
  build_docker:
    runs-on: ubuntu-latest
    environment: Docker
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Log into Docker Hub registry
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      - name: Extract Docker metadata
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: ${{ env.IMAGE_NAME }}
      - name: Set tag
        id: tag
        run: |
          TAG=${{ github.event.inputs.tag }}
          if [ -z "$TAG" ]; then
            DATE=$(date +'%Y%m%d')
            TAG="$DATE-chrome${{ github.event.inputs.chrome_version }}-firefox${{ github.event.inputs.firefox_version }}"
          fi
          echo "::set-output name=tag::$TAG"
      - name: Build and push Docker image to Docker Hub
        id: build
        uses: docker/build-push-action@v4
        with:
          file: ./Dockerfile
          push: true
          tags: ${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            CHROME_VERSION=${{ github.event.inputs.chrome_version }}
            FIREFOX_VERSION=${{ github.event.inputs.firefox_version }}
      - name: Image digest
        run: echo ${{ steps.build.outputs.digest }}
  build_ghcr:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v3
      - name: Log into registry ${{ env.GHCR_REGISTRY }}
        uses: docker/login-action@v2
        with:
          registry: ${{ env.GHCR_REGISTRY }}
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Extract Docker metadata
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
      - name: Set tag
        id: tag
        run: |
          TAG=${{ github.event.inputs.tag }}
          if [ -z "$TAG" ]; then
            DATE=$(date +'%Y%m%d')
            TAG="$DATE-chrome${{ github.event.inputs.chrome_version }}-firefox${{ github.event.inputs.firefox_version }}"
          fi
          echo "::set-output name=tag::$TAG"
      - name: Build and push Docker image to ${{ env.GHCR_REGISTRY }}
        id: build
        uses: docker/build-push-action@v4
        with:
          file: ./Dockerfile
          push: true
          tags: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.tag.outputs.tag }}
          labels: ${{ steps.meta.outputs.labels }}
          build-args: |
            CHROME_VERSION=${{ github.event.inputs.chrome_version }}
            FIREFOX_VERSION=${{ github.event.inputs.firefox_version }}
      - name: Image digest
        run: echo ${{ steps.build.outputs.digest }}
