From 43d92ddb51d7bfad045c5136d9588ced35811282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?dni=20=E2=9A=A1?= Date: Tue, 30 Jan 2024 14:28:34 +0100 Subject: [PATCH] [FEAT] release / docker ci pipeline (#1907) * [FEAT] docker ci pipeline * add release workflow * depend on release * move tag * remove push to main * fixup release workflow * add latest tag on dockerhub * cleanup * Update .github/workflows/docker.yml Co-authored-by: Vlad Stan * use latest versions of actions --------- Co-authored-by: Vlad Stan Co-authored-by: Pavol Rusnak --- .github/workflows/ci.yml | 3 -- .github/workflows/docker.yml | 49 ++++++++++++++++++++----- .github/workflows/on-tag.yml | 68 ----------------------------------- .github/workflows/release.yml | 27 ++++++++++++++ 4 files changed, 68 insertions(+), 79 deletions(-) delete mode 100644 .github/workflows/on-tag.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 54418c51d..fd1d0ed08 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,9 +38,6 @@ jobs: with: make: openapi - # docker: - # uses: ./.github/workflows/docker.yml - regtest: needs: [ lint ] uses: ./.github/workflows/regtest.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index dd29b9e11..c2ecad9ff 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,19 +2,52 @@ name: docker on: workflow_call: + inputs: + tag: + default: latest + type: string jobs: - docker: + push_to_dockerhub: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v4 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 + + - name: Cache Docker layers + uses: actions/cache@v4 + id: cache + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + - name: Build and push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . - push: false - tags: lnbitsdocker/lnbits-legend:latest - cache-from: type=registry,ref=lnbitsdocker/lnbits-legend:latest - cache-to: type=inline + push: true + tags: ${{ secrets.DOCKER_USERNAME }}/lnbits:${{ inputs.tag }} + platforms: [ linux/amd64, linux/arm64 ] + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + + - name: Build and push latest tag + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ secrets.DOCKER_USERNAME }}/lnbits:latest + platforms: [ linux/amd64, linux/arm64 ] + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache diff --git a/.github/workflows/on-tag.yml b/.github/workflows/on-tag.yml deleted file mode 100644 index 5034a3b2d..000000000 --- a/.github/workflows/on-tag.yml +++ /dev/null @@ -1,68 +0,0 @@ -name: Build and push Docker image on tag - -env: - DOCKER_CLI_EXPERIMENTAL: enabled - -on: - push: - tags: - - "v[0-9]+.[0-9]+.[0-9]+" - - "[0-9]+.[0-9]+.[0-9]+" - -jobs: - build: - runs-on: ubuntu-20.04 - name: Build and push lnbits image - steps: - - name: Login to Docker Hub - run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin - - - name: Checkout project - uses: actions/checkout@v3 - - - name: Import environment variables - id: import-env - shell: bash - run: echo "TAG=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV - - - name: Show set environment variables - run: | - printf " TAG: %s\n" "$TAG" - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - id: qemu - - - name: Setup Docker buildx action - uses: docker/setup-buildx-action@v1 - id: buildx - - - name: Show available Docker buildx platforms - run: echo ${{ steps.buildx.outputs.platforms }} - - - name: Cache Docker layers - uses: actions/cache@v2 - id: cache - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - - name: Run Docker buildx against tag - run: | - docker buildx build \ - --cache-from "type=local,src=/tmp/.buildx-cache" \ - --cache-to "type=local,dest=/tmp/.buildx-cache" \ - --platform linux/amd64,linux/arm64 \ - --tag ${{ secrets.DOCKER_USERNAME }}/lnbits-legend:${TAG} \ - --output "type=registry" ./ - - - name: Run Docker buildx against latest - run: | - docker buildx build \ - --cache-from "type=local,src=/tmp/.buildx-cache" \ - --cache-to "type=local,dest=/tmp/.buildx-cache" \ - --platform linux/amd64,linux/arm64 \ - --tag ${{ secrets.DOCKER_USERNAME }}/lnbits-legend:latest \ - --output "type=registry" ./ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..bdd774f6e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,27 @@ +name: release + +on: + push: + tags: + - "v[0-9]+.[0-9]+.[0-9]+" + - "[0-9]+.[0-9]+.[0-9]+" + +permissions: + contents: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Create github release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + tag: ${{ github.ref_name }} + run: | + gh release create "$tag" --generate-notes + + docker: + needs: [ release ] + uses: ./.github/workflows/docker.yml + with: + tag: ${{ github.ref_name }}