mirror of https://github.com/ginuerzh/gost
7 changed files with 138 additions and 105 deletions
@ -1,74 +0,0 @@ |
|||||
# ref: https://github.com/crazy-max/diun/blob/master/.github/workflows/build.yml |
|
||||
|
|
||||
name: Docker |
|
||||
on: [push] |
|
||||
jobs: |
|
||||
build: |
|
||||
runs-on: ubuntu-latest |
|
||||
steps: |
|
||||
- name: Prepare |
|
||||
id: prepare |
|
||||
run: | |
|
||||
if [[ $GITHUB_REF == refs/tags/* ]]; then |
|
||||
echo ::set-output name=version::${GITHUB_REF#refs/tags/v} |
|
||||
elif [[ $GITHUB_REF == refs/heads/master ]]; then |
|
||||
echo ::set-output name=version::latest |
|
||||
elif [[ $GITHUB_REF == refs/heads/* ]]; then |
|
||||
echo ::set-output name=version::${GITHUB_REF#refs/heads/} |
|
||||
else |
|
||||
echo ::set-output name=version::snapshot |
|
||||
fi |
|
||||
|
|
||||
echo ::set-output name=docker_platforms::linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/386,linux/s390x,linux/riscv64 |
|
||||
echo ::set-output name=docker_image::${{ secrets.DOCKER_USERNAME }}/${{ github.event.repository.name }} |
|
||||
|
|
||||
# https://github.com/crazy-max/ghaction-docker-buildx |
|
||||
- name: Set up Docker Buildx |
|
||||
id: buildx |
|
||||
uses: crazy-max/ghaction-docker-buildx@v1 |
|
||||
with: |
|
||||
version: latest |
|
||||
|
|
||||
- name: Environment |
|
||||
run: | |
|
||||
echo home=$HOME |
|
||||
echo git_ref=$GITHUB_REF |
|
||||
echo git_sha=$GITHUB_SHA |
|
||||
echo version=${{ steps.prepare.outputs.version }} |
|
||||
echo image=${{ steps.prepare.outputs.docker_image }} |
|
||||
echo platforms=${{ steps.prepare.outputs.docker_platforms }} |
|
||||
echo avail_platforms=${{ steps.buildx.outputs.platforms }} |
|
||||
|
|
||||
# https://github.com/actions/checkout |
|
||||
- name: Checkout |
|
||||
uses: actions/checkout@v2 |
|
||||
|
|
||||
- name: Docker Buildx (no push) |
|
||||
run: | |
|
||||
docker buildx bake \ |
|
||||
--set ${{ github.event.repository.name }}.platform=${{ steps.prepare.outputs.docker_platforms }} \ |
|
||||
--set ${{ github.event.repository.name }}.output=type=image,push=false \ |
|
||||
--set ${{ github.event.repository.name }}.tags="${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ |
|
||||
--file docker-compose.yaml |
|
||||
|
|
||||
- name: Docker Login |
|
||||
if: success() |
|
||||
env: |
|
||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} |
|
||||
run: | |
|
||||
echo "${DOCKER_PASSWORD}" | docker login --username "${{ secrets.DOCKER_USERNAME }}" --password-stdin |
|
||||
|
|
||||
- name: Docker Buildx (push) |
|
||||
if: success() |
|
||||
run: | |
|
||||
docker buildx bake \ |
|
||||
--set ${{ github.event.repository.name }}.platform=${{ steps.prepare.outputs.docker_platforms }} \ |
|
||||
--set ${{ github.event.repository.name }}.output=type=image,push=true \ |
|
||||
--set ${{ github.event.repository.name }}.tags="${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ |
|
||||
--file docker-compose.yaml |
|
||||
|
|
||||
- name: Clear |
|
||||
if: always() |
|
||||
run: | |
|
||||
rm -f ${HOME}/.docker/config.json |
|
||||
|
|
||||
@ -0,0 +1,72 @@ |
|||||
|
# ref: https://docs.docker.com/ci-cd/github-actions/ |
||||
|
# https://blog.oddbit.com/post/2020-09-25-building-multi-architecture-im/ |
||||
|
|
||||
|
name: docker |
||||
|
|
||||
|
on: |
||||
|
push: |
||||
|
branches: |
||||
|
- master |
||||
|
tags: |
||||
|
- 'v*' |
||||
|
|
||||
|
jobs: |
||||
|
build: |
||||
|
runs-on: ubuntu-latest |
||||
|
steps: |
||||
|
- name: Prepare |
||||
|
id: prepare |
||||
|
run: | |
||||
|
DOCKER_IMAGE=${{ secrets.DOCKER_IMAGE }} |
||||
|
VERSION=latest |
||||
|
|
||||
|
# If this is git tag, use the tag name as a docker tag |
||||
|
if [[ $GITHUB_REF == refs/tags/* ]]; then |
||||
|
VERSION=${GITHUB_REF#refs/tags/v} |
||||
|
fi |
||||
|
TAGS="${DOCKER_IMAGE}:${VERSION}" |
||||
|
|
||||
|
# If the VERSION looks like a version number, assume that |
||||
|
# this is the most recent version of the image and also |
||||
|
# tag it 'latest'. |
||||
|
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then |
||||
|
MAJOR_VERSION=`echo $VERSION | awk '{split($0,a,"."); print a[1]}'` |
||||
|
MINOR_VERSION=`echo $VERSION | awk '{split($0,a,"."); print a[2]}'` |
||||
|
TAGS="$TAGS,${DOCKER_IMAGE}:${MAJOR_VERSION},${DOCKER_IMAGE}:${MAJOR_VERSION}.${MINOR_VERSION},${DOCKER_IMAGE}:latest" |
||||
|
fi |
||||
|
|
||||
|
# Set output parameters. |
||||
|
echo "tags=${TAGS}" >> $GITHUB_OUTPUT |
||||
|
echo "docker_image=${DOCKER_IMAGE}" >> $GITHUB_OUTPUT |
||||
|
echo "docker_platforms=linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,linux/s390x,linux/riscv64" >> $GITHUB_OUTPUT |
||||
|
|
||||
|
- name: Set up QEMU |
||||
|
uses: docker/setup-qemu-action@v3 |
||||
|
|
||||
|
- name: Set up Docker Buildx |
||||
|
id: buildx |
||||
|
uses: docker/setup-buildx-action@v3 |
||||
|
|
||||
|
- name: Environment |
||||
|
run: | |
||||
|
echo home=$HOME |
||||
|
echo git_ref=$GITHUB_REF |
||||
|
echo git_sha=$GITHUB_SHA |
||||
|
echo image=${{ steps.prepare.outputs.docker_image }} |
||||
|
echo tags=${{ steps.prepare.outputs.tags }} |
||||
|
echo platforms=${{ steps.prepare.outputs.docker_platforms }} |
||||
|
echo avail_platforms=${{ steps.buildx.outputs.platforms }} |
||||
|
|
||||
|
- name: Login to DockerHub |
||||
|
if: github.event_name != 'pull_request' |
||||
|
uses: docker/login-action@v3 |
||||
|
with: |
||||
|
username: ${{ secrets.DOCKER_USERNAME }} |
||||
|
password: ${{ secrets.DOCKER_PASSWORD }} |
||||
|
|
||||
|
- name: Buildx and push |
||||
|
uses: docker/build-push-action@v6 |
||||
|
with: |
||||
|
platforms: ${{ steps.prepare.outputs.docker_platforms }} |
||||
|
push: true |
||||
|
tags: ${{ steps.prepare.outputs.tags }} |
||||
@ -1,4 +0,0 @@ |
|||||
version: "3.4" |
|
||||
services: |
|
||||
gost: |
|
||||
build: . |
|
||||
Loading…
Reference in new issue