From d9dbfa2aeffb2b77905d7444b26ffb871678ba7a Mon Sep 17 00:00:00 2001 From: FloatingGhost Date: Fri, 15 Jul 2022 13:48:58 +0100 Subject: [PATCH 1/3] remove gitlab CI, force build isolation --- .gitlab-ci.yml | 464 --------------------------------------- .woodpecker/.release.yml | 2 - 2 files changed, 466 deletions(-) delete mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index bebd97efb..000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,464 +0,0 @@ -image: git.pleroma.social:5050/pleroma/pleroma/ci-base - -variables: &global_variables - POSTGRES_DB: pleroma_test - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - DB_HOST: postgres - MIX_ENV: test - -cache: &global_cache_policy - key: - files: - - mix.lock - paths: - - deps - - _build - -stages: - - build - - test - - benchmark - - deploy - - release - - docker - -before_script: - - echo $MIX_ENV - - rm -rf _build/*/lib/pleroma - - mix deps.get - -after_script: - - rm -rf _build/*/lib/pleroma - -build: - stage: build - only: - changes: - - "**/*.ex" - - "**/*.exs" - - "mix.lock" - script: - - mix compile --force - -spec-build: - stage: test - only: - changes: - - "lib/pleroma/web/api_spec/**/*.ex" - - "lib/pleroma/web/api_spec.ex" - artifacts: - paths: - - spec.json - script: - - mix pleroma.openapi_spec spec.json - -benchmark: - stage: benchmark - when: manual - variables: - MIX_ENV: benchmark - services: - - name: postgres:9.6 - alias: postgres - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - script: - - mix ecto.create - - mix ecto.migrate - - mix pleroma.load_testing - -unit-testing: - stage: test - only: - changes: - - "**/*.ex" - - "**/*.exs" - - "mix.lock" - cache: &testing_cache_policy - <<: *global_cache_policy - policy: pull - - services: - - name: postgres:13 - alias: postgres - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - script: - - mix ecto.create - - mix ecto.migrate - - mix coveralls --preload-modules - -unit-testing-erratic: - stage: test - retry: 2 - only: - changes: - - "**/*.ex" - - "**/*.exs" - - "mix.lock" - cache: &testing_cache_policy - <<: *global_cache_policy - policy: pull - - services: - - name: postgres:13 - alias: postgres - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - script: - - mix ecto.create - - mix ecto.migrate - - mix test --only=erratic - -# Removed to fix CI issue. In this early state it wasn't adding much value anyway. -# TODO Fix and reinstate federated testing -# federated-testing: -# stage: test -# cache: *testing_cache_policy -# services: -# - name: minibikini/postgres-with-rum:12 -# alias: postgres -# command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] -# script: -# - mix deps.get -# - mix ecto.create -# - mix ecto.migrate -# - epmd -daemon -# - mix test --trace --only federated - -unit-testing-rum: - stage: test - only: - changes: - - "**/*.ex" - - "**/*.exs" - - "mix.lock" - cache: *testing_cache_policy - services: - - name: minibikini/postgres-with-rum:12 - alias: postgres - command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] - variables: - <<: *global_variables - RUM_ENABLED: "true" - script: - - mix ecto.create - - mix ecto.migrate - - "mix ecto.migrate --migrations-path priv/repo/optional_migrations/rum_indexing/" - - mix test --preload-modules - -lint: - image: elixir:1.12 - stage: test - only: - changes: - - "**/*.ex" - - "**/*.exs" - - "mix.lock" - cache: *testing_cache_policy - before_script: - - mix local.hex --force - - mix local.rebar --force - - mix deps.get - script: - - mix format --check-formatted - -analysis: - stage: test - only: - changes: - - "**/*.ex" - - "**/*.exs" - - "mix.lock" - cache: *testing_cache_policy - script: - - mix credo --strict --only=warnings,todo,fixme,consistency,readability - -cycles: - stage: test - image: elixir:1.11 - only: - changes: - - "**/*.ex" - - "**/*.exs" - - "mix.lock" - cache: {} - before_script: - - mix local.hex --force - - mix local.rebar --force - - mix deps.get - - apt-get update - - apt-get install cmake libmagic-dev -y - script: - - mix compile - - mix xref graph --format cycles --label compile | awk '{print $0} END{exit ($0 != "No cycles found")}' - -docs-deploy: - stage: deploy - cache: *testing_cache_policy - image: alpine:latest - only: - - stable@pleroma/pleroma - - develop@pleroma/pleroma - before_script: - - apk add curl - script: - - curl -X POST -F"token=$DOCS_PIPELINE_TRIGGER" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" https://git.pleroma.social/api/v4/projects/673/trigger/pipeline -review_app: - image: alpine:3.9 - stage: deploy - before_script: - - apk update && apk add openssh-client git - when: manual - environment: - name: review/$CI_COMMIT_REF_NAME - url: https://$CI_ENVIRONMENT_SLUG.pleroma.online/ - on_stop: stop_review_app - only: - - branches - except: - - master - - develop - script: - - echo "$CI_ENVIRONMENT_SLUG" - - mkdir -p ~/.ssh - - eval $(ssh-agent -s) - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - - ssh-keyscan -H "pleroma.online" >> ~/.ssh/known_hosts - - (ssh -t dokku@pleroma.online -- apps:create "$CI_ENVIRONMENT_SLUG") || true - - (ssh -t dokku@pleroma.online -- git:set "$CI_ENVIRONMENT_SLUG" keep-git-dir true) || true - - ssh -t dokku@pleroma.online -- config:set "$CI_ENVIRONMENT_SLUG" APP_NAME="$CI_ENVIRONMENT_SLUG" APP_HOST="$CI_ENVIRONMENT_SLUG.pleroma.online" MIX_ENV=dokku - - (ssh -t dokku@pleroma.online -- postgres:create $(echo $CI_ENVIRONMENT_SLUG | sed -e 's/-/_/g')_db) || true - - (ssh -t dokku@pleroma.online -- postgres:link $(echo $CI_ENVIRONMENT_SLUG | sed -e 's/-/_/g')_db "$CI_ENVIRONMENT_SLUG") || true - - (ssh -t dokku@pleroma.online -- certs:add "$CI_ENVIRONMENT_SLUG" /home/dokku/server.crt /home/dokku/server.key) || true - - git push -f dokku@pleroma.online:$CI_ENVIRONMENT_SLUG $CI_COMMIT_SHA:refs/heads/master - -spec-deploy: - stage: deploy - artifacts: - paths: - - spec.json - only: - - develop@pleroma/pleroma - image: alpine:latest - before_script: - - apk add curl - script: - - curl -X POST -F"token=$API_DOCS_PIPELINE_TRIGGER" -F'ref=master' -F"variables[BRANCH]=$CI_COMMIT_REF_NAME" -F"variables[JOB_REF]=$CI_JOB_ID" https://git.pleroma.social/api/v4/projects/1130/trigger/pipeline - - -stop_review_app: - image: alpine:3.9 - stage: deploy - before_script: - - apk update && apk add openssh-client git - when: manual - environment: - name: review/$CI_COMMIT_REF_NAME - action: stop - script: - - echo "$CI_ENVIRONMENT_SLUG" - - mkdir -p ~/.ssh - - eval $(ssh-agent -s) - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - - ssh-keyscan -H "pleroma.online" >> ~/.ssh/known_hosts - - ssh -t dokku@pleroma.online -- --force apps:destroy "$CI_ENVIRONMENT_SLUG" - - ssh -t dokku@pleroma.online -- --force postgres:destroy $(echo $CI_ENVIRONMENT_SLUG | sed -e 's/-/_/g')_db - -amd64: - stage: release - image: elixir:1.10.4 - only: &release-only - - stable@pleroma/pleroma - - develop@pleroma/pleroma - - /^maint/.*$/@pleroma/pleroma - - /^release/.*$/@pleroma/pleroma - artifacts: &release-artifacts - name: "pleroma-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA-$CI_JOB_NAME" - paths: - - release/* - # Ideally it would be never for master branch and with the next commit for develop, - # but Gitlab does not support neither `only` for artifacts - # nor setting it to never from .gitlab-ci.yml - # nor expiring with the next commit - expire_in: 42 yrs - - cache: &release-cache - key: $CI_COMMIT_REF_NAME-$CI_JOB_NAME - paths: - - deps - variables: &release-variables - MIX_ENV: prod - before_script: &before-release - - apt-get update && apt-get install -y cmake libmagic-dev - - echo "import Mix.Config" > config/prod.secret.exs - - mix local.hex --force - - mix local.rebar --force - script: &release - - mix deps.get --only prod - - mkdir release - - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_REF_NAME - - mix release --path release - - -amd64-musl: - stage: release - artifacts: *release-artifacts - only: *release-only - image: elixir:1.10.4-alpine - cache: *release-cache - variables: *release-variables - before_script: &before-release-musl - - apk add git gcc g++ musl-dev make cmake file-dev - - echo "import Mix.Config" > config/prod.secret.exs - - mix local.hex --force - - mix local.rebar --force - script: *release - -arm: - stage: release - artifacts: *release-artifacts - only: *release-only - tags: - - arm32-specified - image: arm32v7/elixir:1.10.4 - cache: *release-cache - variables: *release-variables - before_script: *before-release - script: *release - -arm-musl: - stage: release - artifacts: *release-artifacts - only: *release-only - tags: - - arm32-specified - image: arm32v7/elixir:1.10.4-alpine - cache: *release-cache - variables: *release-variables - before_script: *before-release-musl - script: *release - -arm64: - stage: release - artifacts: *release-artifacts - only: *release-only - tags: - - arm - image: arm64v8/elixir:1.10.4 - cache: *release-cache - variables: *release-variables - before_script: *before-release - script: *release - -arm64-musl: - stage: release - artifacts: *release-artifacts - only: *release-only - tags: - - arm - image: arm64v8/elixir:1.10.4-alpine - cache: *release-cache - variables: *release-variables - before_script: *before-release-musl - script: *release - -docker: - stage: docker - image: docker:latest - cache: {} - dependencies: [] - variables: &docker-variables - DOCKER_DRIVER: overlay2 - DOCKER_HOST: unix:///var/run/docker.sock - IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA - IMAGE_TAG_SLUG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG - IMAGE_TAG_LATEST: $CI_REGISTRY_IMAGE:latest - IMAGE_TAG_LATEST_STABLE: $CI_REGISTRY_IMAGE:latest-stable - DOCKER_BUILDX_URL: https://github.com/docker/buildx/releases/download/v0.6.3/buildx-v0.6.3.linux-amd64 - DOCKER_BUILDX_HASH: 980e6b9655f971991fbbb5fd6cd19f1672386195 - before_script: &before-docker - - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - - docker pull $IMAGE_TAG_SLUG || true - - export CI_JOB_TIMESTAMP=$(date --utc -Iseconds) - - export CI_VCS_REF=$CI_COMMIT_SHORT_SHA - allow_failure: true - script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG -t $IMAGE_TAG_LATEST . - tags: - - dind - only: - - develop@pleroma/pleroma - -docker-stable: - stage: docker - image: docker:latest - cache: {} - dependencies: [] - variables: *docker-variables - before_script: *before-docker - allow_failure: true - script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG -t $IMAGE_TAG_LATEST_STABLE . - tags: - - dind - only: - - stable@pleroma/pleroma - -docker-release: - stage: docker - image: docker:latest - cache: {} - dependencies: [] - variables: *docker-variables - before_script: *before-docker - allow_failure: true - script: - script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG . - tags: - - dind - only: - - /^release/.*$/@pleroma/pleroma - -docker-adhoc: - stage: docker - image: docker:latest - cache: {} - dependencies: [] - variables: *docker-variables - before_script: *before-docker - allow_failure: true - script: - script: - - mkdir -p /root/.docker/cli-plugins - - wget "${DOCKER_BUILDX_URL}" -O ~/.docker/cli-plugins/docker-buildx - - echo "${DOCKER_BUILDX_HASH} /root/.docker/cli-plugins/docker-buildx" | sha1sum -c - - chmod +x ~/.docker/cli-plugins/docker-buildx - - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - - docker buildx create --name mbuilder --driver docker-container --use - - docker buildx inspect --bootstrap - - docker buildx build --platform linux/amd64,linux/arm/v7,linux/arm64/v8 --push --cache-from $IMAGE_TAG_SLUG --build-arg VCS_REF=$CI_VCS_REF --build-arg BUILD_DATE=$CI_JOB_TIMESTAMP -t $IMAGE_TAG -t $IMAGE_TAG_SLUG . - tags: - - dind - only: - - /^build-docker/.*$/@pleroma/pleroma diff --git a/.woodpecker/.release.yml b/.woodpecker/.release.yml index 6a972acbb..f8b55effe 100644 --- a/.woodpecker/.release.yml +++ b/.woodpecker/.release.yml @@ -55,7 +55,6 @@ pipeline: - SCW_ACCESS_KEY - SCW_SECRET_KEY - SCW_DEFAULT_ORGANIZATION_ID - group: release image: ${docker_prefix}elixir:1.13-alpine environment: MIX_ENV: prod @@ -90,7 +89,6 @@ pipeline: - SCW_ACCESS_KEY - SCW_SECRET_KEY - SCW_DEFAULT_ORGANIZATION_ID - group: release image: voidlinux/voidlinux-musl environment: MIX_ENV: prod From f1dc1d58149962ecf499cb484af5d09576a4a690 Mon Sep 17 00:00:00 2001 From: floatingghost Date: Fri, 15 Jul 2022 13:52:01 +0000 Subject: [PATCH 2/3] archive historical stable builds (#76) Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/76 --- .woodpecker/.release.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.woodpecker/.release.yml b/.woodpecker/.release.yml index f8b55effe..17bb4b0e4 100644 --- a/.woodpecker/.release.yml +++ b/.woodpecker/.release.yml @@ -17,9 +17,11 @@ pipeline: when: event: - push + - tag branch: - develop - stable + - refs/tags/v* secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -36,21 +38,24 @@ pipeline: - echo "import Mix.Config" > config/prod.secret.exs - mix local.hex --force - mix local.rebar --force - - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_BRANCH + - export BUILD_TAG=$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"} + - export PLEROMA_BUILD_BRANCH=$BUILD_TAG - mix deps.clean --all - mix deps.get --only prod - mkdir release - mix release --path release - zip akkoma-${tag}.zip -r release - - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$CI_COMMIT_BRANCH/akkoma-${tag}.zip + - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$BUILD_TAG/akkoma-${tag}.zip musl: when: event: - push + - tag branch: - develop - stable + - refs/tags/v* secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -71,20 +76,23 @@ pipeline: - mix local.hex --force - mix local.rebar --force - - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_BRANCH + - export BUILD_TAG=$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"} + - export PLEROMA_BUILD_BRANCH=$BUILD_TAG - mix deps.clean --all - mix deps.get --only prod - mix release --path release - zip akkoma-${tag}.zip -r release - - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$CI_COMMIT_BRANCH/akkoma-${tag}-musl.zip + - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$BUILD_TAG/akkoma-${tag}-musl.zip musl1.1: when: event: - push + - tag branch: - develop - stable + - refs/tags/v* secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -107,9 +115,10 @@ pipeline: - mix local.hex --force - mix local.rebar --force - - export PLEROMA_BUILD_BRANCH=$CI_COMMIT_BRANCH + - export BUILD_TAG=$${CI_COMMIT_TAG:-"$CI_COMMIT_BRANCH"} + - export PLEROMA_BUILD_BRANCH=$BUILD_TAG - mix deps.clean --all - mix deps.get --only prod - mix release --path release - zip akkoma-${tag}.zip -r release - - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$CI_COMMIT_BRANCH/akkoma-${tag}-musl11.zip + - rclone copyto akkoma-${tag}.zip scaleway:akkoma-updates/$BUILD_TAG/akkoma-${tag}-musl11.zip From 99ced95d3bf4b49246e6946568cdd31b4173a25f Mon Sep 17 00:00:00 2001 From: FloatingGhost Date: Fri, 15 Jul 2022 16:31:28 +0100 Subject: [PATCH 3/3] bump version --- .woodpecker/.release.yml | 3 +++ CHANGELOG.md | 2 +- mix.exs | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.woodpecker/.release.yml b/.woodpecker/.release.yml index 17bb4b0e4..c411dd2e9 100644 --- a/.woodpecker/.release.yml +++ b/.woodpecker/.release.yml @@ -22,6 +22,7 @@ pipeline: - develop - stable - refs/tags/v* + - refs/tags/stable-* secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -56,6 +57,7 @@ pipeline: - develop - stable - refs/tags/v* + - refs/tags/stable-* secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY @@ -93,6 +95,7 @@ pipeline: - develop - stable - refs/tags/v* + - refs/tags/stable-* secrets: - SCW_ACCESS_KEY - SCW_SECRET_KEY diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c8014f16..1ae33be6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [Unreleased] +## 2022.07 ### Added - Added move account API diff --git a/mix.exs b/mix.exs index c255be1db..3e6710bc3 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do def project do [ app: :pleroma, - version: version("2.5.2"), + version: version("3.0.0"), elixir: "~> 1.9", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(),