From 448440b5284709036cd62890d1aaa5971adcc55e Mon Sep 17 00:00:00 2001 From: Ben Curtis Date: Tue, 3 Oct 2023 06:22:31 -0400 Subject: [PATCH] Added auto-build of docker image (#3361) * added auto-build of docker image * updated instructions * add tag image * clear refs/tags * dockerfile updates * build: adjust workflow to remove qemu and collision on github_* --------- Co-authored-by: Connor Tumbleson --- .github/workflows/docker.yml | 53 ++++++++++++++++++++++++++++++++++++ DOCKER.md | 14 ++++++---- 2 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 00000000..5474ab80 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,53 @@ +name: Build and push docker + +on: + release: + types: [published] + +# Use the below to integrate into a Beta build from master +# Changes to the Dockerfile to use the manually built Jar +# from the build automation would be required. +# on: +# pull_request: +# branches: [master] +# types: [closed] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + + build_and_push: + name: Build and push + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Get hash + id: hash + run: echo "APKTOOL_HASH=$(echo $GITHUB_SHA | cut -c 1-6)" >> $GITHUB_ENV + - name: Get release tag + id: tag + run: echo "APKTOOL_TAG=$(echo ${GITHUB_REF:-no-tag} |sed 's|refs/tags/||g')" >> $GITHUB_ENV + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + platforms: linux/amd64 + file: ./Dockerfile + push: true + tags: | + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.APKTOOL_HASH }} + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.APKTOOL_TAG }} + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest diff --git a/DOCKER.md b/DOCKER.md index 372c3af9..4060c8ac 100644 --- a/DOCKER.md +++ b/DOCKER.md @@ -2,17 +2,19 @@ We provide an easy way to leverage `apktool`, along with common Android tools such as `zipalign` and `apksigner`, all from within Docker. ## Building the Docker image -To build the image, use the included Dockerfile: +To use the image, pull or build with the included Dockerfile: ```bash -docker build -t apktool:latest . +docker pull ghcr.io/ibotpeaches/apktool:latest +# OR +docker build -t apktool:local . ``` ## Using the Docker image -The best way to use the image is to create aliases to run the internal commands: +The best way to use the image is to create aliases to run the internal commands. Replace `ghcr.io/ibotpeaches/apktool:latest` with `apktool:local` if you have built the image locally. ```bash -alias apktool="docker run --rm -ti --name=apktool -v \"${PWD}:${PWD}\" -w \"${PWD}\" apktool:latest apktool" -alias zipalign="docker run --rm -ti --name=zipalign -v \"${PWD}:${PWD}\" -w \"${PWD}\" apktool:latest zipalign" -alias apksigner="docker run --rm -ti --name=apksigner -v \"${PWD}:${PWD}\" -w \"${PWD}\" apktool:latest apksigner" +alias apktool="docker run --rm -ti --name=apktool -v \"${PWD}:${PWD}\" -w \"${PWD}\" ghcr.io/ibotpeaches/apktool:latest apktool" +alias zipalign="docker run --rm -ti --name=zipalign -v \"${PWD}:${PWD}\" -w \"${PWD}\" ghcr.io/ibotpeaches/apktool:latest zipalign" +alias apksigner="docker run --rm -ti --name=apksigner -v \"${PWD}:${PWD}\" -w \"${PWD}\" ghcr.io/ibotpeaches/apktool:latest apksigner" ``` ## Running the commands