| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- name: Build docker image
- on:
- release:
- types: [published]
- jobs:
- build-image:
- runs-on: ubuntu-latest
- permissions:
- packages: write
- steps:
- - uses: actions/checkout@v4
- - name: Docker metadata
- id: meta
- uses: docker/metadata-action@v5
- with:
- images: ghcr.io/${{ github.repository_owner }}/xray-core
- flavor: latest=auto
- tags: |
- type=semver,pattern={{version}}
- - name: Docker metadata (unsupported architectures)
- id: metausa
- uses: docker/metadata-action@v5
- with:
- images: ghcr.io/${{ github.repository_owner }}/xray-core
- flavor: |
- latest=auto
- suffix=-usa,onlatest=true
- tags: |
- type=semver,pattern={{version}}
- - name: Login to GitHub Container Registry
- uses: docker/login-action@v3
- with:
- registry: ghcr.io
- username: ${{ github.repository_owner }}
- password: ${{ secrets.GITHUB_TOKEN }}
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
- - name: Build and push
- uses: docker/build-push-action@v6
- with:
- context: .
- platforms: |
- linux/amd64
- linux/arm/v7
- linux/arm64/v8
- linux/ppc64le
- linux/s390x
- provenance: false
- file: .github/docker/Dockerfile
- push: true
- tags: ${{ steps.meta.outputs.tags }}
- - name: Build and push (unsupported architectures)
- uses: docker/build-push-action@v6
- with:
- context: .
- platforms: |
- linux/386
- linux/arm/v6
- linux/riscv64
- linux/loong64
- provenance: false
- file: .github/docker/Dockerfile.usa
- push: true
- tags: ${{ steps.metausa.outputs.tags }}
- - name: Merge Multi-Arch Manifests
- run: |
- echo "Starting to merge multi-architecture manifests..."
- # Convert newlines to spaces and split into array
- TAGS=($(echo "${{ steps.meta.outputs.tags }}" | tr '\n' ' '))
- echo "Total tags to process: ${#TAGS[@]}"
- for tag in "${TAGS[@]}"; do
- echo "Merging tag: $tag with unsupported architectures ($tag-usa)"
- docker buildx imagetools create --append --tag "$tag" "$tag-usa"
- if [ $? -ne 0 ]; then
- echo "Error: Failed to merge $tag-usa into $tag"
- exit 1
- fi
- done
- echo "Multi-architecture manifest merge completed successfully."
|