platform: linux/amd64

depends_on:
  - test

variables:
  - &scw-secrets
    - SCW_ACCESS_KEY
    - SCW_SECRET_KEY
    - SCW_DEFAULT_ORGANIZATION_ID
  - &setup-hex "mix local.hex --force && mix local.rebar --force"
  - &on-release
    when:
      event:
        - push
        - tag
      branch:
        - develop
        - stable
  - &on-stable
    when:
      event:
        - push
        - tag
      branch:
        - stable
  - &on-pr-open
    when:
      event:
        - pull_request

  - &tag-build "export BUILD_TAG=$${CI_COMMIT_TAG:-\"$CI_COMMIT_BRANCH\"} && export PLEROMA_BUILD_BRANCH=$BUILD_TAG"

  - &clean "(rm -rf release || true) && (rm -rf _build || true) && (rm -rf /root/.mix)"
  - &mix-clean "mix deps.clean --all && mix clean"

pipeline:
  # Canonical amd64
  debian-bookworm:
    image: hexpm/elixir:1.15.4-erlang-25.3.2.5-debian-bookworm-20230612
    <<: *on-release
    environment:
      MIX_ENV: prod
      DEBIAN_FRONTEND: noninteractive
    commands:
      - apt-get update && apt-get install -y cmake libmagic-dev rclone zip imagemagick libmagic-dev git build-essential g++ wget
      - *clean
      - echo "import Config" > config/prod.secret.exs
      - *setup-hex
      - *tag-build
      - mix deps.get --only prod
      - mix release --path release
      - zip akkoma-amd64.zip -r release

  release-debian-bookworm:
    image: akkoma/releaser
    <<: *on-release
    secrets: *scw-secrets
    commands:
      - export SOURCE=akkoma-amd64.zip
      # AMD64
      - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-amd64.zip
      - /bin/sh /entrypoint.sh
      # Ubuntu jammy (currently compatible)
      - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-amd64-ubuntu-jammy.zip
      - /bin/sh /entrypoint.sh

  # Canonical amd64-musl
  musl:
    image: hexpm/elixir:1.14.3-erlang-25.2.2-alpine-3.18.0
    <<: *on-stable
    environment:
      MIX_ENV: prod
    commands:
      - apk add git gcc g++ musl-dev make cmake file-dev rclone wget zip imagemagick
      - *clean
      - *setup-hex
      - *mix-clean
      - *tag-build
      - mix deps.get --only prod
      - mix release --path release
      - zip akkoma-amd64-musl.zip -r release

  release-musl:
    image: akkoma/releaser
    <<: *on-stable
    secrets: *scw-secrets
    commands:
      - export SOURCE=akkoma-amd64-musl.zip
      - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-amd64-musl.zip
      - /bin/sh /entrypoint.sh
