Initial release production build with github actions for Darwin AMD64 and Windows AMD64
This commit is contained in:
parent
c322d01d29
commit
db1d1443cf
|
|
@ -1,5 +1,4 @@
|
||||||
name: GitHub Actions Demo
|
name: Build go-socks5-ssh-proxy
|
||||||
run-name: ${{ github.actor }} is testing out GitHub Actions 🚀
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
|
|
@ -13,28 +12,41 @@ env:
|
||||||
# The go version to use for builds. We set check-latest to true when
|
# The go version to use for builds. We set check-latest to true when
|
||||||
# installing, so we get the latest patch version that matches the
|
# installing, so we get the latest patch version that matches the
|
||||||
# expression.
|
# expression.
|
||||||
GO_VERSION: "~1.22.3"
|
GO_VERSION: "~1.22.5"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
Explore-GitHub-Actions:
|
build-release:
|
||||||
|
name: Build release
|
||||||
|
environment: prod
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
|
|
||||||
- run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
|
|
||||||
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
|
|
||||||
- name: Check out repository code
|
- name: Check out repository code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/setup-go@v5
|
- uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.GO_VERSION }}
|
go-version: ${{ env.GO_VERSION }}
|
||||||
cache: true
|
cache: true
|
||||||
check-latest: true
|
check-latest: true
|
||||||
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
|
||||||
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
|
- name: Use config_release.go from action secrets
|
||||||
- name: List files in the repository
|
uses: mobiledevops/secret-to-file-action@v1 # TODO native in Makefile, can be unsafe...
|
||||||
run: |
|
with:
|
||||||
ls ${{ github.workspace }}
|
base64-encoded-secret: ${{ secrets.CONFIG_RELEASE_GO_FILE }}
|
||||||
- run: echo "🍏 This job's status is ${{ job.status }}."
|
filename: "config_release.go"
|
||||||
- run: make ci
|
|
||||||
env:
|
- name: Use resources/ssh_private_key from action secrets
|
||||||
CONFIG_RELEASE_GO_FILE: ${{ secrets.CONFIG_RELEASE_GO_FILE }}
|
uses: mobiledevops/secret-to-file-action@v1 # TODO native in Makefile, can be unsafe...
|
||||||
|
with:
|
||||||
|
base64-encoded-secret: ${{ secrets.RESOURCES_SSH_PRIVATE_KEY }}
|
||||||
|
filename: "ssh_private_key"
|
||||||
|
working-directory: "./resources"
|
||||||
|
|
||||||
|
- run: make release
|
||||||
|
|
||||||
|
- name: Store release artifacts
|
||||||
|
uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: dist-folder
|
||||||
|
path: |
|
||||||
|
dist
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
.DS_Store
|
.DS_Store
|
||||||
socks5-ssh-proxy
|
socks5-ssh-proxy
|
||||||
resources/ssh_*
|
resources/ssh_*
|
||||||
config_release.go
|
config_release*.go
|
||||||
|
config_template_*.go
|
||||||
socks5-ssh-proxy.release
|
socks5-ssh-proxy.release
|
||||||
|
*.base64
|
||||||
*.exe
|
*.exe
|
||||||
*.zip
|
*.zip
|
||||||
|
|
|
||||||
15
Makefile
15
Makefile
|
|
@ -4,10 +4,10 @@ GO_ENV_VARS = CGO_ENABLED=0
|
||||||
|
|
||||||
all: socks5-ssh-proxy
|
all: socks5-ssh-proxy
|
||||||
|
|
||||||
ci: secrets release
|
ci: release
|
||||||
secrets:
|
|
||||||
cat $(CONFIG_RELEASE_GO_FILE) > config_release.go
|
|
||||||
release: socks5-ssh-proxy.release socks5-ssh-proxy.exe
|
release: socks5-ssh-proxy.release socks5-ssh-proxy.exe
|
||||||
|
mkdir -v -p dist
|
||||||
|
cp -v $^ dist
|
||||||
|
|
||||||
test: socks5-ssh-proxy
|
test: socks5-ssh-proxy
|
||||||
cp socks5-ssh-proxy ~/.ssh; cd ~/.ssh; ~/.ssh/socks5-ssh-proxy
|
cp socks5-ssh-proxy ~/.ssh; cd ~/.ssh; ~/.ssh/socks5-ssh-proxy
|
||||||
|
|
@ -16,7 +16,8 @@ test-release: socks5-ssh-proxy.release
|
||||||
socks5-ssh-proxy: $(SOURCES)
|
socks5-ssh-proxy: $(SOURCES)
|
||||||
go build -o $@
|
go build -o $@
|
||||||
socks5-ssh-proxy.release: resources $(SOURCES)
|
socks5-ssh-proxy.release: resources $(SOURCES)
|
||||||
$(GO_ENV_VARS) go build -tags release -o $@
|
GOOS=darwin GOARCH=amd64 $(GO_ENV_VARS) go build -tags release -o $@
|
||||||
|
upx $@
|
||||||
win: socks5-ssh-proxy.exe
|
win: socks5-ssh-proxy.exe
|
||||||
socks5-ssh-proxy.exe: resources $(GARBLE_BIN) $(SOURCES)
|
socks5-ssh-proxy.exe: resources $(GARBLE_BIN) $(SOURCES)
|
||||||
GOOS=windows GOARCH=amd64 $(GARBLE_BIN) build -ldflags -H=windowsgui -tags release -o $@
|
GOOS=windows GOARCH=amd64 $(GARBLE_BIN) build -ldflags -H=windowsgui -tags release -o $@
|
||||||
|
|
@ -41,6 +42,8 @@ clean-key:
|
||||||
config_release.go:
|
config_release.go:
|
||||||
cp config_template.go $@
|
cp config_template.go $@
|
||||||
sed -i '' 's/!release/release/g' $@
|
sed -i '' 's/!release/release/g' $@
|
||||||
|
config_release.go.base64: config_release.go
|
||||||
|
base64 -i $< -o $@
|
||||||
|
|
||||||
resources: resources/ssh_private_key
|
resources: resources/ssh_private_key
|
||||||
resources/ssh_private_key:
|
resources/ssh_private_key:
|
||||||
|
|
@ -49,5 +52,9 @@ resources/ssh_private_key:
|
||||||
@echo "====================================="
|
@echo "====================================="
|
||||||
@cat $@.pub
|
@cat $@.pub
|
||||||
@echo "====================================="
|
@echo "====================================="
|
||||||
|
resources/ssh_private_key.base64: resources/ssh_private_key
|
||||||
|
base64 -i $< -o $@
|
||||||
|
|
||||||
|
secrets: config_release.go.base64 resources/ssh_private_key.base64
|
||||||
|
|
||||||
.phony: clean test win
|
.phony: clean test win
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
# release management with github actions
|
||||||
|
|
||||||
|
* Generate `resources/ssh_private_key` with `make resources/ssh_private_key`
|
||||||
|
* Base64 encode `resources/ssh_private_key` with base64
|
||||||
|
|
||||||
|
## See also
|
||||||
|
|
||||||
|
* <https://github.com/marketplace/actions/secret-to-file>
|
||||||
Loading…
Reference in New Issue