# https://docs.gitea.com/next/usage/actions/quickstart # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions # https://docs.github.com/en/actions/learn-github-actions/contexts#github-context # Configurable with a few commit messages: # - [skip-tests] Skip the test stage # - [skip-deployment] Skip the deployment stage # - [skip-ci] Skip all stages (the whole ci/cd) # name: Build Docker and Deploy run-name: "[cicd-server]: ${{ github.event.head_commit.message }}" on: push: branches: ['master'] jobs: build_server: name: Build Docker Container runs-on: bfb-cicd-latest if: >- !contains(github.event.head_commit.message, '[skip-ci]') && !contains(github.event.head_commit.message, '[skip-deployment]') steps: - run: echo -n "${{ secrets.DOCKER_REG_PASS }}" | docker login registry.blackforestbytes.com -u docker --password-stdin - name: Check out code uses: actions/checkout@v3 - run: cd "${{ gitea.workspace }}/scnserver" && make clean - run: cd "${{ gitea.workspace }}/scnserver" && make dgi - run: cd "${{ gitea.workspace }}/scnserver" && make docker - run: cd "${{ gitea.workspace }}/scnserver" && make push-docker test_server: name: Run Unit-Tests runs-on: bfb-cicd-latest if: >- !contains(github.event.head_commit.message, '[skip-ci]') && !contains(github.event.head_commit.message, '[skip-tests]') steps: - name: Check out code uses: actions/checkout@v3 - name: Get Commiter Info id: commiter_info run: | echo "NAME=$( git log -n 1 --pretty=format:%an )" >> $GITHUB_OUTPUT echo "MAIL=$( git log -n 1 --pretty=format:%ae )" >> $GITHUB_OUTPUT - name: Setup Go uses: actions/setup-go@v5 with: go-version-file: '${{ gitea.workspace }}/scnserver/go.mod' cache: false - name: Print Go Version run: go version - name: Run tests run: cd "${{ gitea.workspace }}/scnserver" && make generate && SCN_TEST_LOGLEVEL=WARN make test deploy_server: name: Deploy to Server needs: [build_server, test_server] runs-on: ubuntu-latest if: >- !cancelled() && !contains(github.event.head_commit.message, '[skip-ci]') && !contains(github.event.head_commit.message, '[skip-deployment]') && needs.build_server.result == 'success' && (needs.test_server.result == 'skipped' || needs.test_server.result == 'success') steps: - name: Execute deploy on remote (via ssh) uses: appleboy/ssh-action@v1.0.0 with: host: simplecloudnotifier.de username: bfb-deploy-bot port: 4477 key: "${{ secrets.SSH_KEY_BFBDEPLOYBOT }}" script: cd /var/docker/deploy-scripts/simplecloudnotifier && ./deploy.sh master "${{ gitea.sha }}" || exit 1