From a4d0a916ae061d56d115021188a69aba99adea96 Mon Sep 17 00:00:00 2001 From: Refringe Date: Tue, 26 Mar 2024 23:42:08 -0400 Subject: [PATCH] Renames the example trigger file and updates project README --- README.md | 45 +++++++++++++++++++++++++-------------------- build-trigger.yaml | 35 +++++++++++++++++++++++++++++++++++ project-trigger.yml | 35 ----------------------------------- 3 files changed, 60 insertions(+), 55 deletions(-) create mode 100644 build-trigger.yaml delete mode 100644 project-trigger.yml diff --git a/README.md b/README.md index d09dba8..1a662ef 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,43 @@ -# SPT Build Project - CI/CD Process +# SPT Build Project - CI/CD Overview -This document outlines the Continuous Integration and Continuous Deployment (CI/CD) setup for the `SPT-AKI/Build` project, which automates the build and release process for three interconnected repositories: `SPT-AKI/Modules`, `SPT-AKI/Server`, and `SPT-AKI/Launcher`. The process is orchestrated using Gitea Actions. +This document provides an overview of the Continuous Integration and Continuous Deployment (CI/CD) implemented for the `SPT-AKI` project. This framework is responsible for automating the compilation, building, and deployment phases across three critical repositories: [SPT-AKI/Server](https://dev.sp-tarkov.com/SPT-AKI/Server), [SPT-AKI/Modules](https://dev.sp-tarkov.com/SPT-AKI/Modules), and [SPT-AKI/Launcher](https://dev.sp-tarkov.com/SPT-AKI/Launcher). The process is orchestrated using Gitea Actions. -## Project Repositories - -TODO: Update for Gitea - -~~Each of the three project repositories (`SPT-AKI/Modules`, `SPT-AKI/Server`, `SPT-AKI/Launcher`) requires a `.drone.yml` file configured to trigger a build in this `SPT-AKI/Build` repository using the Drone downstream plugin upon a new tag push (e.g., `v3.8.0`). The contents of the `.drone.yml` file can be found in `project-trigger.yml`. Note that the file must be present and named `.drone.yml` to trigger the build process.~~ - -### Build Process +### CI/CD Build Process This repository initiates the CI/CD build process by performing the following actions: -1. Checks if the passed in tag exists in all three project repositories. -1. Clones the tagged commits of each repository. -1. Builds each project. -1. Combines and compresses the build files into a release file. -1. Copies the release file to web-accessible locations. -1. Sends release notifications. +1. Verification of the existence of the specified tag across the three project repositories. +1. Cloning of the repositories at the specified tagged commits. +1. Compilation and building of each project according to predefined specifications. +1. Aggregation and compression of the build artifacts into a singular release file. +1. Distribution of the release file to designated web-accessible storage locations. +1. Dispatching notifications regarding the release to multiple sources. -## Module Requirements +## Project Repositories Configuration -To build the Modules project, a link to a private repository is required for the build process. The link is stored as a secret in the Drone CI/CD environment. The secret is named `MODULE_DOMAIN` and is used to download files from the private repository. It does not end with a slash. +Each of the three main repositories (Modules, Server, Launcher) are equipped with a `.gitea/workflows/build-trigger.yaml` file. This workflow file is essential for triggering a build within *this* Build repository upon the push of a tag to any of the project repositories. The `build-trigger.yaml` workflow encompasses the following steps: + +1. Cloning of *this* Build repository. +1. Creation and checkout of a dedicated `trigger` branch within *this* Build repository. +1. Committing of a `.gitea/trigger` file into the `trigger` branch, embedding the tag name for traceability. +1. Forceful push of the `trigger` branch back to *this* origin `Build` repository to trigger the build process. + +## Module Build Requirements + +The build process for the Modules project necessitates access to a secured private repository. A link to this repository is saved as a Gitea environment secret, named `MODULE_DOMAIN`. The build process will fail if this secret is not defined. ## Building the Docker Images -Be sure to update the version number to the next available version before building and pushing the Docker images. you must be logged into Docker Desktop to push the images. +Prior to the assembly and distribution of Docker images, it is crucial to increment the version number to a new, unreleased value. Additionally, authentication with Docker Desktop is required to enable image pushing capabilities. ``` -# Build and push the spt-build-node Docker image to the Docker Hub +# Command to build and push the spt-build-node Docker image to Docker Hub docker build -t refringe/spt-build-node:1.0.8 -t refringe/spt-build-node:latest -f Dockerfile.node . docker push refringe/spt-build-node --all-tags -# Build and push the spt-build-dotnet Docker image to the Docker Hub +# Command to build and push the spt-build-dotnet Docker image to Docker Hub docker build -t refringe/spt-build-dotnet:1.0.1 -t refringe/spt-build-dotnet:latest -f Dockerfile.dotnet . docker push refringe/spt-build-dotnet --all-tags ``` + +♥️ diff --git a/build-trigger.yaml b/build-trigger.yaml new file mode 100644 index 0000000..dd57614 --- /dev/null +++ b/build-trigger.yaml @@ -0,0 +1,35 @@ +name: Trigger Main Build Pipeline + +on: + push: + tags: + - '*' + +jobs: + trigger-main-build: + runs-on: ubuntu-latest + steps: + - name: Setup Git Config + run: | + git config --global user.email "triggerbot@example.com" + git config --global user.name "TriggerBot" + + - name: Clone Build Repository + run: | + rm -rf ../Build + git clone https://${{ secrets.BUILD_USERNAME }}:${{ secrets.BUILD_ACCESS_TOKEN }}@dev.sp-tarkov.com/SPT-AKI/Build.git ../Build + + - name: Trigger Branch + working-directory: ../Build + run: git checkout -b trigger || git checkout trigger + + - name: Create Trigger File + working-directory: ../Build + run: | + echo "${GITHUB_REF_NAME}" > .gitea/trigger + git add .gitea/trigger + git commit -m "Project triggered build with tag '${GITHUB_REF_NAME}'" + + - name: Force Push + working-directory: ../Build + run: git push --force origin trigger diff --git a/project-trigger.yml b/project-trigger.yml deleted file mode 100644 index 384a802..0000000 --- a/project-trigger.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: Trigger Main Build Pipeline - -on: - push: - tags: - - '*' - -jobs: - trigger-main-build: - runs-on: ubuntu-latest - steps: - - name: Checkout Code - uses: actions/checkout@v3 - - - name: Setup Git Config - run: | - git config --global user.email "me@refringe.com" - git config --global user.name "TriggerBot" - - - name: Clone Build Repository - run: git clone https://${{ secrets.BUILD_USERNAME }}:${{ secrets.BUILD_PASSWORD }}@dev.sp-tarkov.com/SPT-AKI/Build.git ../main-build-repo - - name: Trigger Branch - working-directory: ../main-build-repo - run: git checkout -b trigger || git checkout trigger - - - name: Create trigger_tag File - working-directory: ../main-build-repo - run: | - echo "${GITHUB_REF_NAME}" > trigger_tag - git add trigger_tag - git commit -m "Update trigger_tag with ${GITHUB_REF_NAME}" - - - name: Force Push - working-directory: ../main-build-repo - run: git push --force origin trigger