Spaces:
Paused
Paused
name: Build and publish Docker image | |
on: | |
workflow_dispatch: | |
inputs: | |
GOST_VERSION: | |
description: 'Version of gost. If empty, the latest version will be used.' | |
required: false | |
type: string | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Log into registry ${{ vars.REGISTRY }} | |
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 | |
with: | |
registry: ${{ vars.REGISTRY }} | |
username: ${{ vars.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Get gost version | |
id: get-gost-version | |
run: | | |
if [ -z "${{ github.event.inputs.GOST_VERSION }}" ]; then | |
echo "GOST_VERSION=$(curl -H 'authorization: Bearer ${{ secrets.GITHUB_TOKEN }}' -s https://api.github.com/repos/ginuerzh/gost/releases/latest | jq -r '.tag_name' | cut -c 2-)" >> "$GITHUB_OUTPUT" | |
else | |
echo "GOST_VERSION=${{ github.event.inputs.GOST_VERSION }}" >> "$GITHUB_OUTPUT" | |
fi | |
# gost version must be <number>.<number>.<number> | |
- name: Verify gost version | |
id: verify-gost-version | |
run: | | |
if [[ ! "${{ steps.get-gost-version.outputs.GOST_VERSION }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then | |
echo "Invalid gost version: ${{ steps.get-gost-version.outputs.GOST_VERSION }}" | |
exit 1 | |
fi | |
- name: Get WARP client version | |
id: get-warp-client-version | |
run: | | |
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg | |
echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list | |
sudo apt-get update | |
echo "WARP_VERSION=$(apt-cache show cloudflare-warp | grep '^Version:' | awk '{print $2}' | sed 's/-[0-9]*$//')" >> "$GITHUB_OUTPUT" | |
- name: Build and push | |
uses: docker/build-push-action@v5 | |
with: | |
build-args: | | |
GOST_VERSION=${{ steps.get-gost-version.outputs.GOST_VERSION }} | |
WARP_VERSION=${{ steps.get-warp-client-version.outputs.WARP_VERSION }} | |
COMMIT_SHA=${{ github.sha }} | |
context: . | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
tags: | | |
${{ vars.REGISTRY }}/${{ vars.IMAGE_NAME }}:latest | |
${{ vars.REGISTRY }}/${{ vars.IMAGE_NAME }}:${{ steps.get-warp-client-version.outputs.WARP_VERSION }}-${{ steps.get-gost-version.outputs.GOST_VERSION }} | |
${{ vars.REGISTRY }}/${{ vars.IMAGE_NAME }}:${{ steps.get-warp-client-version.outputs.WARP_VERSION }}-${{ steps.get-gost-version.outputs.GOST_VERSION }}-${{ github.sha }} | |