name: Docker image on: push: branches: - master paths: - 'scripts/Dockerfile' - 'scripts/properties.sh' - 'scripts/setup-android-sdk.sh' - 'scripts/setup-ubuntu.sh' - 'scripts/setup-cgct.sh' schedule: - cron: '0 2 * * 0' workflow_dispatch: jobs: update: runs-on: ubuntu-latest permissions: contents: read packages: write if: github.repository == 'termux/termux-packages' steps: - name: Clone repository uses: actions/checkout@v4 - name: Build run: | cd ./scripts docker build --tag termux/package-builder:latest . docker tag termux/package-builder:latest ghcr.io/termux/package-builder:latest - name: Login to GHCR if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'termux/termux-packages' uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Login to Docker Hub if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'termux/termux-packages' uses: docker/login-action@v2 with: username: grimler password: ${{ secrets.DOCKER_TOKEN }} - name: Push if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'termux/termux-packages' run: | # ghcr.io seem to be unstable sometimes. It may suddenly drop connection # during docker push when some layers are already uploaded. The workaround # is to retry again 1 or 2 more times. for t in 1 2 3; do if docker push "ghcr.io/termux/package-builder:latest"; then break else if [ "$t" = "3" ]; then exit 1 fi fi done docker push termux/package-builder:latest