diff --git a/.github/workflows/build-docker-images.yaml b/.github/workflows/build-docker-images.yaml new file mode 100644 index 00000000..00baaf71 --- /dev/null +++ b/.github/workflows/build-docker-images.yaml @@ -0,0 +1,124 @@ +name: Build Docker Images + +on: + push: + branches: + - "master" + +jobs: + # This job finds the lastest tag and bumps it based on the conventional commit. + + prepare_tag: + outputs: + tag: ${{ steps.semver.outputs.next }} + permissions: + contents: write + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + # Defaults to patch version, will bump minor on "feat" commit + + - name: Get Next Version + id: semver + uses: ietf-tools/semver-action@v1 + with: + token: ${{ secrets.GITHUB_TOKEN }} + branch: master + patchAll: true + + - name: Push tag + id: tag_version + uses: mathieudutour/github-tag-action@v6.2 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + custom_tag: ${{ steps.semver.outputs.next }} + tag_prefix: "" + + # Build the Docker images and push to the GitHub container registry + + build_and_push: + needs: prepare_tag + permissions: + contents: write + packages: write + + runs-on: ubuntu-latest + + strategy: + matrix: + include: + - image: ghcr.io/ssi-dk/sap-web + dockerfile: app/Dockerfile + path: app + - image: ghcr.io/ssi-dk/sap-api + dockerfile: web/Dockerfile + path: web + - image: ghcr.io/ssi-dk/bifrost-queue-broker + dockerfile: bifrost/bifrost_queue_broker/Dockerfile + path: bifrost/bifrost_queue_broker + - image: ghcr.io/ssi-dk/bifrost-listener + dockerfile: bifrost/bifrost_listener/Dockerfile + path: bifrost/bifrost_listener + - image: ghcr.io/ssi-dk/bifrost-listener + dockerfile: bifrost/bifrost_listener/Dockerfile + path: bifrost/bifrost_listener + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # loops over all images in the matrix defined on top + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: ${{ matrix.path }} + platforms: linux/amd64 + tags: ${{ matrix.image }}:${{ needs.prepare_tag.outputs.tag }} + file: ${{ matrix.dockerfile }} + push: true + + # Uses the tag from the first job, and updates the GitOps repo with the new tag. + + commit_to_dev: + needs: + - prepare_tag + - build_and_push + environment: dev + permissions: + contents: write + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + repository: ssi-dk/sofi_core_gitops + ref: main + path: sofi_core_gitops + token: "${{ secrets.ACTION_PAT }}" + + - name: update image + uses: mikefarah/yq@master + with: + cmd: | + yq eval '.spec.template.spec.containers[0].image = "ghcr.io/mytest/httpd:${{ needs.prepare_tag.outputs.tag }}"' -i ./sofi_core_gitops/test.yaml + + - uses: EndBug/add-and-commit@v9 + with: + author_name: GitOps Bot + author_email: mail@example.com + cwd: sofi_core_gitops + message: Update deployments with tag "${{ needs.prepare_tag.outputs.tag }}" diff --git a/README.md b/README.md index 3ae947fa..94ea5345 100755 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ In order to build and run locally, you will need the following utilities: * docker-compose ### Extra Windows pre-requisites + This guide is for running the project using WSL2 in Windows. 1. Follow this guide [https://docs.microsoft.com/en-us/windows/wsl/setup/environment#get-started](https://docs.microsoft.com/en-us/windows/wsl/setup/environment#get-started) @@ -204,3 +205,5 @@ Consult `docs/`. 4. Restart `sofi.service` by executing `systemctl restart sofi.service` and following the prompts. 5. Verify chances by inspecting the logs, `journalctl -u sofi.service -f`, and check the website in the browser. + + diff --git a/app/Dockerfile b/app/Dockerfile index 79bd9e65..1f6e42c3 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -12,6 +12,9 @@ RUN yarn run build FROM build AS testing ENV CI true LABEL test=true + +# label to ghcr package +LABEL org.opencontainers.image.source https://github.com/ssi-dk/sofi_core # RUN yarn run lint RUN yarn run test-ci; exit 0