loic-go/.forgejo/workflows/pipeline.yml
2025-03-28 12:07:45 +01:00

75 lines
3 KiB
YAML

name: CI/CD Pipeline
on:
push:
branches:
- main
- "#3-cloudify-loic"
env:
FORGEJO_BASE_URL: ${{ vars.FORGEJO_BASE_URL }}
jobs:
build-and-deploy:
runs-on: ubuntu latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Go
uses: actions/setup-go@v3
with:
go-version: '1.21'
- name: Build Go Binary
run: go build -o loic
- name: Check if Package Exists
id: check_package_exists
uses: actions/http@v1
with:
url: ${{ env.FORGEJO_BASE_URL }}/api/v1/repos/{{ .Identity }}/loic-go/packs/generic/loic-binary
method: GET
headers: |
Authorization: token ${{ secrets.FORGEJO_API_TOKEN }}
- name: Create Package if it Doesn't Exist
if: steps.check_package_exists.outcome == 'failure'
uses: actions/http@v1
with:
url: ${{ env.FORGEJO_BASE_URL }}/api/v1/repos/{{ .Identity }}/loic-go/packs/generic
method: POST
body: '{ "name": "loic-binary", "description": "Loic Go Binary" }'
headers: |
Authorization: token ${{ secrets.FORGEJO_API_TOKEN }}
- name: Create New Version
id: create_version
uses: actions/http@v1
with:
url: ${{ env.FORGEJO_BASE_URL }}/api/v1/repos/{{ .Identity }}/loic-go/packs/generic/loic-binary/versions
method: POST
body: '{ "name": "${{ github.sha }}"}'
headers: |
Authorization: token ${{ secrets.FORGEJO_API_TOKEN }}
- name: Get Version ID
id: get_version_id
run: |
echo "version_id=$(jq -r '.id' <<< "${{ steps.create_version.body }}")" >> $GITHUB_OUTPUT
- name: Upload Asset
uses: actions/http@v1
with:
url: ${{ env.FORGEJO_BASE_URL }}/api/v1/repos/{{ .Identity }}/loic-go/packs/generic/loic-binary/versions/${{ steps.get_version_id.outputs.version_id }}/assets
method: POST
body: ./loic
headers: |
Authorization: token ${{ secrets.FORGEJO_API_TOKEN }}
Content-Type: application/octet-stream
- name: Build and Push Docker Image
run: |
docker build -t loic:${{ github.sha }} .
echo "$FORGEJO_API_TOKEN" | docker login -u {{ .Identity }} --password-stdin ${{ env.FORGEJO_BASE_URL }}
docker tag loic:${{ github.sha }} ${{ env.FORGEJO_BASE_URL }}/{{ .Identity }}/loic:${{ github.sha }}
docker push ${{ env.FORGEJO_BASE_URL }}/{{ .Identity }}/loic:${{ github.sha }}
- name: Update Deployment Manifest
run: |
sed -i "s|image: .*|image: ${{ env.FORGEJO_BASE_URL }}/{{ .Identity }}/loic:${{ github.sha }}|" k8s/deployment.yaml
git config --global user.email "ci@edp.local"
git config --global user.name "CI Bot"
git add k8s/deployment.yaml
git commit -m "Update image to ${{ github.sha }}"
git push
env:
FORGEJO_API_TOKEN: ${{ secrets.FORGEJO_API_TOKEN }}