diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 7a24b06..13bbeba 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -16,6 +16,7 @@ on: env: DOCKER_REPO: shenxn/protonmail-bridge DOCKER_REPO_DEV: ghcr.io/shenxn/protonmail-bridge-dev + PLATFORMS: linux/amd64,linux/arm64/v8 jobs: build: @@ -45,12 +46,12 @@ jobs: uses: docker/setup-buildx-action@v1 with: driver-opts: network=host - - name: Build image without push to DockerHub + - name: Build image without push to registry uses: docker/build-push-action@v2 with: context: ./build file: ./build/Dockerfile - platforms: linux/amd64,linux/arm64/v8,linux/arm/v7 + platforms: ${{ env.PLATFORMS }} push: true tags: localhost:5000/protonmail-bridge:latest - name: Scan image @@ -83,7 +84,7 @@ jobs: with: context: ./build file: ./build/Dockerfile - platforms: linux/amd64,linux/arm64/v8,linux/arm/v7 + platforms: ${{ env.PLATFORMS }} tags: | ${{ steps.repo.outputs.repo }}:build ${{ steps.repo.outputs.repo }}:${{ steps.version.outputs.version }}-build diff --git a/.github/workflows/update-check.yaml b/.github/workflows/update-check.yaml index 5e53c66..cb9fe98 100644 --- a/.github/workflows/update-check.yaml +++ b/.github/workflows/update-check.yaml @@ -7,11 +7,11 @@ on: - dev paths: - .github/workflows/update-check.yaml - - update-check.sh + - update-check.py pull_request: paths: - .github/workflows/update-check.yaml - - update-check.sh + - update-check.py schedule: - cron: '0 0 * * *' # runs everyday at midnight @@ -24,4 +24,4 @@ jobs: with: token: ${{ secrets.PERSONAL_TOKEN }} - name: Check Update - run: bash update-check.sh ${{ github.event_name == 'pull_request' }} + run: python3 update-check.py ${{ github.event_name == 'pull_request' }} diff --git a/README.md b/README.md index bfcb352..9522fe8 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,10 @@ Docker Hub: [https://hub.docker.com/r/shenxn/protonmail-bridge](https://hub.dock GitHub: [https://github.com/shenxn/protonmail-bridge-docker](https://github.com/shenxn/protonmail-bridge-docker) +## ARMv7 Builds + +Currently there is a problem building the new parser targeting 32-bit architectures (i.e. `arm/v7`). The latest working build is `1.4.5-build`. Therefore, if you are using an `arm/v7` device like Raspberry Pi, do not upgrade to newer version. More information about the problem can be found [here](https://www.reddit.com/r/ProtonMail/comments/jvzm12/issue_building_bridge_150/). If you have any idea on how to fix this, a PR is welcome. + ## ARM Support We now support ARM devices (`arm64` and `arm/v7`)! Use the images tagged with `build`. See next section for details. diff --git a/build/Dockerfile b/build/Dockerfile index bdec4ef..dfbb90a 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -23,6 +23,6 @@ RUN apt-get update \ COPY gpgparams entrypoint.sh /protonmail/ # Copy protonmail -COPY --from=build /build/proton-bridge/Desktop-Bridge /protonmail/ +COPY --from=build /build/proton-bridge/proton-bridge /protonmail/ ENTRYPOINT ["bash", "/protonmail/entrypoint.sh"] diff --git a/build/VERSION b/build/VERSION index e516bb9..b4e1736 100644 --- a/build/VERSION +++ b/build/VERSION @@ -1 +1 @@ -1.4.5 +v1.5.4 \ No newline at end of file diff --git a/build/build.sh b/build/build.sh index 056c471..3182fdf 100644 --- a/build/build.sh +++ b/build/build.sh @@ -7,10 +7,7 @@ VERSION=`cat VERSION` # Clone new code git clone https://github.com/ProtonMail/proton-bridge.git cd proton-bridge -git checkout br-$VERSION - -# Enable debug log -sed -i "s/build desktop/-debug build desktop/" Makefile +git checkout $VERSION # Build make build-nogui diff --git a/update-check.py b/update-check.py new file mode 100644 index 0000000..b1127f6 --- /dev/null +++ b/update-check.py @@ -0,0 +1,64 @@ +import sys +import os +import requests +import json +import re + +is_pull_request = sys.argv[1] == "true" +print(f"is_pull_request={is_pull_request}") + + +def check_version(directory, new_version): + print(f"Checking version for {directory}") + + if not new_version: + print("Failed to get new version. Exiting.") + exit(1) + + with open(f"{directory}/VERSION", "r") as f: + old_version = f.read().rstrip() + + print(f"Up-to-date version {new_version}") + print(f"Current version: {old_version}") + + if old_version != new_version: + print(f"New release found: {new_version}") + + # bump up to new release + with open(f"{directory}/VERSION", "w") as f: + f.write(new_version) + # commit + result = os.system(f"git config --local user.email 'actions@github.com' \ + && git config --local user.name 'GitHub Actions' \ + && git add {directory}/VERSION \ + && git commit -m 'Bump {directory} version to {new_version}'") + if result != 0: + print("Failed to commit the bump. Exiting") + exit(1) + if is_pull_request: + print("Action triggered by pull request. Do not push.") + else: + result = os.system("git push") + if result != 0: + print("Failed to push. Exiting") + exit(1) + else: + print(f"Already newest version {old_version}") + + +# check deb version +response = requests.get("https://protonmail.com/download/current_version_linux.json") +content = json.loads(response.content) +version = re.match(".*_([0-9.-]+)_amd64\.deb", content["DebFile"]).group(1) +check_version("deb", version) + + +# check build version +response = requests.get( + "https://api.github.com/repos/ProtonMail/proton-bridge/tags", + headers={"Accept": "application/vnd.github.v3+json"}, + ) +tags = json.loads(response.content) +version_re = re.compile("v(\d+)\.(\d+)\.(\d+)") +releases = [tag["name"] for tag in tags if version_re.match(tag["name"])] +check_version("build", releases[0]) diff --git a/update-check.sh b/update-check.sh deleted file mode 100644 index 11622d7..0000000 --- a/update-check.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/bash - -set -ex - -IS_PULL_REQUEST=$1 - - -check_version() { - DIR=$1 - CURR_VERSION=$2 - - echo "Checking version for ${DIR}" - - VERSION=`cat ${DIR}/VERSION` - - if [[ -z $CURR_VERSION ]]; then - echo "Failed to get new version. Existing." - exit 1 - fi - - if [[ $VERSION != $CURR_VERSION ]]; then - echo "New release found: ${CURR_VERSION}" - - if [[ $IS_PULL_REQUEST == "true" ]]; then - echo "Action triggered by pull request. Do not bump version." - else - # bump up to new release - echo ${CURR_VERSION} > ${DIR}/VERSION - - # commit - git config --local user.email "actions@github.com" - git config --local user.name "Github Action" - git add ${DIR}/VERSION - git commit -m "Bump ${DIR} version to ${CURR_VERSION}" --author="Xiaonan Shen " - git push - fi - else - echo "Already newest version ${VERSION}" - fi - -} - - -JSON_CONTENT=$(curl -q https://protonmail.com/download/current_version_linux.json) -URL=$(echo ${JSON_CONTENT} | sed -n "s/^.*\"DebFile\":\"\([a-z0-9:/._-]*\)\".*$/\1/p") -CURR_VERSION=$(echo $URL | sed -n "s/https:\/\/protonmail.com\/.*_\([0-9.-]*\)_.*.deb/\1/p") -check_version deb $CURR_VERSION