From 39bd8537ffed0c2fe394528bf858162c8b682af2 Mon Sep 17 00:00:00 2001 From: Dave Conroy Date: Sun, 17 Oct 2021 09:41:18 -0700 Subject: [PATCH] Add manual CI pipeline --- .github/workflows/manual.yml | 110 +++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 .github/workflows/manual.yml diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml new file mode 100644 index 0000000..c69aca5 --- /dev/null +++ b/.github/workflows/manual.yml @@ -0,0 +1,110 @@ +# Manual Workflow (Application) + +name: manual + +on: + workflow_dispatch: + inputs: + Manual Build: + description: 'Manual Build' + required: false +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Prepare + id: prep + run: | + DOCKER_IMAGE=${GITHUB_REPOSITORY/docker-/} + set -x + if [[ $GITHUB_REF == refs/heads/* ]]; then + if [[ $GITHUB_REF == refs/heads/*/* ]] ; then + BRANCH="${DOCKER_IMAGE}:$(echo $GITHUB_REF | sed "s|refs/heads/||g" | sed "s|/|-|g")" + else + BRANCH=${GITHUB_REF#refs/heads/} + fi + + case ${BRANCH} in + "main" | "master" ) + BRANCHTAG="${DOCKER_IMAGE}:latest" + ;; + "develop" ) + BRANCHTAG="${DOCKER_IMAGE}:develop" + ;; + * ) + if [ -n "${{ secrets.LATEST }}" ] ; then + if [ "${BRANCHTAG}" = "${{ secrets.LATEST }}" ]; then + BRANCHTAG="${DOCKER_IMAGE}:${BRANCH},${DOCKER_IMAGE}:${BRANCH}-latest,${DOCKER_IMAGE}:latest" + else + BRANCHTAG="${DOCKER_IMAGE}:${BRANCH},${DOCKER_IMAGE}:${BRANCH}-latest" + fi + else + BRANCHTAG="${DOCKER_IMAGE}:${BRANCH},${DOCKER_IMAGE}:${BRANCH}-latest" + fi + ;; + esac + fi + + + if [[ $GITHUB_REF == refs/tags/* ]]; then + GITTAG="${DOCKER_IMAGE}:$(echo $GITHUB_REF | sed 's|refs/tags/||g')" + fi + + if [ -n "${BRANCHTAG}" ] && [ -n "${GITTAG}" ]; then + TAGS=${BRANCHTAG},${GITTAG} + else + TAGS="${BRANCHTAG}${GITTAG}" + fi + + echo ::set-output name=tags::${TAGS} + echo ::set-output name=docker_image::${DOCKER_IMAGE} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + with: + platforms: all + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + if: github.event_name != 'pull_request' + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Label + id: Label + run: | + if [ -f "Dockerfile" ] ; then + sed -i "/FROM .*/a LABEL tiredofit.image.git_repository=\"https://github.com/${GITHUB_REPOSITORY}\"" Dockerfile + sed -i "/FROM .*/a LABEL tiredofit.image.git_commit=\"${GITHUB_SHA}\"" Dockerfile + sed -i "/FROM .*/a LABEL tiredofit.image.git_committed_by=\"${GITHUB_ACTOR}\"" Dockerfile + sed -i "/FROM .*/a LABEL tiredofit.image_build_date=\"$(date +'%Y-%m-%d %H:%M:%S')\"" Dockerfile + if [ -f "CHANGELOG.md" ] ; then + sed -i "/FROM .*/a LABEL tiredofit.image.git_changelog_version=\"$(head -n1 ./CHANGELOG.md | awk '{print $2}')\"" Dockerfile + fi + + if [[ $GITHUB_REF == refs/tags/* ]]; then + sed -i "/FROM .*/a LABEL tiredofit.image.git_tag=\"${GITHUB_REF#refs/tags/v}\"" Dockerfile + fi + + if [[ $GITHUB_REF == refs/heads/* ]]; then + sed -i "/FROM .*/a LABEL tiredofit.image.git_branch=\"${GITHUB_REF#refs/heads/}\"" Dockerfile + fi + fi + + - name: Build + uses: docker/build-push-action@v2 + with: + builder: ${{ steps.buildx.outputs.name }} + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 + push: true + tags: ${{ steps.prep.outputs.tags }}