diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1cf4448..11793c8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,7 @@ name: Build Reticulum env: - REGISTRY_IMAGE: ${{ github.repository_owner }}/reticulum + REGISTRY_IMAGE: ghcr.io/${{ github.repository_owner }}/reticulum on: push: @@ -24,18 +24,18 @@ concurrency: cancel-in-progress: true jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: 3.x - - run: make test + # test: + # runs-on: ubuntu-latest + # steps: + # - uses: actions/checkout@v4 + # - name: Set up Python + # uses: actions/setup-python@v5 + # with: + # python-version: 3.x + # - run: make test package: - needs: test + #needs: test if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest environment: ${{ contains(github.ref, '-') && 'development' || 'production' }} @@ -102,6 +102,8 @@ jobs: needs: release if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest + permissions: + packages: write strategy: fail-fast: false matrix: @@ -110,25 +112,25 @@ jobs: - linux/arm64 - linux/arm/v7 - linux/arm/v6 - - linux/386 - - linux/ppc64le - - linux/riscv64 - - linux/s390x environment: ${{ contains(github.ref, '-') && 'development' || 'production' }} steps: + - name: Prepare + run: | + platform=${{ matrix.platform }} + echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV - name: Docker meta id: meta uses: docker/metadata-action@v5 with: - images: lbatalha/reticulum:${{ github.ref_name }} + images: ${{ env.REGISTRY_IMAGE }} - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 + # - name: Set up QEMU + # uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - uses: actions/checkout@v4 @@ -138,15 +140,18 @@ jobs: # - name: Build and push # uses: docker/build-push-action@v6 # with: + # context: .git st # file: docker/Dockerfile.dist - # platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6, linux/386, linux/ppc64le + # platforms: linux/amd64,linux/arm64 # push: true - # tags: ${{ github.repository_owner }}/reticulum:${{ github.ref_name }} + # tags: ${{ env.REGISTRY_IMAGE }} + - name: Build and push by digest id: build uses: docker/build-push-action@v6 with: - file: docker/Dockerfile.dist + context: . + file: docker/Dockerfile.release platforms: ${{ matrix.platform }} labels: ${{ steps.meta.outputs.labels }} tags: ${{ env.REGISTRY_IMAGE }} @@ -169,6 +174,8 @@ jobs: container-manifest-merge: if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest + permissions: + packages: write needs: - build-containers-release steps: diff --git a/.gitignore b/.gitignore index 0b6903d..da30404 100755 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ tests/rnsconfig/storage tests/rnsconfig/logfile* *.data *.result +.vscode diff --git a/docker/Dockerfile.release b/docker/Dockerfile.release new file mode 100644 index 0000000..ec50403 --- /dev/null +++ b/docker/Dockerfile.release @@ -0,0 +1,25 @@ +FROM python:3.13-alpine as build + +RUN apk add --no-cache build-base linux-headers libffi-dev libressl-dev cargo + +ENV PIP_ROOT_USER_ACTION=ignore +ENV PIP_DISABLE_PIP_VERSION_CHECK=1 +ENV PIP_NO_CACHE_DIR=1 +RUN pip install rns + +FROM python:3.13-alpine + +COPY --from=build /usr/local/bin/ /usr/local/bin/ + +RUN mkdir /config + +RUN addgroup -S rns --gid 1000 && adduser -S rns --uid 1000 -G rns dialout +RUN chown rns:rns /config + +USER rns:rns + +VOLUME ["/config"] + +ENV PYTHONUNBUFFERED=1 + +ENTRYPOINT ["/usr/local/bin/rnsd", "--config", "/config"]