diff --git a/.github/bin/docker-release.sh b/.github/bin/docker-release.sh new file mode 100755 index 0000000..726698f --- /dev/null +++ b/.github/bin/docker-release.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin + +export DOCKER_ORG="democraticcsi" +export DOCKER_PROJECT="democratic-csi" +export DOCKER_REPO="${DOCKER_ORG}/${DOCKER_PROJECT}" + +if [[ $GITHUB_REF == refs/tags/* ]]; then + export GIT_TAG=${GITHUB_REF#refs/tags/} +else + export GIT_BRANCH=${GITHUB_REF#refs/heads/} +fi + +if [[ -n "${GIT_TAG}" ]]; then + docker buildx build --progress plain --pull --push --platform "${DOCKER_BUILD_PLATFORM}" -t ${DOCKER_REPO}:${GIT_TAG} . +elif [[ -n "${GIT_BRANCH}" ]]; then + if [[ "${GIT_BRANCH}" == "master" ]]; then + docker buildx build --progress plain --pull --push --platform "${DOCKER_BUILD_PLATFORM}" -t ${DOCKER_REPO}:latest . + else + docker buildx build --progress plain --pull --push --platform "${DOCKER_BUILD_PLATFORM}" -t ${DOCKER_REPO}:${GIT_BRANCH} . + fi +else + : +fi diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..2ee797f --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,34 @@ +name: CI + +on: + push: + tags: + - "v*" + branches: + - master + - next + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: docker build + run: | + export ARCH=$([ $(uname -m) = "x86_64" ] && echo "amd64" || echo "arm64") + mkdir -p ~/.docker/cli-plugins/ + wget -qO ~/.docker/cli-plugins/docker-buildx https://github.com/docker/buildx/releases/download/v0.3.1/buildx-v0.3.1.linux-${ARCH} + chmod a+x ~/.docker/cli-plugins/docker-buildx + docker info + docker buildx version + docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + docker buildx create --name xbuilder --use + docker buildx inspect --bootstrap + .github/bin/docker-release.sh + + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + DOCKER_CLI_EXPERIMENTAL: enabled + DOCKER_BUILD_PLATFORM: linux/amd64,linux/arm/v7,linux/arm64