summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClement Tsang <34804052+ClementTsang@users.noreply.github.com>2024-01-28 18:11:05 -0500
committerGitHub <noreply@github.com>2024-01-28 18:11:05 -0500
commitdb9e97a0df805388ba15fe097848a37a21fbdc31 (patch)
tree369ec03cdcb3ba90c04cccbccc81e973189850d3
parenta377e93ecc974eaccb4f3ae88d68f6a01ef8247e (diff)
ci: update upload-artifact to v4.3.0 and download-artifact to v4.1.1 (#1399)
* ci: update upload-artifact to v4.3.0 and download-artifact to v4.1.1 * fix rpm/deb * add exception for quay; idk what I'll do once node support is gone * fix broken script * fix download * migrate 2-17 to cirrus to avoid node deprecation warnings * prevent cirrus cancellation * update cache to work with linux * simplify cache * update some comments * add timeouts
-rw-r--r--.cirrus.yml16
-rw-r--r--.github/workflows/build_releases.yml31
-rw-r--r--.github/workflows/deployment.yml19
-rw-r--r--.github/workflows/nightly.yml7
-rw-r--r--scripts/cirrus/build.py16
5 files changed, 51 insertions, 38 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index 1e30f6a3..696a82e5 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -15,15 +15,16 @@ cache_template: &CACHE_TEMPLATE
folder: $HOME/.cargo/registry
reupload_on_changes: "true"
fingerprint_script:
- - md5 Cargo.lock
+ - $HOME/.cargo/bin/rustc --version
+ - cat Cargo.lock
- echo $CIRRUS_OS
- echo $CIRRUS_TASK_NAME
target_cache:
folder: target
reupload_on_changes: "true"
fingerprint_script:
- - . $HOME/.cargo/env && rustc --version
- - md5 Cargo.lock
+ - $HOME/.cargo/bin/rustc --version
+ - cat Cargo.lock
- echo $CIRRUS_OS
- echo $CIRRUS_TASK_NAME
@@ -39,7 +40,7 @@ env:
CARGO_HUSKY_DONT_INSTALL_HOOKS: "true"
test_task:
- auto_cancellation: $CIRRUS_BRANCH != "main"
+ auto_cancellation: "false" # We set this to false to prevent nightly builds from affecting this
only_if: $CIRRUS_BUILD_SOURCE != "api" && ($CIRRUS_BRANCH == "main" || $CIRRUS_PR != "")
timeout_in: "20m"
skip: "!changesInclude('.cargo/**', '.cirrus.yml', 'sample_configs/**', 'src/**', 'tests/**', 'build.rs', 'Cargo.lock', 'Cargo.toml', 'clippy.toml', 'rustfmt.toml')"
@@ -100,6 +101,13 @@ build_task:
env:
TARGET: "aarch64-apple-darwin"
NAME: "aarch64-apple-darwin"
+ - name: "Legacy Linux (2.17)"
+ alias: "linux_2_17_build"
+ container:
+ image: quay.io/pypa/manylinux2014_x86_64
+ env:
+ TARGET: "x86_64-unknown-linux-gnu"
+ NAME: "x86_64-unknown-linux-gnu-2-17"
<<: *SETUP_TEMPLATE
<<: *CACHE_TEMPLATE
build_script:
diff --git a/.github/workflows/build_releases.yml b/.github/workflows/build_releases.yml
index 5e7eb006..60dcee25 100644
--- a/.github/workflows/build_releases.yml
+++ b/.github/workflows/build_releases.yml
@@ -48,13 +48,6 @@ jobs:
}
- {
os: "ubuntu-20.04",
- target: "x86_64-unknown-linux-gnu",
- cross: false,
- container: quay.io/pypa/manylinux2014_x86_64,
- suffix: "2-17",
- }
- - {
- os: "ubuntu-20.04",
target: "i686-unknown-linux-gnu",
cross: true,
}
@@ -211,15 +204,16 @@ jobs:
cp ./desktop/bottom.desktop release/
- name: Save release as artifact
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
- name: release
+ name: "release-${{ matrix.info.target }}${{ matrix.info.suffix }}"
path: release
build-msi:
name: "Build MSI installer"
runs-on: "windows-2019"
+ timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -257,15 +251,16 @@ jobs:
mv bottom_x86_64_installer.msi release/
- name: Save release as artifact
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
- name: release
+ name: "release-build-msi"
path: release
build-cirrus:
name: "Build using Cirrus CI"
runs-on: "ubuntu-latest"
+ timeout-minutes: 30
steps:
- name: Checkout repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
@@ -289,15 +284,16 @@ jobs:
python ./scripts/cirrus/build.py "$BRANCH" "release/" "${{ inputs.caller }}"
- name: Save release as artifact
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
- name: release
+ name: release-build-cirrus
path: release
build-deb:
name: "Build .deb software packages"
runs-on: "ubuntu-20.04"
+ timeout-minutes: 30
strategy:
fail-fast: false
matrix:
@@ -410,16 +406,17 @@ jobs:
mv ${{ steps.verify.outputs.DEB_FILE }} release/
- name: Save release as artifact
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
- name: release
+ name: release-build-deb-${{ matrix.info.target }}
path: release
build-rpm:
name: "Build .rpm software packages"
runs-on: ubuntu-latest
container: ghcr.io/clementtsang/almalinux-8
+ timeout-minutes: 30
strategy:
fail-fast: false
matrix:
@@ -494,8 +491,8 @@ jobs:
mv ${{ steps.verify.outputs.RPM_FILE }} release/
- name: Save release as artifact
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
- name: release
+ name: release-build-rpm-${{ matrix.info.target }}
path: release
diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml
index d3da34ac..a84b78cd 100644
--- a/.github/workflows/deployment.yml
+++ b/.github/workflows/deployment.yml
@@ -1,6 +1,7 @@
# How we deploy a release. Covers binary builds. Also manages packaging for choco.
#
-# Based on https://github.com/BurntSushi/ripgrep/blob/master/.github/workflows/release.yml
+# Binaries are primarily built by GHA, though some Linux, M1 macOS, and FreeBSD builds are
+# handled by CirrusCI.
name: deployment
@@ -67,10 +68,11 @@ jobs:
echo "Release version: ${{ env.RELEASE_VERSION }}"
- name: Get release artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1
with:
- name: release
+ pattern: release-*
path: release
+ merge-multiple: true
- name: Execute choco packaging script
run: |
@@ -83,10 +85,10 @@ jobs:
mv choco.zip release/
- name: Save release as artifact
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
+ uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
with:
retention-days: 3
- name: release
+ name: release-choco
path: release
upload-release:
@@ -104,17 +106,18 @@ jobs:
echo "Release version: ${{ env.RELEASE_VERSION }}"
- name: Get release artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1
with:
- name: release
+ pattern: release-*
path: release
+ merge-multiple: true
- name: Print out all release files
run: |
echo "Generated $(ls ./release | wc -l) files:"
du -h -d 0 ./release/*
- - name: Upload all saved release files
+ - name: Create release and add release files
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # 0.1.15
with:
token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index d7ea523f..72bae2a3 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -49,10 +49,11 @@ jobs:
needs: [build-release]
steps:
- name: Get release artifacts
- uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
+ uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1
with:
- name: release
+ pattern: release-*
path: release
+ merge-multiple: true
- name: Print out all release files
run: |
@@ -72,7 +73,7 @@ jobs:
run: sleep 10
if: github.event.inputs.isMock != 'mock'
- - name: Upload all saved release files if not mock
+ - name: Add all release files to nightly release if not mock
uses: softprops/action-gh-release@de2c0eb89ae2a093876385947365aca7b0e5f844 # 0.1.15
if: github.event.inputs.isMock != 'mock'
with:
diff --git a/scripts/cirrus/build.py b/scripts/cirrus/build.py
index 3e2667fd..421c777c 100644
--- a/scripts/cirrus/build.py
+++ b/scripts/cirrus/build.py
@@ -4,6 +4,8 @@
# through Cirrus CI's GraphQL interface.
#
# Expects the Cirrus CI API key to be set in the CIRRUS_KEY environment variable.
+#
+# TODO: Explain this in docs how the heck this works.
import os
import json
@@ -12,16 +14,18 @@ import traceback
from textwrap import dedent
from time import sleep, time
from pathlib import Path
-from typing import Optional
+from typing import List, Optional, Tuple
from urllib.request import Request, urlopen, urlretrieve
-URL = "https://api.cirrus-ci.com/graphql"
-TASKS = [
- ("freebsd_12_3_build", "bottom_x86_64-unknown-freebsd-13-2.tar.gz"),
- ("freebsd_13_1_build", "bottom_x86_64-unknown-freebsd-14-0.tar.gz"),
+# Form of each task is (TASK_ALIAS, FILE_NAME).
+TASKS: List[Tuple[str, str]] = [
+ ("freebsd_13_2_build", "bottom_x86_64-unknown-freebsd-13-2.tar.gz"),
+ ("freebsd_14_0_build", "bottom_x86_64-unknown-freebsd-14-0.tar.gz"),
("macos_build", "bottom_aarch64-apple-darwin.tar.gz"),
+ ("linux_2_17_build", "bottom_x86_64-unknown-linux-gnu-2-17.tar.gz"),
]
+URL = "https://api.cirrus-ci.com/graphql"
DL_URL_TEMPLATE = "https://api.cirrus-ci.com/v1/artifact/build/%s/%s/binaries/%s"
@@ -104,7 +108,7 @@ def check_build_status(key: str, id: str) -> Optional[str]:
def try_download(build_id: str, dl_path: Path):
for task, file in TASKS:
url = DL_URL_TEMPLATE % (build_id, task, file)
- out = dl_path / file
+ out = os.path.join(dl_path, file)
print("Downloading {} to {}".format(file, out))
urlretrieve(url, out)