From d697c86a403503319b17e6a0cec683286d4ef0d6 Mon Sep 17 00:00:00 2001 From: Dany LE Date: Wed, 17 Jul 2024 10:14:51 +0200 Subject: [PATCH] feat(ci): use gitea action instead of jenkins --- .gitea/workflows/build-bin.yml | 31 ++++++++ .gitea/workflows/ci.yml | 72 ++++++++++++++++++ Jenkinsfile | 134 --------------------------------- README.md | 3 +- scripts/mkdocker.sh | 1 + 5 files changed, 106 insertions(+), 135 deletions(-) create mode 100644 .gitea/workflows/build-bin.yml create mode 100644 .gitea/workflows/ci.yml delete mode 100644 Jenkinsfile diff --git a/.gitea/workflows/build-bin.yml b/.gitea/workflows/build-bin.yml new file mode 100644 index 0000000..6890044 --- /dev/null +++ b/.gitea/workflows/build-bin.yml @@ -0,0 +1,31 @@ +name: Building AntOS binaries +on: + workflow_call: + inputs: + platform: + required: true + type: string + +jobs: + build: + runs-on: ci-tools + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - name: Update submodule + run: git submodule update --init + - name: Building binaries for platform - ${{ inputs.platform }} + run: | + mkdir build + DESTDIR=$(realpath build) \ + ARCH=${{ inputs.platform }} \ + RUSTUP_HOME=/opt/rust/rustup \ + CARGO_HOME=/opt/rust/cargo \ + make all deb appimg + - name: Save artifact + uses: actions/upload-artifact@v3 + with: + name: build-${{ inputs.platform }} + path: build/ + retention-days: 5 + - run: echo "Build is ${{ job.status }}." diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..d274d97 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,72 @@ +name: AntOS pipeline +run-name: Building AntOS binaries +on: [push] + +jobs: + build-amd64: + uses: ./.gitea/workflows/build-bin.yml + with: + platform: amd64 + build-arm64: + uses: ./.gitea/workflows/build-bin.yml + with: + platform: arm64 + + build-arm: + uses: ./.gitea/workflows/build-bin.yml + with: + platform: arm + + publish-on-tag: + runs-on: act-runner + if: gitea.event_name == 'push' && contains(gitea.ref, 'refs/tags/') + needs: [build-amd64, build-arm64, build-arm] + container: + image: catthehacker/ubuntu:act-latest + steps: + - name: Check out repository code + uses: actions/checkout@v4 + - run: mkdir -p build + - name: get build-amd64 artifacts + uses: actions/download-artifact@master + with: + name: build-amd64 + path: build + - name: get build-arm64 artifacts + uses: actions/download-artifact@master + with: + name: build-arm64 + path: build + - name: get build-arm artifacts + uses: actions/download-artifact@master + with: + name: build-arm + path: build + - name: Set up QEMU + uses: docker/setup-qemu-action@master + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@master + - name: Login to DockerHub + uses: docker/login-action@master + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PAT }} + - name: Env + run: | + printenv + docker info + ls . -al + ls build/ -al + - name: Build and push docker image + run: | + PKG_VERSION="${{ gitea.ref_name }}" + DOCKER_TAG=$PKG_VERSION DOCKER_IMAGE=iohubdev/antos make docker + - name: Publish packages + run: | + rm build/*/opt/ -rf + files=$(find ./build -type f) + PKG_VERSION="${{ gitea.ref_name }}" + URL="https://git.iohub.dev/api/packages/dany/generic/antos/$PKG_VERSION" + for file in $files; do + curl --header "Authorization: token ${{ secrets.GT_API_PAT }}" -v --upload-file $file $URL/$(basename $file) + done \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile deleted file mode 100644 index cfb2802..0000000 --- a/Jenkinsfile +++ /dev/null @@ -1,134 +0,0 @@ -pipeline { - agent { - node { label'workstation' } - } - options { - // Limit build history with buildDiscarder option: - // daysToKeepStr: history is only kept up to this many days. - // numToKeepStr: only this many build logs are kept. - // artifactDaysToKeepStr: artifacts are only kept up to this many days. - // artifactNumToKeepStr: only this many builds have their artifacts kept. - buildDiscarder(logRotator(numToKeepStr: '1')) - // Enable timestamps in build log console - timestamps() - // Maximum time to run the whole pipeline before canceling it - timeout(time: 3, unit: 'HOURS') - // Use Jenkins ANSI Color Plugin for log console - ansiColor('xterm') - // Limit build concurrency to 1 per branch - disableConcurrentBuilds() - } - stages - { - stage('Prepare dependencies') { - steps { - sh''' - cd antd/luasocket && git stash || true - cd $WORKSPACE - git submodule update --init - make clean || true - rm -rf build/* || true - mkdir build || true - ''' - } - } - stage('Build AMD64)') { - agent { - docker { - image 'xsangle/ci-tools:latest' - reuseNode true - args ' --device /dev/fuse --privileged ' - } - } - steps { - sh''' - DESTDIR=$(realpath build) \ - ARCH=amd64 \ - RUSTUP_HOME=/opt/rust/rustup \ - CARGO_HOME=/opt/rust/cargo \ - make all deb appimg - ''' - } - } - stage('Build ARM64)') { - agent { - docker { - image 'xsangle/ci-tools:latest' - reuseNode true - args ' --device /dev/fuse --privileged ' - } - } - steps { - sh''' - DESTDIR=$(realpath build) \ - ARCH=arm64 \ - RUSTUP_HOME=/opt/rust/rustup \ - CARGO_HOME=/opt/rust/cargo \ - make all deb appimg - ''' - } - } - stage('Build ARM)') { - agent { - docker { - image 'xsangle/ci-tools:latest' - reuseNode true - args ' --device /dev/fuse --privileged ' - } - } - steps { - sh''' - DESTDIR=$(realpath build) \ - ARCH=arm \ - RUSTUP_HOME=/opt/rust/rustup \ - CARGO_HOME=/opt/rust/cargo \ - make all deb appimg - ''' - } - } - stage('Checking build)') { - steps { - sh''' - ./scripts/ckarch.sh build - ''' - } - } - stage('Build docker') { - steps { - script { - if (env.TAG_NAME) { - sh''' - DOCKER_TAG=$TAG_NAME DOCKER_IMAGE=iohubdev/antos make docker - ''' - } else { - echo "Regular commit doing nothing" - } - } - } - } - stage('Copy doc') { - steps { - sh''' - DOCDIR=/home/dany/public/antos-release/doc/ make doc - SDKDIR=/home/dany/public/antos-release/sdk/ make sdk - ''' - } - } - stage('Copy Binaries') { - steps { - sh''' - BINDIR="/home/dany/public/antos-release/binaries/" - find ./build/ -name "*.deb" -exec install -Dm 755 "{}" "$BINDIR/deb" \\; - find ./build/ -name "*.AppImage" -exec install -Dm 755 "{}" "$BINDIR/appimg" \\; - ''' - } - } - stage('Archive') { - steps { - script { - archiveArtifacts artifacts: 'build/', fingerprint: true - } - } - } - } -} diff --git a/README.md b/README.md index aa6f8f3..7c3c193 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # ![https://github.com/antos-rde/antos/raw/master/antos-64.png](https://github.com/antos-rde/antos/raw/master/antos-64.png) antOS v2.0.0 -[![Build Status](https://ci.iohub.dev/buildStatus/icon?job=gitea-sync%2Fantos%2F2.0.x)](https://ci.iohub.dev/buildStatus/icon?job=gitea-sync%2Fantos%2F2.0.x) + +![https://git.iohub.dev/dany/antos/actions/workflows/ci.yml/badge.svg?branch=master](https://git.iohub.dev/dany/antos/actions/workflows/ci.yml/badge.svg?branch=master) AntOS is a web-based remote desktop environment that provides an all-in-one solution for setting up a cloud-based, self-hosted working environment. It features a backend API and services, a front-end web-based window manager, application APIs, a GUI toolkit, and file system abstractions. It also includes an application store and an SDK for in-browser application development, deployment, and packaging. AntOS is designed to work across devices, including desktop computers and mobile devices. diff --git a/scripts/mkdocker.sh b/scripts/mkdocker.sh index 6751bbf..2b2de69 100755 --- a/scripts/mkdocker.sh +++ b/scripts/mkdocker.sh @@ -1,6 +1,7 @@ #!/bin/bash set -e +set -x DOCKER_IMAGE=$1