From 88996012d791968eba0bb9502c81e54b0ee1ee7c Mon Sep 17 00:00:00 2001 From: Corwin Perren Date: Wed, 9 Jul 2025 02:37:04 -0700 Subject: [PATCH] Revert to copy/paste for now for staging --- .gitea/workflows/build-common.yaml | 124 ------------------------- .gitea/workflows/build-production.yaml | 87 +++++++++++++++-- .gitea/workflows/build-staging.yaml | 87 +++++++++++++++-- 3 files changed, 159 insertions(+), 139 deletions(-) delete mode 100644 .gitea/workflows/build-common.yaml diff --git a/.gitea/workflows/build-common.yaml b/.gitea/workflows/build-common.yaml deleted file mode 100644 index 1a13545..0000000 --- a/.gitea/workflows/build-common.yaml +++ /dev/null @@ -1,124 +0,0 @@ -name: Build and Test - -on: - workflow_call: - inputs: - build_environment: - description: "The build environment (e.g., staging, production)" - required: false - default: "development" - -jobs: - determine_version: - runs-on: ubuntu-latest - outputs: - repo_name: ${{ steps.project_metadata.outputs.REPO_NAME }} - repo_version_hash: ${{ steps.project_metadata.outputs.REPO_VERSION_HASH }} - project_version: ${{ steps.project_metadata.outputs.PROJECT_VERSION }} - docker_tags: ${{ steps.generate_docker_tags.outputs.DOCKER_TAGS }} - docker_deploy_target: ${{ steps.generate_docker_deployment_target.outputs.DOCKER_DEPLOY_TARGET }} - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Setup Node Environment - uses: actions/setup-node@v4 - - - name: Acquire Project Metadata - id: project_metadata - run: | - echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT - echo REPO_VERSION_HASH=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT - echo PROJECT_VERSION=$(npm pkg get version --workspaces=false | tr -d \") >> $GITHUB_OUTPUT - - - name: Generate Docker Tags - id: generate_docker_tags - run: | - DOCKER_TAGS="" - - if [ "${{ inputs.build_environment }}" = "staging" ]; then - DOCKER_TAGS="gitea.perren.cloud/caperren/caperren-com:latest-staging" - else - DOCKER_TAGS="gitea.perren.cloud/caperren/caperren-com:${{ steps.project_metadata.outputs.REPO_VERSION_HASH }}," - DOCKER_TAGS+="gitea.perren.cloud/caperren/caperren-com:${{ steps.project_metadata.outputs.PROJECT_VERSION }}," - DOCKER_TAGS+="gitea.perren.cloud/caperren/caperren-com:latest" - fi - - echo DOCKER_TAGS=$DOCKER_TAGS >> $GITHUB_OUTPUT - - - name: Generate Docker Deployment Target - id: generate_docker_deployment_target - run: | - DOCKER_DEPLOY_TARGET="" - - if [ "${{ inputs.build_environment }}" = "staging" ]; then - DOCKER_DEPLOY_TARGET=caperren-com-staging - else - DOCKER_DEPLOY_TARGET="caperren-com" - fi - - echo DOCKER_DEPLOY_TARGET=$DOCKER_DEPLOY_TARGET >> $GITHUB_OUTPUT - - build_and_push: - runs-on: ubuntu-latest - needs: determine_version - steps: - - name: Checkout caperren-com Repository - uses: actions/checkout@v4 - with: - path: caperren-com - - - name: Login to Docker Registry - uses: docker/login-action@v3 - with: - registry: gitea.perren.cloud - username: ${{ secrets.REGISTRY_USERNAME }} - password: ${{ secrets.ACTIONS_TOKEN }} - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Build and Push - uses: docker/build-push-action@v5 - with: - context: caperren-com - push: true - tags: ${{ needs.determine_version.outputs.docker_tags }} - - test: - runs-on: ubuntu-latest - needs: build_and_push - steps: - - run: echo "Placeholder" - - deploy_production: - runs-on: ubuntu-latest - needs: test - steps: - - name: Pull New Image For App - run: | - curl -k -X 'POST' \ - 'https://caperren.com:444/api/v2.0/app/pull_images' \ - -H 'accept: */*' \ - -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ - -H 'Content-Type: application/json' \ - -d '{ - "name": "${{ needs.determine_version.outputs.docker_deploy_target }}", - "options": {} - }' - - name: Stop App - run: | - curl -k -X 'POST' \ - 'https://caperren.com:444/api/v2.0/app/stop' \ - -H 'accept: */*' \ - -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ - -H 'Content-Type: application/json' \ - -d '"${{ needs.determine_version.outputs.docker_deploy_target }}"' - - name: Start App - run: | - curl -k -X 'POST' \ - 'https://caperren.com:444/api/v2.0/app/stop' \ - -H 'accept: */*' \ - -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ - -H 'Content-Type: application/json' \ - -d '"${{ needs.determine_version.outputs.docker_deploy_target }}"' diff --git a/.gitea/workflows/build-production.yaml b/.gitea/workflows/build-production.yaml index 2c4ff02..f146779 100644 --- a/.gitea/workflows/build-production.yaml +++ b/.gitea/workflows/build-production.yaml @@ -1,19 +1,92 @@ -name: Build and Test Production +name: Build and Test - Production on: push: branches: [main] jobs: determine_version: - uses: ./.gitea/workflows/build-common.yaml - with: - build_environment: production + runs-on: ubuntu-latest + outputs: + repo_name: ${{ steps.project_metadata.outputs.REPO_NAME }} + repo_version_hash: ${{ steps.project_metadata.outputs.REPO_VERSION_HASH }} + project_version: ${{ steps.project_metadata.outputs.PROJECT_VERSION }} + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Setup Node Environment + uses: actions/setup-node@v4 + + - name: Acquire Project Metadata + id: project_metadata + run: | + echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT + echo REPO_VERSION_HASH=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT + echo PROJECT_VERSION=$(npm pkg get version --workspaces=false | tr -d \") >> $GITHUB_OUTPUT build_and_push: - uses: ./.gitea/workflows/build-common.yaml + runs-on: ubuntu-latest + needs: determine_version + steps: + - name: Checkout caperren-com Repository + uses: actions/checkout@v4 + with: + path: caperren-com + + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: gitea.perren.cloud + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.ACTIONS_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and Push + uses: docker/build-push-action@v5 + with: + context: caperren-com + push: true + tags: | + gitea.perren.cloud/caperren/${{ needs.determine_version.outputs.repo_name }}:${{ needs.determine_version.outputs.repo_version_hash }} + gitea.perren.cloud/caperren/${{ needs.determine_version.outputs.repo_name }}:${{ needs.determine_version.outputs.project_version }} + gitea.perren.cloud/caperren/caperren-com:latest test: - uses: ./.gitea/workflows/build-common.yaml + runs-on: ubuntu-latest + needs: build_and_push + steps: + - run: echo "Placeholder" deploy_production: - uses: ./.gitea/workflows/build-common.yaml \ No newline at end of file + runs-on: ubuntu-latest + needs: test + steps: + - name: Pull New Image For App + run: | + curl -k -X 'POST' \ + 'https://caperren.com:444/api/v2.0/app/pull_images' \ + -H 'accept: */*' \ + -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "caperren-com", + "options": {} + }' + - name: Stop App + run: | + curl -k -X 'POST' \ + 'https://caperren.com:444/api/v2.0/app/stop' \ + -H 'accept: */*' \ + -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ + -H 'Content-Type: application/json' \ + -d '"caperren-com"' + - name: Start App + run: | + curl -k -X 'POST' \ + 'https://caperren.com:444/api/v2.0/app/stop' \ + -H 'accept: */*' \ + -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ + -H 'Content-Type: application/json' \ + -d '"caperren-com"' \ No newline at end of file diff --git a/.gitea/workflows/build-staging.yaml b/.gitea/workflows/build-staging.yaml index 68a38f3..e988437 100644 --- a/.gitea/workflows/build-staging.yaml +++ b/.gitea/workflows/build-staging.yaml @@ -1,19 +1,90 @@ -name: Build and Test Staging +name: Build and Test - Staging on: pull_request: types: [ opened, synchronize, reopened ] jobs: determine_version: - uses: ./.gitea/workflows/build-common.yaml - with: - build_environment: staging + runs-on: ubuntu-latest + outputs: + repo_name: ${{ steps.project_metadata.outputs.REPO_NAME }} + repo_version_hash: ${{ steps.project_metadata.outputs.REPO_VERSION_HASH }} + project_version: ${{ steps.project_metadata.outputs.PROJECT_VERSION }} + steps: + - name: Checkout Repository + uses: actions/checkout@v4 + + - name: Setup Node Environment + uses: actions/setup-node@v4 + + - name: Acquire Project Metadata + id: project_metadata + run: | + echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT + echo REPO_VERSION_HASH=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT + echo PROJECT_VERSION=$(npm pkg get version --workspaces=false | tr -d \") >> $GITHUB_OUTPUT build_and_push: - uses: ./.gitea/workflows/build-common.yaml + runs-on: ubuntu-latest + needs: determine_version + steps: + - name: Checkout caperren-com Repository + uses: actions/checkout@v4 + with: + path: caperren-com + + - name: Login to Docker Registry + uses: docker/login-action@v3 + with: + registry: gitea.perren.cloud + username: ${{ secrets.REGISTRY_USERNAME }} + password: ${{ secrets.ACTIONS_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and Push + uses: docker/build-push-action@v5 + with: + context: caperren-com + push: true + tags: | + gitea.perren.cloud/caperren/caperren-com:latest-staging test: - uses: ./.gitea/workflows/build-common.yaml + runs-on: ubuntu-latest + needs: build_and_push + steps: + - run: echo "Placeholder" - deploy_production: - uses: ./.gitea/workflows/build-common.yaml \ No newline at end of file + deploy_staging: + runs-on: ubuntu-latest + needs: test + steps: + - name: Pull New Image For App + run: | + curl -k -X 'POST' \ + 'https://caperren.com:444/api/v2.0/app/pull_images' \ + -H 'accept: */*' \ + -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ + -H 'Content-Type: application/json' \ + -d '{ + "name": "caperren-com-staging", + "options": {} + }' + - name: Stop App + run: | + curl -k -X 'POST' \ + 'https://caperren.com:444/api/v2.0/app/stop' \ + -H 'accept: */*' \ + -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ + -H 'Content-Type: application/json' \ + -d '"caperren-com-staging"' + - name: Start App + run: | + curl -k -X 'POST' \ + 'https://caperren.com:444/api/v2.0/app/stop' \ + -H 'accept: */*' \ + -H 'Authorization: Bearer ${{ secrets.TRUENAS_CAPERRENCOM_API_KEY }}' \ + -H 'Content-Type: application/json' \ + -d '"caperren-com-staging"' \ No newline at end of file