293 lines
11 KiB
YAML
293 lines
11 KiB
YAML
when:
|
|
- event: push
|
|
branch: ${CI_REPO_DEFAULT_BRANCH}
|
|
path: [ "**/*.ex", "**/*.eex", "**/*.exs", "mix.lock", ".woodpecker/**" ]
|
|
- event: tag
|
|
- event: manual
|
|
branch: ${CI_REPO_DEFAULT_BRANCH}
|
|
- event: manual
|
|
branch: stable
|
|
|
|
matrix:
|
|
platform:
|
|
- linux/amd64
|
|
- linux/arm
|
|
- linux/arm64
|
|
|
|
# This is needed for the when clauses below.
|
|
# When the platform clause is fixed, this might not be needed anymore
|
|
labels:
|
|
platform: ${platform}
|
|
|
|
variables:
|
|
script_file_entrypoint: &script_file_entrypoint
|
|
- /bin/sh
|
|
- -c
|
|
- 'printf "%s" "$CI_SCRIPT" | base64 -d > /tmp/ci-script.sh && /bin/sh -xe /tmp/ci-script.sh'
|
|
build_cmds: &build_cmds
|
|
- apt-get update && apt-get install -y cmake libmagic-dev libvips-dev erlang-dev git build-essential zip
|
|
- echo "import Config" > config/prod.secret.exs
|
|
- mix local.hex --force
|
|
- mix local.rebar --force
|
|
- mix deps.get --only prod
|
|
- mkdir release
|
|
- export PLEROMA_BUILD_BRANCH=${CI_COMMIT_BRANCH}
|
|
- mix release --path release
|
|
build_image_amd64: &build_image_amd64 docker.io/hexpm/elixir-amd64:1.17.3-erlang-27.3.4.2-ubuntu-noble-20250716
|
|
build_image_arm: &build_image_arm docker.io/arm32v7/elixir:1.17.3
|
|
build_image_arm64: &build_image_arm64 docker.io/hexpm/elixir-arm64:1.17.3-erlang-27.3.4.2-ubuntu-noble-20250716
|
|
artifacts_uploader_image: &artifacts_uploader_image docker.io/woodpeckercommunity/plugin-gitea-package:0.5.0
|
|
artifacts_uploader_settings: &artifacts_uploader_settings
|
|
user:
|
|
from_secret: pleroma-ci-user
|
|
password:
|
|
from_secret: pleroma-ci-password
|
|
owner: 'pleroma'
|
|
env: &env
|
|
MIX_ENV: prod
|
|
VIX_COMPILATION_MODE: PLATFORM_PROVIDED_LIBVIPS
|
|
DEBIAN_FRONTEND: noninteractive
|
|
|
|
steps:
|
|
otp-develop-amd64:
|
|
image: *build_image_amd64
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/amd64" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
environment: *env
|
|
commands: &amd64_build
|
|
- <<: *build_cmds
|
|
- zip -9rq ${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-amd64.zip release
|
|
|
|
otp-stable-amd64:
|
|
image: *build_image_amd64
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "manual" && CI_COMMIT_BRANCH == "stable"'
|
|
environment: *env
|
|
commands: *amd64_build
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
otp-stable-tag-amd64:
|
|
image: *build_image_amd64
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "tag"'
|
|
environment: *env
|
|
commands:
|
|
- <<: *build_cmds
|
|
- zip -9rq stable-${CI_COMMIT_SHA:0:8}-amd64.zip release
|
|
|
|
otp-develop-arm:
|
|
image: *build_image_arm
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/arm" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
environment: *env
|
|
commands: &arm_build
|
|
- <<: *build_cmds
|
|
- zip -9rq ${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm.zip release
|
|
|
|
otp-stable-arm:
|
|
image: *build_image_arm
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "manual" && CI_COMMIT_BRANCH == "stable"'
|
|
environment: *env
|
|
commands: *arm_build
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
otp-stable-tag-arm:
|
|
image: *build_image_arm
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "tag"'
|
|
environment: *env
|
|
commands:
|
|
- <<: *build_cmds
|
|
- zip -9rq stable-${CI_COMMIT_SHA:0:8}-arm.zip release
|
|
|
|
otp-develop-arm64:
|
|
image: *build_image_arm64
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/arm64" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
environment: *env
|
|
commands: &arm64_build
|
|
- <<: *build_cmds
|
|
- zip -9rq ${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm64.zip release
|
|
|
|
otp-stable-arm64:
|
|
image: *build_image_arm64
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "manual" && CI_COMMIT_BRANCH == "stable"'
|
|
environment: *env
|
|
commands: *arm64_build
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
otp-stable-tag-arm64:
|
|
image: *build_image_arm64
|
|
entrypoint: *script_file_entrypoint
|
|
when:
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "tag"'
|
|
environment: *env
|
|
commands:
|
|
- <<: *build_cmds
|
|
- zip -9rq stable-${CI_COMMIT_SHA:0:8}-arm64.zip release
|
|
|
|
upload-artifacts-amd64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "push" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "manual"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-${CI_COMMIT_BRANCH}-amd64
|
|
package_version: ${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-amd64
|
|
file_source: ./${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-amd64.zip
|
|
file_name: pleroma-${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-amd64.zip
|
|
update: 'true'
|
|
|
|
upload-latest-amd64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "push" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "manual"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-${CI_COMMIT_BRANCH}-amd64
|
|
package_version: latest
|
|
file_source: ./${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-amd64.zip
|
|
file_name: pleroma.zip
|
|
update: 'true'
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
upload-artifacts-tag-amd64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "tag"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-stable-amd64
|
|
package_version: stable-${CI_COMMIT_SHA:0:8}-amd64
|
|
file_source: ./stable-${CI_COMMIT_SHA:0:8}-amd64.zip
|
|
file_name: pleroma-stable-${CI_COMMIT_SHA:0:8}-amd64.zip
|
|
update: 'true'
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
upload-latest-tag-amd64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/amd64" && CI_PIPELINE_EVENT == "tag"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-stable-amd64
|
|
package_version: latest
|
|
file_source: ./stable-${CI_COMMIT_SHA:0:8}-amd64.zip
|
|
file_name: pleroma.zip
|
|
update: 'true'
|
|
|
|
upload-artifacts-arm:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "push" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "manual"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-${CI_COMMIT_BRANCH}-arm
|
|
package_version: ${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm
|
|
file_source: ./${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm.zip
|
|
file_name: pleroma-${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm.zip
|
|
update: 'true'
|
|
|
|
upload-latest-arm:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "push" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "manual"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-${CI_COMMIT_BRANCH}-arm
|
|
package_version: latest
|
|
file_source: ./${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm.zip
|
|
file_name: pleroma.zip
|
|
update: 'true'
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
upload-artifacts-tag-arm:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "tag"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-stable-arm
|
|
package_version: stable-${CI_COMMIT_SHA:0:8}-arm
|
|
file_source: ./stable-${CI_COMMIT_SHA:0:8}-arm.zip
|
|
file_name: pleroma-stable-${CI_COMMIT_SHA:0:8}-arm.zip
|
|
update: 'true'
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
upload-latest-tag-arm:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm" && CI_PIPELINE_EVENT == "tag"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-stable-arm
|
|
package_version: latest
|
|
file_source: ./stable-${CI_COMMIT_SHA:0:8}-arm.zip
|
|
file_name: pleroma.zip
|
|
update: 'true'
|
|
|
|
upload-artifacts-arm64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "push" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "manual"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-${CI_COMMIT_BRANCH}-arm64
|
|
package_version: ${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm64
|
|
file_source: ./${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm64.zip
|
|
file_name: pleroma-${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm64.zip
|
|
update: 'true'
|
|
|
|
upload-latest-arm64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "push" && CI_COMMIT_BRANCH == "${CI_REPO_DEFAULT_BRANCH}"'
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "manual"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-${CI_COMMIT_BRANCH}-arm64
|
|
package_version: latest
|
|
file_source: ./${CI_COMMIT_BRANCH}-${CI_COMMIT_SHA:0:8}-arm64.zip
|
|
file_name: pleroma.zip
|
|
update: 'true'
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
upload-artifacts-tag-arm64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "tag"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-stable-arm64
|
|
package_version: stable-${CI_COMMIT_SHA:0:8}-arm64
|
|
file_source: ./stable-${CI_COMMIT_SHA:0:8}-arm64.zip
|
|
file_name: pleroma-stable-${CI_COMMIT_SHA:0:8}-arm64.zip
|
|
update: 'true'
|
|
|
|
# Tag events don't have CI_COMMIT_BRANCH set, hardcode stable
|
|
upload-latest-tag-arm64:
|
|
image: *artifacts_uploader_image
|
|
when:
|
|
- evaluate: 'platform == "linux/arm64" && CI_PIPELINE_EVENT == "tag"'
|
|
settings:
|
|
<<: *artifacts_uploader_settings
|
|
package_name: pleroma-otp-stable-arm64
|
|
package_version: latest
|
|
file_source: ./stable-${CI_COMMIT_SHA:0:8}-arm64.zip
|
|
file_name: pleroma.zip
|
|
update: 'true'
|