From f1f5589804f4321fc535f5fd81f148c3e52c03da Mon Sep 17 00:00:00 2001 From: zamibd Date: Wed, 13 Aug 2025 03:39:12 +0400 Subject: [PATCH] fix some error --- .github/workflows/publish-docker.yml | 98 ++++++++++------------------ Dockerfile | 2 +- 2 files changed, 34 insertions(+), 66 deletions(-) diff --git a/.github/workflows/publish-docker.yml b/.github/workflows/publish-docker.yml index 541e53e..f9d9baa 100644 --- a/.github/workflows/publish-docker.yml +++ b/.github/workflows/publish-docker.yml @@ -1,72 +1,40 @@ -name: Publish Docker Images +name: Build and Push Docker Image on: push: - tags: [ 'v*.*.*' ] - -# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. -env: - REGISTRY: ghcr.io - # This also contains the owner, i.e. tun2proxy/tun2proxy. - IMAGE_PATH: ${{ github.repository }} - IMAGE_NAME: ${{ github.event.repository.name }} - DEFAULT_OS: scratch - -# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu. + branches: + - main # Runs when code is pushed to the main branch + workflow_dispatch: # Allows manual trigger from GitHub UI + jobs: - build-and-push-image: - name: Build and push Docker image - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - os: [ 'scratch', 'ubuntu', 'alpine' ] - # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. - permissions: - contents: read - packages: write - # + build: + runs-on: ubuntu-latest # Uses the latest Ubuntu runner + steps: - - name: Checkout repository + # ✅ Step 1: Checkout the repository code + - name: Checkout code uses: actions/checkout@v4 - # Add support for more platforms with QEMU (optional) - # https://github.com/docker/setup-qemu-action - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. - - name: Log in to the Container registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. - - name: Extract metadata (tags, labels) for Docker Image - id: meta - uses: docker/metadata-action@v5 - with: - # We publish the images with an OS-suffix. - # The image based on a default OS is also published without a suffix. - images: | - ${{ env.REGISTRY }}/${{ env.IMAGE_PATH }}-${{ matrix.os }} - ${{ env.DEFAULT_OS == matrix.os && format('{0}/{1}', env.REGISTRY, env.IMAGE_PATH) || '' }} - - # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. - # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. - # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. - - name: Build and push Docker image - uses: docker/build-push-action@v6 - with: - platforms: linux/amd64,linux/arm64 - context: . - file: Dockerfile - target: ${{ env.IMAGE_NAME }}-${{ matrix.os }} - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} + # ✅ Step 2: Login to Docker Hub using secrets + - name: Login to Docker Hub + run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin + + # ✅ Step 3: Login to GitHub Container Registry (GHCR) using Personal Access Token + # Required for pushing to organization-owned namespace (zamibd) + - name: Login to GHCR + run: echo "${{ secrets.GHCR_PAT }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin + + # ✅ Step 4: Build Docker image and tag for both Docker Hub and GHCR + - name: Build Docker image + run: | + docker build . --file Dockerfile \ + --tag imzami/socks5:latest \ + --tag ghcr.io/zamibd/socks5:latest + + # ✅ Step 5: Push image to Docker Hub + - name: Push to Docker Hub + run: docker push imzami/socks5:latest + + # ✅ Step 6: Push image to GitHub Container Registry (GHCR) + - name: Push to GHCR + run: docker push ghcr.io/zamibd/socks5:latest \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index f7aafdc..003578c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,7 +34,7 @@ FROM rust:latest AS musl-builder #################################################################################################### ## Alpine image #################################################################################################### -FROM alpine:latest AS tun2proxy-alpine +FROM alpine:3.22 AS tun2proxy-alpine COPY --from=musl-builder /worker/target/*/release/tun2proxy-bin /usr/bin/tun2proxy-bin