diff --git a/.forgejo/workflows/build-image.yaml b/.forgejo/workflows/build-image.yaml new file mode 100644 index 0000000..bf3a301 --- /dev/null +++ b/.forgejo/workflows/build-image.yaml @@ -0,0 +1,92 @@ +name: Publish image +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + bump-crate: + runs-on: rust + steps: + - run: cargo install cargo-bump + - name: Bump version and publish + uses: https://github.com/cocogitto/cocogitto-action@v3.10 + env: + NPM_REGISTRY_TOKEN: ${{ secrets.NPM_TOKEN_FORGEJO }} + with: + release: true + check-latest-tag-only: true + git-user: 'Cog Bot' + git-user-email: 'cog@alecodes.page' + + + create-docker-images: + runs-on: host + needs: + - bump-crate + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + registry: git.alecodes.page + username: ${{ vars.CONTAINER_REGISTRY_USER }} + password: ${{ secrets.CONTAINER_REGISTRY_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64 + push: true + outputs: | + type=local,dest=./build-out + type=docker + tags: | + git.alecodes.page/alecodes/compendium:latest + git.alecodes.page/alecodes/compendium:${{ github.sha }} + + # - uses: actions/upload-artifact@v3 + # with: + # name: my-artifact + # path: ./build-out/app + # + # deploy: + # runs-on: ubuntu-latest + # needs: + # - create-docker-images + # steps: + # - uses: actions/download-artifact@v3 + # - name: Display structure of downloaded files + # run: ls -R + # - name: Publish release + # uses: https://code.forgejo.org/actions/forgejo-release@v2.5.0 + # with: + # url: "https://git.alecodes.page" + # repo: "alecodes/compendium" + # direction: upload + # # tag: "${{ github.ref_name }}" + # sha: "${{ github.sha }}" + # release-dir: . + # # token: ${{ secrets.TOKEN }} + # override: ${{ vars.OVERRIDE || "false" }} + # verbose: ${{ vars.VERBOSE || "false" }} + + # deploy: + # runs-on: ubuntu-latest + # needs: + # - create-docker-images + # steps: + # - name: Checkout code + # uses: actions/checkout@v4 + # - name: 'Docker Stack Deploy' + # uses: https://github.com/cssnr/stack-deploy-action@v1 + # with: + # host: ${{ vars.DOCKER_SWARM_HOST }} + # port: ${{ vars.DOCKER_SWARM_PORT }} + # user: ${{ secrets.DOCKER_SWARM_USER }} + # ssh_key: '${{ secrets.DOCKER_SWARM_SSH_KEY }}' + # file: 'docker-stack.yaml' + # name: 'personal_page' diff --git a/.justfile b/.justfile index 241c578..458adba 100644 --- a/.justfile +++ b/.justfile @@ -3,10 +3,7 @@ mod repo ".devfiles/justfile" set dotenv-load := true -bin_name := "compendium" release_mode := "dev" -container_registry := "git.alecodes.page/alecodes" -container_image_name := container_registry / bin_name [private] docker-compose +ARGS: @@ -14,6 +11,9 @@ docker-compose +ARGS: start-dev-services: (docker-compose "up --remove-orphans") +dev: + watchexec --no-vcs-ignore --clear --restart --watch=dist --watch=src cargo run {{ if release_mode == "prod" { "--release" } else { "" } }} + kitty-dev: kitten @ goto-layout tall kitten @ launch --cwd=current --dont-take-focus just build-frontend-watch @@ -30,22 +30,3 @@ build-frontend-watch: build-frontend: bun ./.devfiles/scripts/build-frontend.ts - -build: - podman build --tag {{ container_image_name }}:latest --cache-to {{ container_image_name }}-cache --cache-from {{ container_image_name }}-cache . - -dev: - watchexec --no-vcs-ignore --clear --restart --watch=dist --watch=src cargo run {{ if release_mode == "prod" { "--release" } else { "" } }} - -test: - cargo test - -publish: (build) - podman push {{ container_image_name }}:latest - podman push {{ container_image_name }}:latest {{ container_image_name }}:$(git rev-parse --short HEAD) - -deploy: - -clean: - podman system prune --build - cargo clean diff --git a/Dockerfile b/Dockerfile index fbbfed8..2bb1d67 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # ── Javascript ────────────────────────────────────────────────────────── -FROM docker.io/oven/bun:1 AS bun +FROM oven/bun:1 AS bun WORKDIR /usr/src/app # install dependencies into temp directory