Version 2.4 by chrisby on 2025/04/22 14:30

Show last authors
1 ### GitHub Actions
2
3 The GitHub actions are used for CI purposes. One job is auto update, which can be enabled as follows:
4
5 * Repo > Settings >
6 * General >
7 * Pull Requests > enable "Allow auto-merge".
8 * Branches > Add classic branch protection rule
9 * Branch name pattern: main
10 * Enable "Require status checks to pass before merging".
11 * Actions > General > Workflow permissions > enable "Allow GitHub Actions to create and approve pull requests"
12 * If option is greyed out, then probably the project policy is dictated by the repository policy. Simply do this in repository settings then.
13 * Copy the workflow file from this project. The key configs are the "permissions" to include "contents: write, pull-requests: write" and the "auto-merge" step.
14
15 If you don't need a private module from the same repository, you must delete the "Authenticate for private modules" job. Otherwise, the following steps are necessary:
16
17 * GitHub > Profile > Settings > Developer Settings > Personal Access Tokens > Tokens (classic) > Generate new token
18 * Name: ACTIONS_TOKEN
19 * Select scopes: "repo"
20 * Copy the token
21 * Repo > Settings > Secrets and variables > Actions > New repository secret >
22 * Name: MY_TOKEN
23 * You need to set "environment: MY_TOKEN" in the workflow file to use its environment secrets
24 * Environment Secrets > Add environment secret
25 * Name: ACTIONS_TOKEN
26 * Value:
27
28 Add this to the workflow file:
29
30 - name: Authenticate for private modules
31 env:
32 ACTIONS_TOKEN: ${{ secrets.ACTIONS_TOKEN }}
33 run: |
34 git config --global url."https://${ACTIONS_TOKEN}:x-oauth-basic@github.com/".insteadOf "https://github.com/"
35 go env -w GOPRIVATE=github.com/ocelot-cloud/*
36
37 This is a sample file how the weekly updates can be conducted via GitHub Actions. Create `.github/workflows/weekly-update.yml`:
38
39 ```none
40 name: Weekly Update
41
42 on:
43 schedule:
44 - cron: '0 2 * * 3'
45 workflow_dispatch:
46
47 permissions:
48 contents: write
49 pull-requests: write
50
51 jobs:
52 weekly-update:
53 runs-on: ubuntu-latest
54 steps:
55 - uses: actions/checkout@v4
56
57 - uses: ./.github/actions/setup
58
59 - name: Run ci-runner update
60 run: |
61 go get -u ./...
62 go mod tidy
63 go build
64 # execute the test suite to check whether the updates did not break anything
65
66 - name: Commit and create PR
67 id: cpr
68 uses: peter-evans/create-pull-request@v5
69 with:
70 commit-message: "chore: weekly ci-runner update"
71 branch: weekly/ci-update
72 title: "Weekly CI Runner Update"
73 delete-branch: true
74 token: ${{ secrets.GITHUB_TOKEN }}
75
76 - name: Enable Auto-Merge
77 if: steps.cpr.outputs.pull-request-operation == 'created'
78 uses: peter-evans/enable-pull-request-automerge@v3
79 with:
80 pull-request-number: ${{ steps.cpr.outputs.pull-request-number }}
81 merge-method: squash
82 ```
83
84 ### Private Go Repository Dependency
85
86 If you are developing with Go and need a private repository as a dependency, you need to tell the SDK to use SSH instead of HTTPS to get access.
87
88 git config --global url."ssh://git@github.com/".insteadOf "https://github.com/"
89 go env -w GOPRIVATE=github.com/ocelot-cloud/*