diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..769f718d --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,45 @@ +name: build + +on: [ workflow_dispatch ] + +jobs: + everything: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Cache Docker layers + uses: actions/cache@v4 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-updatetar + restore-keys: | + ${{ runner.os }}-buildx-updatetar + - name: Build Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: build/ci.Dockerfile + load: true + tags: ci_image:latest + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache-new + + - name: Extract artifact from Docker image + run: | + docker create --name extract_artifact ci_image:latest + docker cp extract_artifact:/lamassu-server.tar.gz ./lamassu-server.tar.gz + docker rm extract_artifact + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: lamassu-server.tar.gz + path: lamassu-server.tar.gz + + - name: Move cache + run: | + rm -rf /tmp/.buildx-cache + mv /tmp/.buildx-cache-new /tmp/.buildx-cache \ No newline at end of file diff --git a/build/ci.Dockerfile b/build/ci.Dockerfile new file mode 100644 index 00000000..00ad853f --- /dev/null +++ b/build/ci.Dockerfile @@ -0,0 +1,33 @@ +FROM ubuntu:20.04 as base + +ARG VERSION +ARG DEBIAN_FRONTEND=noninteractive +ENV TZ=Europe/Lisbon + +RUN apt-get update + +RUN apt-get install -y -q curl \ + sudo \ + git \ + python2-minimal \ + build-essential \ + libpq-dev \ + net-tools \ + tar + +RUN curl -sL https://deb.nodesource.com/setup_22.x | sudo -E bash - +RUN apt-get install nodejs -y -q + +WORKDIR lamassu-server + +COPY ["package.json", "package-lock.json", "./"] +RUN npm version --allow-same-version --git-tag-version false --commit-hooks false 1.0.0 +RUN npm install --production + +COPY . ./ + +RUN cd new-lamassu-admin && npm install && npm run build +RUN mv new-lamassu-admin/build public/ +RUN rm -rf new-lamassu-admin/node_modules + +RUN cd .. && tar -zcvf lamassu-server.tar.gz ./lamassu-server \ No newline at end of file