From f44babd130fa3be18b1787cac61a5050d06dfddf Mon Sep 17 00:00:00 2001 From: FloatingGhost Date: Thu, 20 Jul 2023 17:27:58 +0100 Subject: [PATCH] restructure CI --- .woodpecker/arm.yml | 77 ----------- .woodpecker/{amd64.yml => build-amd64.yml} | 42 ------ .woodpecker/build-arm64.yml | 146 +++++++++++++++++++++ .woodpecker/docs.yml | 69 ++++++++++ .woodpecker/test.yml | 96 ++++++++++++++ 5 files changed, 311 insertions(+), 119 deletions(-) delete mode 100644 .woodpecker/arm.yml rename .woodpecker/{amd64.yml => build-amd64.yml} (82%) create mode 100644 .woodpecker/build-arm64.yml create mode 100644 .woodpecker/docs.yml create mode 100644 .woodpecker/test.yml diff --git a/.woodpecker/arm.yml b/.woodpecker/arm.yml deleted file mode 100644 index 82934038a..000000000 --- a/.woodpecker/arm.yml +++ /dev/null @@ -1,77 +0,0 @@ -platform: linux/arm64 - -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 - - refs/tags/v* - - refs/tags/stable-* - - &on-stable - when: - event: - - push - - tag - branch: - - stable - - refs/tags/stable-* - - &on-point-release - when: - event: - - push - branch: - - develop - - 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 - ubuntu22: - image: hexpm/elixir:1.14.3-erlang-25.2.2-ubuntu-jammy-20221130 - when: - event: - - push - branch: - - arm - 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-ubuntu-jammy.zip -r release - - release-ubuntu22: - image: akkoma/releaser:arm64 - when: - event: - - push - branch: - - arm - secrets: *scw-secrets - commands: - - export SOURCE=akkoma-ubuntu-jammy.zip - - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-arm64-ubuntu-jammy.zip - - /bin/sh /entrypoint.sh diff --git a/.woodpecker/amd64.yml b/.woodpecker/build-amd64.yml similarity index 82% rename from .woodpecker/amd64.yml rename to .woodpecker/build-amd64.yml index 0c7645a63..53f7e5939 100644 --- a/.woodpecker/amd64.yml +++ b/.woodpecker/build-amd64.yml @@ -53,48 +53,6 @@ services: POSTGRES_PASSWORD: postgres pipeline: - lint: - <<: *on-pr-open - image: akkoma/ci-base:1.14 - commands: - - mix local.hex --force - - mix local.rebar --force - - mix format --check-formatted - - build: - image: akkoma/ci-base:1.14 - <<: *on-pr-open - environment: - MIX_ENV: test - POSTGRES_DB: pleroma_test - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - DB_HOST: postgres - commands: - - mix local.hex --force - - mix local.rebar --force - - mix deps.get - - mix compile - - test: - image: akkoma/ci-base:1.14 - <<: *on-pr-open - environment: - MIX_ENV: test - POSTGRES_DB: pleroma_test - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - DB_HOST: postgres - commands: - - mix local.hex --force - - mix local.rebar --force - - mix deps.get - - mix compile - - mix ecto.drop -f -q - - mix ecto.create - - mix ecto.migrate - - mix test --preload-modules --exclude erratic --exclude federated --max-cases 4 - # Canonical amd64 ubuntu22: image: hexpm/elixir:1.14.3-erlang-25.2.2-ubuntu-jammy-20221130 diff --git a/.woodpecker/build-arm64.yml b/.woodpecker/build-arm64.yml new file mode 100644 index 000000000..045e2df7d --- /dev/null +++ b/.woodpecker/build-arm64.yml @@ -0,0 +1,146 @@ +platform: linux/arm64 + +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 + - refs/tags/v* + - refs/tags/stable-* + - &on-stable + when: + event: + - push + - tag + branch: + - stable + - refs/tags/stable-* + - &on-point-release + when: + event: + - push + branch: + - develop + - 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 arm64 + ubuntu22: + image: hexpm/elixir:1.14.3-erlang-25.2.2-ubuntu-jammy-20221130 + <<: *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-ubuntu-jammy.zip -r release + + release-ubuntu22: + image: akkoma/releaser:arm64 + <<: *on-release + secrets: *scw-secrets + commands: + - export SOURCE=akkoma-ubuntu-jammy.zip + - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-ubuntu-jammy.zip + - /bin/sh /entrypoint.sh + - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-arm64-ubuntu-jammy.zip + - /bin/sh /entrypoint.sh + + debian-bullseye: + image: hexpm/elixir:1.14.3-erlang-25.2.2-debian-bullseye-20230109 + <<: *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 gcc make g++ wget + - *clean + - echo "import Config" > config/prod.secret.exs + - *setup-hex + - *tag-build + - *mix-clean + - mix deps.get --only prod + - mix release --path release + - zip akkoma-arm64.zip -r release + + release-debian: + image: akkoma/releaser:arm64 + <<: *on-release + secrets: *scw-secrets + commands: + - export SOURCE=akkoma-arm64.zip + - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-arm64.zip + - /bin/sh /entrypoint.sh + - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-debian-stable.zip + - /bin/sh /entrypoint.sh + + # Canonical arm64-musl + musl: + image: hexpm/elixir:1.14.3-erlang-25.2.2-alpine-3.15.6 + <<: *on-release + 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-arm64-musl.zip -r release + + release-musl: + image: akkoma/releaser:arm64 + <<: *on-release + secrets: *scw-secrets + commands: + - export SOURCE=akkoma-arm64-musl.zip + - export DEST=scaleway:akkoma-updates/$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"}/akkoma-arm64-musl.zip + - /bin/sh /entrypoint.sh + + docs: + <<: *on-point-release + secrets: + - SCW_ACCESS_KEY + - SCW_SECRET_KEY + - SCW_DEFAULT_ORGANIZATION_ID + environment: + CI: "true" + image: python:3.10-slim + commands: + - apt-get update && apt-get install -y rclone wget git zip + - wget https://github.com/scaleway/scaleway-cli/releases/download/v2.5.1/scaleway-cli_2.5.1_linux_arm64 + - mv scaleway-cli_2.5.1_linux_arm64 scaleway-cli + - chmod +x scaleway-cli + - ./scaleway-cli object config install type=rclone + - cd docs + - pip install -r requirements.txt + - mkdocs build + - zip -r docs.zip site/* + - cd site + - rclone copy . scaleway:akkoma-docs/$CI_COMMIT_BRANCH/ diff --git a/.woodpecker/docs.yml b/.woodpecker/docs.yml new file mode 100644 index 000000000..cc4017659 --- /dev/null +++ b/.woodpecker/docs.yml @@ -0,0 +1,69 @@ +platform: linux/amd64 + +depends_on: + - test + - build-amd64 + +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 + - refs/tags/v* + - refs/tags/stable-* + - &on-stable + when: + event: + - push + - tag + branch: + - stable + - refs/tags/stable-* + - &on-point-release + when: + event: + - push + branch: + - develop + - 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: + docs: + <<: *on-point-release + secrets: + - SCW_ACCESS_KEY + - SCW_SECRET_KEY + - SCW_DEFAULT_ORGANIZATION_ID + environment: + CI: "true" + image: python:3.10-slim + commands: + - apt-get update && apt-get install -y rclone wget git zip + - wget https://github.com/scaleway/scaleway-cli/releases/download/v2.5.1/scaleway-cli_2.5.1_linux_amd64 + - mv scaleway-cli_2.5.1_linux_amd64 scaleway-cli + - chmod +x scaleway-cli + - ./scaleway-cli object config install type=rclone + - cd docs + - pip install -r requirements.txt + - mkdocs build + - zip -r docs.zip site/* + - cd site + - rclone copy . scaleway:akkoma-docs/$CI_COMMIT_BRANCH/ diff --git a/.woodpecker/test.yml b/.woodpecker/test.yml new file mode 100644 index 000000000..958c642d5 --- /dev/null +++ b/.woodpecker/test.yml @@ -0,0 +1,96 @@ +platform: linux/amd64 + +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 + - refs/tags/v* + - refs/tags/stable-* + - &on-stable + when: + event: + - push + - tag + branch: + - stable + - refs/tags/stable-* + - &on-point-release + when: + event: + - push + branch: + - develop + - 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" + +services: + postgres: + image: postgres:15 + when: + event: + - pull_request + environment: + POSTGRES_DB: pleroma_test + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + +pipeline: + lint: + <<: *on-pr-open + image: akkoma/ci-base:1.14 + commands: + - mix local.hex --force + - mix local.rebar --force + - mix format --check-formatted + + build: + image: akkoma/ci-base:1.14 + <<: *on-pr-open + environment: + MIX_ENV: test + POSTGRES_DB: pleroma_test + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + DB_HOST: postgres + commands: + - mix local.hex --force + - mix local.rebar --force + - mix deps.get + - mix compile + + test: + image: akkoma/ci-base:1.14 + <<: *on-pr-open + environment: + MIX_ENV: test + POSTGRES_DB: pleroma_test + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + DB_HOST: postgres + commands: + - mix local.hex --force + - mix local.rebar --force + - mix deps.get + - mix compile + - mix ecto.drop -f -q + - mix ecto.create + - mix ecto.migrate + - mix test --preload-modules --exclude erratic --exclude federated --max-cases 4