]> Untitled Git - lemmy.git/commitdiff
Add woodpecker ci (#2789)
authorDessalines <dessalines@users.noreply.github.com>
Wed, 5 Apr 2023 20:29:35 +0000 (16:29 -0400)
committerGitHub <noreply@github.com>
Wed, 5 Apr 2023 20:29:35 +0000 (16:29 -0400)
* Adding woodpecker. Try 1

* Adding woodpecker. Try 2

* Adding woodpecker. Try 3

* Adding woodpecker. Try 4

* Adding woodpecker. Try 5

* Adding woodpecker. Try 6

* Adding woodpecker. Try 7

* Adding woodpecker. Try 8

* Adding woodpecker. Try 9

* Adding woodpecker. Try 10

* Adding woodpecker. Try 11

* Adding woodpecker. Try 12

* Adding woodpecker. Try 13

* Adding woodpecker. Try 14

* Adding woodpecker. Try 15

* Adding woodpecker. Try 16

* Adding platform when conditionals.

* Adding platform when conditionals 2.

* Adding woodpecker docker buildx.

.drone.yml [deleted file]
.woodpecker.yml [new file with mode: 0644]
README.md

diff --git a/.drone.yml b/.drone.yml
deleted file mode 100644 (file)
index 12630bd..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
----
-kind: pipeline
-name: amd64
-
-platform:
-  os: linux
-  arch: amd64
-
-steps:
-
-  # use minimum supported rust version for most steps
-  - name: prepare repo
-    image: alpine:3
-    commands:
-      - apk add git
-      - git fetch --tags
-      - git submodule init
-      - git submodule update --recursive --remote
-
-  - name: cargo fmt
-    image: clux/muslrust:1.67.0
-    environment:
-      # store cargo data in repo folder so that it gets cached between steps
-      CARGO_HOME: .cargo
-    commands:
-      # need make existing toolchain available
-      - cp ~/.cargo . -r
-      - rustup toolchain install nightly
-      - rustup component add rustfmt --toolchain nightly
-      - cargo +nightly fmt -- --check
-
-  # check each package to make sure they compile with default features.
-  # this is required for crates.io
-  - name: cargo check
-    image: clux/muslrust:1.67.0
-    environment:
-      CARGO_HOME: .cargo
-    commands:
-      - cargo check --package lemmy_utils
-      - cargo check --package lemmy_db_schema
-      - cargo check --package lemmy_db_views
-      - cargo check --package lemmy_db_views_actor
-      - cargo check --package lemmy_db_views_moderator
-      - cargo check --package lemmy_api_common
-      - cargo check --package lemmy_api
-      - cargo check --package lemmy_api_crud
-      - cargo check --package lemmy_apub
-      - cargo check --package lemmy_routes
-      - cargo check --workspace
-      - cargo check --workspace --features console
-      # disabled because it takes too long with pict-rs
-      #- cargo check --workspace --all-features
-
-  - name: cargo clippy
-    image: clux/muslrust:1.67.0
-    environment:
-      CARGO_HOME: .cargo
-    commands:
-        # latest rust for clippy to get extra checks
-        # when adding new clippy lints, make sure to also add them in scripts/fix-clippy.sh
-      - rustup component add clippy
-      - cargo clippy --workspace --tests --all-targets --features console --
-          -D warnings -D deprecated -D clippy::perf -D clippy::complexity 
-          -D clippy::style -D clippy::correctness -D clippy::suspicious
-          -D clippy::dbg_macro -D clippy::inefficient_to_string 
-          -D clippy::items-after-statements -D clippy::implicit_clone 
-          -D clippy::wildcard_imports -D clippy::cast_lossless 
-          -D clippy::manual_string_new -D clippy::redundant_closure_for_method_calls 
-          -D clippy::unused_self
-          -A clippy::uninlined_format_args
-          -D clippy::get_first
-      - cargo clippy --workspace --features console -- 
-        -D clippy::unwrap_used
-        -D clippy::indexing_slicing
-
-  - name: lemmy_api_common doesnt depend on diesel
-    image: clux/muslrust:1.67.0
-    environment:
-      CARGO_HOME: .cargo
-    commands:
-      - "! cargo tree -p lemmy_api_common --no-default-features -i diesel"
-
-  - name: check defaults.hjson updated
-    image: clux/muslrust:1.67.0
-    environment:
-      CARGO_HOME: .cargo
-    commands:
-      - export LEMMY_CONFIG_LOCATION=./config/config.hjson
-      - ./scripts/update_config_defaults.sh config/defaults_current.hjson
-      - diff config/defaults.hjson config/defaults_current.hjson
-
-  - name: cargo test
-    image: clux/muslrust:1.67.0
-    environment:
-      LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
-      RUST_BACKTRACE: 1
-      RUST_TEST_THREADS: 1
-      CARGO_HOME: .cargo
-    commands:
-      - export LEMMY_CONFIG_LOCATION=../../config/config.hjson
-      - cargo test --workspace --no-fail-fast
-
-  - name: cargo build
-    image: clux/muslrust:1.67.0
-    environment:
-      CARGO_HOME: .cargo
-    commands:
-      - cargo build
-      - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server
-
-  - name: run federation tests
-    image: node:alpine
-    environment:
-      LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
-      DO_WRITE_HOSTS_FILE: 1
-    commands:
-      - apk add bash curl postgresql-client
-      - bash api_tests/prepare-drone-federation-test.sh
-      - cd api_tests/
-      - yarn
-      - yarn api-test
-
-  - name: nightly build
-    image: plugins/docker
-    settings:
-      dockerfile: docker/Dockerfile
-      build_args: RUST_RELEASE_MODE=release
-      username:
-        from_secret: docker_username
-      password:
-        from_secret: docker_password
-      repo: dessalines/lemmy
-      add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
-      tags:
-        - dev
-    when:
-      event:
-        - cron
-
-  - name: publish release docker image
-    image: plugins/docker
-    settings:
-      dockerfile: docker/Dockerfile
-      build_args: RUST_RELEASE_MODE=release
-      username:
-        from_secret: docker_username
-      password:
-        from_secret: docker_password
-      repo: dessalines/lemmy
-      add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
-      auto_tag: true
-      auto_tag_suffix: linux-amd64
-    when:
-      ref:
-        - refs/tags/*
-
-  - name: publish release docker manifest
-    image: plugins/manifest
-    settings:
-      username:
-        from_secret: docker_username
-      password:
-        from_secret: docker_password
-      target: "dessalines/lemmy:${DRONE_TAG}"
-      template: "dessalines/lemmy:${DRONE_TAG}-OS-ARCH"
-      platforms:
-        - linux/amd64
-        - linux/arm64
-      ignore_missing: true
-    when:
-      ref:
-        - refs/tags/*
-
-  - name: publish latest release docker manifest
-    image: plugins/manifest
-    settings:
-      username:
-        from_secret: docker_username
-      password:
-        from_secret: docker_password
-      target: "dessalines/lemmy:latest"
-      template: "dessalines/lemmy:${DRONE_TAG}-OS-ARCH"
-      platforms:
-        - linux/amd64
-        - linux/arm64
-      ignore_missing: true
-    when:
-      ref:
-        - refs/tags/*
-
-  # using https://github.com/pksunkara/cargo-workspaces
-  - name: publish to crates.io
-    image: clux/muslrust:1.67.0
-    environment:
-      CARGO_TOKEN:
-        from_secret: cargo_api_token
-    commands:
-      - cargo install cargo-workspaces
-      - cp -r migrations crates/db_schema/
-      - cargo login "$CARGO_TOKEN"
-      - cargo workspaces publish --from-git --allow-dirty --no-verify --allow-branch "${DRONE_TAG}" --yes custom "${DRONE_TAG}"
-    when:
-      ref:
-        - refs/tags/*
-
-  - name: Notify on failure
-    image: alpine:3
-    commands: 
-      - apk add curl
-      - "curl -d'Drone build failed: ${DRONE_BUILD_LINK}' ntfy.sh/lemmy_drone_ci"
-    when:
-      status:
-        - failure
-
-  - name: Notify on tag deploy
-    image: alpine:3
-    commands: 
-      - apk add curl
-      - "curl -d'lemmy:${DRONE_TAG} deployed' ntfy.sh/lemmy_drone_ci"
-    when:
-      ref:
-        - refs/tags/*
-
-services:
-  - name: database
-    image: postgres:15-alpine
-    environment:
-      POSTGRES_USER: lemmy
-      POSTGRES_PASSWORD: password
-
----
-kind: pipeline
-name: arm64
-
-platform:
-  os: linux
-  arch: arm64
-
-steps:
-
-  - name: prepare repo
-    image: rust:1.57-slim
-    user: root
-    commands:
-      - apt update
-      - apt install --no-install-recommends --yes git
-      - git fetch --tags
-      - git submodule init
-      - git submodule update --recursive --remote
-
-  # TODO temporarily disable arm tests
-  # - name: cargo test
-  #   image: rust:1.57-slim
-  #   environment:
-  #     LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
-  #     LEMMY_CONFIG_LOCATION: ../../config/config.hjson
-  #     RUST_BACKTRACE: 1
-  #     RUST_TEST_THREADS: 1
-  #   commands:
-  #     - apt-get update
-  #     - apt-get -y install --no-install-recommends postgresql-client libssl-dev pkg-config libpq-dev
-  #     - cargo test --workspace --no-fail-fast
-  #     - cargo build
-
-  # TODO temporarily disable arm tests
-  # Using Debian here because there seems to be no official Alpine-based Rust docker image for ARM.
-  # - name: cargo build
-  #   image: rust:1.57-slim
-  #   commands:
-  #     - apt-get update
-  #     - apt-get -y install --no-install-recommends libssl-dev pkg-config libpq-dev
-  #     - cargo build
-  #     - mv target/debug/lemmy_server target/lemmy_server
-
-  # TODO temporarily disable arm tests
-  # - name: run federation tests
-  #   image: node:16-slim
-  #   environment:
-  #     LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
-  #     DO_WRITE_HOSTS_FILE: 1
-  #   commands:
-  #     - mkdir -p /usr/share/man/man1 /usr/share/man/man7
-  #     - apt-get update
-  #     - apt-get -y install --no-install-recommends bash curl libssl-dev pkg-config libpq-dev postgresql-client libc6-dev
-  #     - bash api_tests/prepare-drone-federation-test.sh
-  #     - cd api_tests/
-  #     - yarn
-  #     - yarn api-test
-
-  - name: publish release docker image
-    image: plugins/docker
-    settings:
-      dockerfile: docker/Dockerfile.arm
-      username:
-        from_secret: docker_username
-      password:
-        from_secret: docker_password
-      repo: dessalines/lemmy
-      auto_tag: true
-      auto_tag_suffix: linux-arm64
-    when:
-      ref:
-        - refs/tags/*
-
-  - name: publish release docker manifest
-    image: plugins/manifest
-    settings:
-      username:
-        from_secret: docker_username
-      password:
-        from_secret: docker_password
-      target: "dessalines/lemmy:${DRONE_TAG}"
-      template: "dessalines/lemmy:${DRONE_TAG}-OS-ARCH"
-      platforms:
-        - linux/amd64
-        - linux/arm64
-      ignore_missing: true
-    when:
-      ref:
-        - refs/tags/*
-
-  - name: publish latest release docker manifest
-    image: plugins/manifest
-    settings:
-      username:
-        from_secret: docker_username
-      password:
-        from_secret: docker_password
-      target: "dessalines/lemmy:latest"
-      template: "dessalines/lemmy:${DRONE_TAG}-OS-ARCH"
-      platforms:
-        - linux/amd64
-        - linux/arm64
-      ignore_missing: true
-    when:
-      ref:
-        - refs/tags/*
-
-# TODO temporarily disable arm tests
-# services:
-#   - name: database
-#     image: postgres:12-alpine
-#     environment:
-#       POSTGRES_USER: lemmy
-#       POSTGRES_PASSWORD: password
diff --git a/.woodpecker.yml b/.woodpecker.yml
new file mode 100644 (file)
index 0000000..9b96c52
--- /dev/null
@@ -0,0 +1,253 @@
+# TODO: The when: platform conditionals aren't working currently
+# See https://github.com/woodpecker-ci/woodpecker/issues/1677
+
+pipeline:
+  # use minimum supported rust version for most steps
+  prepare_repo:
+    image: alpine:3
+    commands:
+      - apk add git
+        #- git fetch --tags
+      - git submodule init
+      - git submodule update --recursive --remote
+
+  cargo_fmt:
+    image: clux/muslrust:1.67.0
+    environment:
+      # store cargo data in repo folder so that it gets cached between steps
+      CARGO_HOME: .cargo
+    commands:
+      # need make existing toolchain available
+      - cp ~/.cargo . -r
+      - rustup toolchain install nightly
+      - rustup component add rustfmt --toolchain nightly
+      - cargo +nightly fmt -- --check
+    # when:
+    #   platform: linux/amd64
+
+  # check each package to make sure they compile with default features.
+  # this is required for crates.io
+  cargo_check:
+    image: clux/muslrust:1.67.0
+    environment:
+      CARGO_HOME: .cargo
+    commands:
+      - cargo check --package lemmy_utils
+      - cargo check --package lemmy_db_schema
+      - cargo check --package lemmy_db_views
+      - cargo check --package lemmy_db_views_actor
+      - cargo check --package lemmy_db_views_moderator
+      - cargo check --package lemmy_api_common
+      - cargo check --package lemmy_api
+      - cargo check --package lemmy_api_crud
+      - cargo check --package lemmy_apub
+      - cargo check --package lemmy_routes
+      - cargo check --workspace
+      - cargo check --workspace --features console
+      # disabled because it takes too long with pict-rs
+      #- cargo check --workspace --all-features
+    # when:
+    #   platform: linux/amd64
+
+  cargo_clippy:
+    image: clux/muslrust:1.67.0
+    environment:
+      CARGO_HOME: .cargo
+    commands:
+        # latest rust for clippy to get extra checks
+        # when adding new clippy lints, make sure to also add them in scripts/fix-clippy.sh
+      - rustup component add clippy
+      - cargo clippy --workspace --tests --all-targets --features console --
+          -D warnings -D deprecated -D clippy::perf -D clippy::complexity 
+          -D clippy::style -D clippy::correctness -D clippy::suspicious
+          -D clippy::dbg_macro -D clippy::inefficient_to_string 
+          -D clippy::items-after-statements -D clippy::implicit_clone 
+          -D clippy::wildcard_imports -D clippy::cast_lossless 
+          -D clippy::manual_string_new -D clippy::redundant_closure_for_method_calls 
+          -D clippy::unused_self
+          -A clippy::uninlined_format_args
+          -D clippy::get_first
+      - cargo clippy --workspace --features console -- 
+        -D clippy::unwrap_used
+        -D clippy::indexing_slicing
+    # when:
+    #   platform: linux/amd64
+
+  lemmy_api_common_doesnt_depend_on_diesel:
+    image: clux/muslrust:1.67.0
+    environment:
+      CARGO_HOME: .cargo
+    commands:
+      - "! cargo tree -p lemmy_api_common --no-default-features -i diesel"
+    # when:
+    #   platform: linux/amd64
+
+  check_defaults_hjson_updated:
+    image: clux/muslrust:1.67.0
+    environment:
+      CARGO_HOME: .cargo
+    commands:
+      - export LEMMY_CONFIG_LOCATION=./config/config.hjson
+      - ./scripts/update_config_defaults.sh config/defaults_current.hjson
+      - diff config/defaults.hjson config/defaults_current.hjson
+    # when:
+    #   platform: linux/amd64
+
+  cargo_test:
+    image: clux/muslrust:1.67.0
+    environment:
+      LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432/lemmy
+      RUST_BACKTRACE: "1"
+      RUST_TEST_THREADS: "1"
+      CARGO_HOME: .cargo
+    commands:
+      - export LEMMY_CONFIG_LOCATION=../../config/config.hjson
+      - cargo test --workspace --no-fail-fast
+    # when:
+    #   platform: linux/amd64
+
+  cargo_build:
+    image: clux/muslrust:1.67.0
+    environment:
+      CARGO_HOME: .cargo
+    commands:
+      - cargo build
+      - mv target/x86_64-unknown-linux-musl/debug/lemmy_server target/lemmy_server
+    # when:
+    #   platform: linux/amd64
+
+  run_federation_tests:
+    image: node:alpine
+    environment:
+      LEMMY_DATABASE_URL: postgres://lemmy:password@database:5432
+      DO_WRITE_HOSTS_FILE: "1"
+    commands:
+      - apk add bash curl postgresql-client
+      - bash api_tests/prepare-drone-federation-test.sh
+      - cd api_tests/
+      - yarn
+      - yarn api-test
+    # when:
+    #   platform: linux/amd64
+
+  nightly_build:
+    image: woodpeckerci/plugin-docker-buildx
+    settings:
+      dockerfile: docker/Dockerfile
+      build_args: RUST_RELEASE_MODE=release
+      username:
+        from_secret: docker_username
+      password:
+        from_secret: docker_password
+      repo: dessalines/lemmy
+      # add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
+      tag: dev
+    when:
+      event:
+        - cron
+          #platform: linux/amd64
+
+  publish_release_docker_image_amd:
+    image: woodpeckerci/plugin-docker-buildx
+    settings:
+      dockerfile: docker/Dockerfile
+      build_args: RUST_RELEASE_MODE=release
+      username:
+        from_secret: docker_username
+      password:
+        from_secret: docker_password
+      repo: dessalines/lemmy
+      # add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
+      auto_tag: true
+      # auto_tag_suffix: linux-amd64
+    when:
+      event: tag
+        #platform: linux/amd64
+
+  publish_release_docker_image_arm:
+    image: woodpeckerci/plugin-docker-buildx
+    settings:
+      dockerfile: docker/Dockerfile
+      build_args: RUST_RELEASE_MODE=release
+      username:
+        from_secret: docker_username
+      password:
+        from_secret: docker_password
+      repo: dessalines/lemmy
+      # add_host: github.com:140.82.112.3,static.crates.io:18.154.227.73,crates.io:108.138.64.68,dl-cdn.alpinelinux.org:146.75.30.133
+      auto_tag: true
+      # auto_tag_suffix: linux-arm64
+    when:
+      event: tag
+        #platform: linux/arm64
+
+  #publish_release_docker_manifest:
+  #  image: plugins/manifest
+  #  settings:
+  #    username:
+  #      from_secret: docker_username
+  #    password:
+  #      from_secret: docker_password
+  #    target: "dessalines/lemmy:${CI_COMMIT_TAG}"
+  #    template: "dessalines/lemmy:${CI_COMMIT_TAG}-OS-ARCH"
+  #    platforms:
+  #      - linux/amd64
+  #      - linux/arm64
+  #    ignore_missing: true
+  #  when:
+  #    event: tag
+
+  #publish_latest_release_docker_manifest:
+  #  image: plugins/manifest
+  #  settings:
+  #    username:
+  #      from_secret: docker_username
+  #    password:
+  #      from_secret: docker_password
+  #    target: "dessalines/lemmy:latest"
+  #    template: "dessalines/lemmy:${CI_COMMIT_TAG}-OS-ARCH"
+  #    platforms:
+  #      - linux/amd64
+  #      - linux/arm64
+  #    ignore_missing: true
+  #  when:
+  #    event: tag
+  #      #platform: linux/amd64
+
+  # using https://github.com/pksunkara/cargo-workspaces
+  publish_to_crates_io:
+    image: clux/muslrust:1.67.0
+    commands:
+      - cargo install cargo-workspaces
+      - cp -r migrations crates/db_schema/
+      - cargo login "$CARGO_TOKEN"
+      - cargo workspaces publish --from-git --allow-dirty --no-verify --allow-branch "${CI_COMMIT_TAG}" --yes custom "${CI_COMMIT_TAG}"
+    secrets: [cargo_api_token]
+    when:
+      event: tag
+        #platform: linux/amd64
+
+  notify_on_failure:
+    image: alpine:3
+    commands: 
+      - apk add curl
+      - "curl -d'Drone build failed: ${CI_BUILD_LINK}' ntfy.sh/lemmy_drone_ci"
+    when:
+      status: [ failure ]
+
+  notify_on_tag_deploy:
+    image: alpine:3
+    commands: 
+      - apk add curl
+      - "curl -d'lemmy:${CI_COMMIT_TAG} deployed' ntfy.sh/lemmy_drone_ci"
+    when:
+      event: tag
+
+services:
+  database:
+    image: postgres:15-alpine
+    environment:
+      POSTGRES_USER: lemmy
+      POSTGRES_PASSWORD: password
+    # when:
+    #   platform: linux/amd64
index 5a1c5e5791ff735989d86cb4f76def7984aea34d..01bbf3acf0c1e13c76552bf252612368f0d50c76 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
 <div align="center">
 
 ![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/LemmyNet/lemmy.svg)
-[![Build Status](https://drone.join-lemmy.org/api/badges/LemmyNet/lemmy/status.svg)](https://drone.join-lemmy.org/LemmyNet/lemmy/)
+[![Build Status](https://woodpecker.join-lemmy.org/api/badges/LemmyNet/lemmy/status.svg)](https://woodpecker.join-lemmy.org/LemmyNet/lemmy)
 [![GitHub issues](https://img.shields.io/github/issues-raw/LemmyNet/lemmy.svg)](https://github.com/LemmyNet/lemmy/issues)
 [![Docker Pulls](https://img.shields.io/docker/pulls/dessalines/lemmy.svg)](https://cloud.docker.com/repository/docker/dessalines/lemmy/)
 [![Translation status](http://weblate.join-lemmy.org/widgets/lemmy/-/lemmy/svg-badge.svg)](http://weblate.join-lemmy.org/engage/lemmy/)