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