From be5674813d69c2297d4114a3eb184d5b11d4e47a Mon Sep 17 00:00:00 2001 From: Eliav Lavi <113017999+EliavLunar@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:51:45 +0100 Subject: [PATCH] Add CI CD job - Docker build & push --- .github/workflows/docker-build-push.yml | 91 +++++++++++++++++++++++++ .github/workflows/docker_build.yml | 13 ---- .vscode/settings.json | 3 + go.mod | 2 +- go.sum | 12 +++- 5 files changed, 106 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/docker-build-push.yml delete mode 100644 .github/workflows/docker_build.yml create mode 100644 .vscode/settings.json diff --git a/.github/workflows/docker-build-push.yml b/.github/workflows/docker-build-push.yml new file mode 100644 index 0000000..781ed16 --- /dev/null +++ b/.github/workflows/docker-build-push.yml @@ -0,0 +1,91 @@ +name: Allocator Docker Build Push +on: + workflow_dispatch: + push: + branches: + - main + +env: + DOCKER_HUB_SPACE: "lunarapi" + +jobs: + docker: + runs-on: ubuntu-22.04 + strategy: + matrix: + app: + [ + { + name: "webrisk-server", + context: ".", + dockerfile: "./Dockerfile", + }, + ] + + outputs: + version: ${{ steps.meta.outputs.version }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.DOCKER_HUB_SPACE }}/${{ matrix.app.name }} + tags: | + type=sha,enable=true,priority=100,prefix=,suffix=,format=short + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: "{{defaultContext}}:${{ matrix.app.context }}" + platforms: linux/amd64 + file: ${{ matrix.app.dockerfile }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max + + # Temp fix + # https://github.com/docker/build-push-action/issues/252 + # https://github.com/moby/buildkit/issues/1896 + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache + +## TODO: uncomment after service is added manually to gitops + # gitops_cd: + # needs: docker + # runs-on: ubuntu-22.04 + # steps: + # - name: Checkout + # uses: actions/checkout@v3 + + # - name: Trigger Deploy Workflow + # run: | + # gh workflow run gitops-cd.yml -f service=webrisk-server -f environment=staging-lunar-gcp -f version=${{ needs.docker.outputs.version }} + # env: + # GH_TOKEN: ${{ secrets.GIT_TOKEN }} diff --git a/.github/workflows/docker_build.yml b/.github/workflows/docker_build.yml deleted file mode 100644 index abc6899..0000000 --- a/.github/workflows/docker_build.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: Docker build - -on: [push] - -jobs: - docker-build: - # we are using ubuntu as it ships with docker pre-installed - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - # Our Dockerfile runs all of our Go Tests - - name: Build and Test Docker Image - run: docker build --tag wr-container . diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..f65154f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cSpell.words": ["webrisk"] +} diff --git a/go.mod b/go.mod index 2609639..6eafee8 100644 --- a/go.mod +++ b/go.mod @@ -9,4 +9,4 @@ require ( google.golang.org/protobuf v1.29.0 ) -require golang.org/x/text v0.8.0 // indirect \ No newline at end of file +require golang.org/x/text v0.8.0 // indirect diff --git a/go.sum b/go.sum index ec4259f..410a086 100644 --- a/go.sum +++ b/go.sum @@ -1,14 +1,24 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= +golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.29.0 h1:44S3JjaKmLEE4YIkjzexaP+NzZsudE3Zin5Njn/pYX0= -google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= \ No newline at end of file +google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=