From b5dfb72c30bbe4bc014c84722c79f159ef37230c Mon Sep 17 00:00:00 2001 From: xuu Date: Fri, 13 Oct 2023 11:29:51 -0600 Subject: [PATCH] build: add gitea runner --- .ansible/files/sour.is-paste.service | 14 +++++++++ .ansible/inventory | 5 +++ .ansible/playbook.yml | 25 +++++++++++++++ .gitea/workflows/bump-push.yml | 25 +++++++++++++++ .gitea/workflows/bump.yml | 38 ++++++++++++++++++++++ .gitea/workflows/deploy.yml | 47 ++++++++++++++++++++++++++++ .gitea/workflows/test.yml | 33 +++++++++++++++++++ 7 files changed, 187 insertions(+) create mode 100644 .ansible/files/sour.is-paste.service create mode 100644 .ansible/inventory create mode 100644 .ansible/playbook.yml create mode 100644 .gitea/workflows/bump-push.yml create mode 100644 .gitea/workflows/bump.yml create mode 100644 .gitea/workflows/deploy.yml create mode 100644 .gitea/workflows/test.yml diff --git a/.ansible/files/sour.is-paste.service b/.ansible/files/sour.is-paste.service new file mode 100644 index 0000000..958e676 --- /dev/null +++ b/.ansible/files/sour.is-paste.service @@ -0,0 +1,14 @@ +[Unit] +Description=sour.is paste +After=syslog.target network.target + +[Service] +Type=simple +ExecStart=/usr/local/bin/sour.is-paste +User=www-data + +Restart=always +RestartSec=30 + +[Install] +WantedBy=multi-user.target diff --git a/.ansible/inventory b/.ansible/inventory new file mode 100644 index 0000000..7658f19 --- /dev/null +++ b/.ansible/inventory @@ -0,0 +1,5 @@ +[lavana] +lavana.sour.is + +[kapha] +kapha.sour.is \ No newline at end of file diff --git a/.ansible/playbook.yml b/.ansible/playbook.yml new file mode 100644 index 0000000..b076a8b --- /dev/null +++ b/.ansible/playbook.yml @@ -0,0 +1,25 @@ +--- +- name: Deploy EV + hosts: kapha + + tasks: + - name: Copy build to remote + ansible.builtin.copy: + src: ../build/sour.is-paste + dest: /usr/local/bin/sour.is-paste + owner: root + group: root + + - name: Copy build to remote + ansible.builtin.copy: + src: sour.is-paste.service + dest: /etc/systemd/system/sour.is-paste.service + owner: root + group: root + + - name: Restart service + systemd: + name: sour.is-paste + enabled: true + daemon_reload: true + state: restarted diff --git a/.gitea/workflows/bump-push.yml b/.gitea/workflows/bump-push.yml new file mode 100644 index 0000000..994f4a2 --- /dev/null +++ b/.gitea/workflows/bump-push.yml @@ -0,0 +1,25 @@ +name: Go Bump + +on: + push: + branches: [ "main" ] + +jobs: + bump: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + fetch-tags: true + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.21.1 + + - run: go install github.com/psanetra/git-semver/cli@master + + - run: git tag v$(cli next --stable=false) && git push --tags || echo no change + + - run: echo "🍏 This job's status is ${{ job.status }}." diff --git a/.gitea/workflows/bump.yml b/.gitea/workflows/bump.yml new file mode 100644 index 0000000..890b48b --- /dev/null +++ b/.gitea/workflows/bump.yml @@ -0,0 +1,38 @@ +name: Go Bump + +on: + workflow_dispatch: + inputs: + NAME: + description: "A random input name for the workflow" + type: string + SOME_VALUE: + description: "Some other input to pass" + type: string + + # push: + # branches: [ "main" ] + # pull_request: + # branches: [ "main" ] + +jobs: + bump: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + fetch-tags: true + + - run: echo stable=${{ inputs.STABLE }} pre=${{ inputs.BETA }} + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.21.1 + + - run: go install github.com/psanetra/git-semver/cli@master + + - run: cli next --stable=false + + - run: echo "🍏 This job's status is ${{ job.status }}." diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml new file mode 100644 index 0000000..419a3ad --- /dev/null +++ b/.gitea/workflows/deploy.yml @@ -0,0 +1,47 @@ +name: Deploy + +on: + push: + branches: [ "main" ] + release: + types: [ published ] + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + fetch-tags: true + + - run: apt-get update && apt-get -y install ansible + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.21.1 + + - name: Build + run: go build -ldflags "-s -w" -o ./build/sour.is-paste ./cmd/paste + + - name: Compress + uses: https://git.sour.is/actions/ghaction-upx@v2.4.0 + with: + version: latest + files: | + ./build/sour.is-paste + args: -fq + + - name: Deploy + uses: https://git.sour.is/actions/action-ansible-playbook@v2 + with: + playbook: ${{ gitea.workspace }}/.ansible/playbook.yml + key: ${{secrets.deploy_ssh}} + options: | + --inventory .ansible/inventory + --become + --become-method sudo + --user deploy + + - run: echo "🍏 This job's status is ${{ job.status }}." diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml new file mode 100644 index 0000000..10bc18d --- /dev/null +++ b/.gitea/workflows/test.yml @@ -0,0 +1,33 @@ +name: Go Test + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + test: + runs-on: ubuntu-latest + steps: + - run: echo "🎉 The job was automatically triggered by a ${{ gitea.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by Gitea!" + - run: echo "🔎 The name of your branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}." + + - uses: actions/checkout@v3 + - run: echo "💡 The ${{ gitea.repository }} repository has been cloned to the runner." + - run: echo "🖥️ The workflow is now ready to test your code on the runner." + + - name: List files in the repository + run: | + ls ${{ gitea.workspace }} + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: 1.21.1 + + - name: Test + run: go test -v -race -skip '^TestE2E|TestMain' ./... + + - run: echo "🍏 This job's status is ${{ job.status }}."