Update ci.yml #61
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
env: | |
GOOS: linux | |
GOARCH: amd64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.21.x | |
cache: false | |
- name: Get Go cached paths | |
run: | | |
echo "cache=$(go env GOCACHE)" >> $GITHUB_ENV | |
echo "modcache=$(go env GOMODCACHE)" >> $GITHUB_ENV | |
- name: Set up dependencies cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ env.cache }} | |
key: setup-go-deps-${{ runner.os }}-go-${{ hashFiles('go.sum', 'go.mod') }} | |
- run: echo "$GOOS $GOARCH" > env.txt | |
- name: Set up intermediate built files cache | |
uses: actions/cache@v3 | |
with: | |
path: | | |
${{ env.modcache }} | |
key: setup-go-build-${{ env.GOOS }}-${{ env.GOARCH }}-${{ runner.os }}-go-${{ hashFiles('**/*.go', 'env.txt') }} | |
restore-keys: | | |
setup-go-build-${{ env.GOOS }}-${{ env.GOARCH }}-${{ runner.os }}-go | |
- name: Build Linux binary | |
run: go build | |
- name: Build & tar docker image | |
if: ${{ true }} | |
run: | | |
docker build -t az-appservice-go . | |
docker save az-appservice-go |gzip > az-appservice-go.tar.gz | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: docker-image | |
path: az-appservice-go.tar.gz | |
publish-to-dockerhub: | |
if: ${{ true }} | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: docker-image | |
- name: Untar docker image | |
run: | | |
gunzip -c az-appservice-go.tar.gz| docker load | |
docker images | |
- name: Publish | |
run: | | |
docker tag az-appservice-go ${{ secrets.DOCKER_USERNAME }}/az-appservice-go | |
docker login -u ${{ secrets.DOCKER_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }} | |
docker push ${{ secrets.DOCKER_USERNAME }}/az-appservice-go | |
publish-to-azure-registry: | |
if: ${{ true }} | |
needs: [build] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: docker-image | |
- name: Untar docker image | |
run: | | |
gunzip -c az-appservice-go.tar.gz| docker load | |
docker images | |
- name: Publish to Azure Registry | |
run: | | |
docker tag az-appservice-go akvtraining.azurecr.io/az-appservice-go | |
docker login akvtraining.azurecr.io -u ${{ secrets.AZURE_REGISTRY_USER }} -p ${{ secrets.AZURE_REGISTRY_PASSWORD }} | |
docker push akvtraining.azurecr.io/az-appservice-go | |
deplpoy-to-azure-from-dockerhub: | |
needs: [publish-to-dockerhub] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Deploy az-appservice-go-dockerhub | |
uses: azure/webapps-deploy@v2 | |
with: | |
app-name: az-appservice-go-dockerhub | |
publish-profile: ${{ secrets.APP_GO_DOCKERHUB_PROFILE }} | |
deplpoy-to-azure-from-azure-regisrty: | |
needs: [publish-to-azure-registry] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Deploy az-appservice-go-dockerhub | |
uses: azure/webapps-deploy@v2 | |
with: | |
app-name: az-appservice-go-azureregistry | |
publish-profile: ${{ secrets.APP_GO_AZURE_REGISTRY_PROFILE }} |