From b8296a70d6dd37350538746740d1408747018f96 Mon Sep 17 00:00:00 2001 From: Xiaonan Shen Date: Sun, 31 May 2020 21:16:31 -0700 Subject: [PATCH] Improve build --- .dockerignore | 2 +- .github/workflows/main.yaml | 52 ++++++++++--------------------------- Dockerfile | 6 +++-- VERSION | 1 + install.sh | 27 +++++++++++++------ releaserc | 2 -- repack-deb.sh | 25 ------------------ set-env.sh | 11 ++++++++ 8 files changed, 50 insertions(+), 76 deletions(-) create mode 100644 VERSION delete mode 100644 releaserc delete mode 100644 repack-deb.sh create mode 100644 set-env.sh diff --git a/.dockerignore b/.dockerignore index 54a69f3..b762fe2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,7 +1,7 @@ * !.dockerignore -!releaserc +!VERSION !entrypoint.sh !install.sh !gpgparams diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 6f0c388..93d2c0e 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -2,10 +2,9 @@ name: build on: push: - tags: - - 'v*' - repository_dispatch: - types: build + branches: + - master + - dev env: DOCKER_TAG: shenxn/protonmail-bridge @@ -14,37 +13,14 @@ jobs: build: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@master - - name: Set Env - run: | - source releaserc - echo "::set-env name=RELEASE::${RELEASE}" - echo "::set-env name=DEB_FILE::${DEB_FILE}" - - name: Repack deb - run: bash repack-deb.sh - - name: Create Release - id: create-release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ env.RELEASE }} - release_name: Release ${{ env.RELEASE }} - body: Repacked ProtonMail Bridge deb without dependencies not needed by cli mode. - draft: false - prerelease: false - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create-release.outputs.upload_url }} - asset_path: ./deb/${{ env.DEB_FILE }} - asset_name: ${{ env.DEB_FILE }} - asset_content_type: application/vnd.debian.binary-package - - name: Push Tag to Trigger Docker Hub Build - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: bash push-tag.sh + - name: Checkout + uses: actions/checkout@master + - name: Set Env + run: bash set-env.sh + - uses: docker/build-push-action@v1 + with: + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.REGISTRY_PASSWORD }} + repository: shenxn/protonmail-bridge + tags: ${{ env.TAGS }} + add_git_labels: true diff --git a/Dockerfile b/Dockerfile index c89e93b..e711dd4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,10 +4,12 @@ LABEL maintainer="Xiaonan Shen " EXPOSE 25/tcp EXPOSE 143/tcp +WORKDIR /protonmail + # Copy bash scripts -COPY gpgparams install.sh entrypoint.sh releaserc /protonmail/ +COPY gpgparams install.sh entrypoint.sh VERSION /protonmail/ # Install dependencies and protonmail bridge -RUN bash /protonmail/install.sh +RUN bash install.sh ENTRYPOINT ["bash", "/protonmail/entrypoint.sh"] diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..7c5e509 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +1.2.7-1 \ No newline at end of file diff --git a/install.sh b/install.sh index 229782f..98b43ed 100644 --- a/install.sh +++ b/install.sh @@ -2,21 +2,32 @@ set -ex -source /protonmail/releaserc +VERSION=`cat VERSION` +DEB_FILE=protonmail-bridge_${VERSION}_amd64.deb # Install dependents apt-get update apt-get install -y --no-install-recommends socat pass -# Download repacked deb -apt-get install -y wget -wget -O /protonmail/protonmail.deb https://github.com/shenxn/protonmail-bridge-docker/releases/download/${RELEASE}/${DEB_FILE} -apt-get purge -y wget -apt-get autoremove -y +# Build time dependencies +apt-get install -y wget binutils xz-utils + +# Repack deb (remove unnecessary dependencies) +wget https://protonmail.com/download/${DEB_FILE} +ar x -v ${DEB_FILE} +mkdir control +tar xvfJ control.tar.xz -C control +sed -i "s/^Depends: .*$/Depends: libsecret-1-0, libgl1-mesa-glx/" control/control +cd control +tar cvfJ ../control.tar.xz . +cd ../ +ar rcs -v ${DEB_FILE} debian-binary control.tar.xz data.tar.xz # Install protonmail bridge -apt-get install -y --no-install-recommends /protonmail/protonmail.deb +apt-get install -y --no-install-recommends ./${DEB_FILE} # Cleanup +apt-get purge -y wget binutils xz-utils +apt-get autoremove -y rm -rf /var/lib/apt/lists/* -rm /protonmail/protonmail.deb +rm ${DEB_FILE} diff --git a/releaserc b/releaserc deleted file mode 100644 index 7319098..0000000 --- a/releaserc +++ /dev/null @@ -1,2 +0,0 @@ -RELEASE=1.2.7-1 -DEB_FILE=protonmail-bridge_${RELEASE}_amd64.deb diff --git a/repack-deb.sh b/repack-deb.sh deleted file mode 100644 index eecde52..0000000 --- a/repack-deb.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -set -ex - -source releaserc - -# Download deb -mkdir deb -cd deb -rm -f ${DEB_FILE} -wget https://protonmail.com/download/${DEB_FILE} - -# Unpack deb -ar x -v ${DEB_FILE} -mkdir control -tar xvfJ control.tar.xz -C control - -# Replace qt with libgl and remove unnecessary dependencies -sed -i "s/^Depends: .*$/Depends: libsecret-1-0, libgl1-mesa-glx/" control/control - -# Pack deb -cd control -tar cvfJ ../control.tar.xz . -cd ../ -ar rcs -v ${DEB_FILE} debian-binary control.tar.xz data.tar.xz diff --git a/set-env.sh b/set-env.sh new file mode 100644 index 0000000..e9e67ed --- /dev/null +++ b/set-env.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +set -ex + +VERSION=`cat VERSION` + +if [[ $GITHUB_REF == "master" ]]; then + echo "::set-env name=TAGS::latest,${VERSION}" +else + echo "::set-env name=TAGS::dev,${VERSION}-dev" +fi