Skip to content

Commit

Permalink
Merge pull request #76 from flux-framework/jgf-updates
Browse files Browse the repository at this point in the history
jgf: refactor to use shared functions and fix containment
  • Loading branch information
vsoch authored Jun 27, 2024
2 parents 33ab097 + a07df5a commit ae68c19
Show file tree
Hide file tree
Showing 11 changed files with 562 additions and 469 deletions.
179 changes: 179 additions & 0 deletions .github/workflows/e2e-test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
name: fluence build test

on:
pull_request: []
# Test on demand (dispatch) or once a week, sunday
# We combine the builds into one job to simplify not needing to share
# containers between jobs. We also don't want to push unless the tests pass.
workflow_dispatch:
schedule:
- cron: '0 0 * * 0'

jobs:
build-fluence:

# The scheduler and controller are built together with the hack script
# in the upstream scheduler-plugins
env:
container: ghcr.io/flux-framework/fluence
controller: ghcr.io/flux-framework/fluence-controller
runs-on: ubuntu-latest
name: build fluence
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ^1.21

- name: Build Containers
run: |
make prepare
make build REGISTRY=ghcr.io/flux-framework SCHEDULER_IMAGE=fluence CONTROLLER_IMAGE=fluence-controller
- name: Save Containers
run: |
docker save ${{ env.container }} | gzip > fluence_latest.tar.gz
docker save ${{ env.controller }} | gzip > fluence_controller_latest.tar.gz
- name: Upload container artifact
uses: actions/upload-artifact@v4
with:
name: fluence
path: fluence_latest.tar.gz

- name: Upload container artifact
uses: actions/upload-artifact@v4
with:
name: fluence_controller
path: fluence_controller_latest.tar.gz

build-sidecar:
env:
container: ghcr.io/flux-framework/fluence-sidecar
runs-on: ubuntu-latest
name: build sidecar
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ^1.21

- name: Build Container
run: |
make prepare
make build-sidecar REGISTRY=ghcr.io/flux-framework SIDECAR_IMAGE=fluence-sidecar
- name: Save Container
run: docker save ${{ env.container }} | gzip > fluence_sidecar_latest.tar.gz

- name: Upload container artifact
uses: actions/upload-artifact@v4
with:
name: fluence_sidecar
path: fluence_sidecar_latest.tar.gz

test-fluence:
needs: [build-fluence, build-sidecar]
permissions:
packages: write
env:
fluence_container: ghcr.io/flux-framework/fluence
sidecar_container: ghcr.io/flux-framework/fluence-sidecar
controller_container: ghcr.io/flux-framework/fluence-controller

runs-on: ubuntu-latest
name: test fluence
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ^1.21

- name: Download fluence artifact
uses: actions/download-artifact@v4
with:
name: fluence
path: /tmp

- name: Download fluence_sidecar artifact
uses: actions/download-artifact@v4
with:
name: fluence_sidecar
path: /tmp

- name: Download fluence_controller artifact
uses: actions/download-artifact@v4
with:
name: fluence_controller
path: /tmp

- name: Make Space For Build
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
- name: Load Docker images
run: |
ls /tmp/*.tar.gz
docker load --input /tmp/fluence_sidecar_latest.tar.gz
rm /tmp/fluence_sidecar_latest.tar.gz
docker load --input /tmp/fluence_latest.tar.gz
rm /tmp/fluence_latest.tar.gz
docker load --input /tmp/fluence_controller_latest.tar.gz
rm /tmp/fluence_controller_latest.tar.gz
docker image ls -a | grep fluence
- name: Create Kind Cluster
uses: helm/[email protected]
with:
cluster_name: kind
kubectl_version: v1.28.2
version: v0.20.0
config: ./.github/test-kind-config.yaml

- name: Load Docker Containers into Kind
env:
fluence: ${{ env.fluence_container }}
sidecar: ${{ env.sidecar_container }}
controller: ${{ env.controller_container }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
kind load docker-image ${fluence}
kind load docker-image ${sidecar}
kind load docker-image ${controller}
- name: Install Cert Manager
run: |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.1/cert-manager.yaml
sleep 10
- name: Test Fluence
run: /bin/bash ./.github/test.sh

- name: Tag Weekly Images
run: |
# YEAR-MONTH-DAY or #YYYY-MM-DD
tag=$(echo $(date +%Y-%m-%d))
echo "Tagging and releasing ${{ env.fluence_container}}:${tag}"
docker tag ${{ env.fluence_container }}:latest ${{ env.fluence_container }}:${tag}
echo "Tagging and releasing ${{ env.sidecar_container}}:${tag}"
docker tag ${{ env.sidecar_container }}:latest ${{ env.sidecar_container }}:${tag}
echo "Tagging and releasing ${{ env.controller_container}}:${tag}"
docker tag ${{ env.controller_container }}:latest ${{ env.controller_container }}:${tag}
# If we get here, tests pass, and we can deploy
- name: GHCR Login
if: (github.event_name != 'pull_request')
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Deploy Containers
if: (github.event_name != 'pull_request')
run: |
docker push ${{ env.fluence_container }} --all-tags
docker push ${{ env.sidecar_container }} --all-tags
docker push ${{ env.controller_container }} --all-tags
172 changes: 6 additions & 166 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -1,179 +1,19 @@
name: fluence build test
name: fluence testing

on:
pull_request: []
# Test on demand (dispatch) or once a week, sunday
# We combine the builds into one job to simplify not needing to share
# containers between jobs. We also don't want to push unless the tests pass.
workflow_dispatch:
schedule:
- cron: '0 0 * * 0'

jobs:
build-fluence:

# The scheduler and controller are built together with the hack script
# in the upstream scheduler-plugins
env:
container: ghcr.io/flux-framework/fluence
controller: ghcr.io/flux-framework/fluence-controller
runs-on: ubuntu-latest
name: build fluence
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ^1.19

- name: Build Containers
run: |
make prepare
make build REGISTRY=ghcr.io/flux-framework SCHEDULER_IMAGE=fluence CONTROLLER_IMAGE=fluence-controller
- name: Save Containers
run: |
docker save ${{ env.container }} | gzip > fluence_latest.tar.gz
docker save ${{ env.controller }} | gzip > fluence_controller_latest.tar.gz
- name: Upload container artifact
uses: actions/upload-artifact@v4
with:
name: fluence
path: fluence_latest.tar.gz

- name: Upload container artifact
uses: actions/upload-artifact@v4
with:
name: fluence_controller
path: fluence_controller_latest.tar.gz

build-sidecar:
env:
container: ghcr.io/flux-framework/fluence-sidecar
runs-on: ubuntu-latest
name: build sidecar
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ^1.19

- name: Build Container
run: |
make prepare
make build-sidecar REGISTRY=ghcr.io/flux-framework SIDECAR_IMAGE=fluence-sidecar
- name: Save Container
run: docker save ${{ env.container }} | gzip > fluence_sidecar_latest.tar.gz

- name: Upload container artifact
uses: actions/upload-artifact@v4
with:
name: fluence_sidecar
path: fluence_sidecar_latest.tar.gz

test-fluence:
needs: [build-fluence, build-sidecar]
permissions:
packages: write
env:
fluence_container: ghcr.io/flux-framework/fluence
sidecar_container: ghcr.io/flux-framework/fluence-sidecar
controller_container: ghcr.io/flux-framework/fluence-controller

runs-on: ubuntu-latest
name: test fluence
name: build fluence
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: ^1.19

- name: Download fluence artifact
uses: actions/download-artifact@v4
with:
name: fluence
path: /tmp

- name: Download fluence_sidecar artifact
uses: actions/download-artifact@v4
with:
name: fluence_sidecar
path: /tmp

- name: Download fluence_controller artifact
uses: actions/download-artifact@v4
with:
name: fluence_controller
path: /tmp

- name: Make Space For Build
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android
sudo rm -rf /opt/ghc
- name: Load Docker images
run: |
ls /tmp/*.tar.gz
docker load --input /tmp/fluence_sidecar_latest.tar.gz
rm /tmp/fluence_sidecar_latest.tar.gz
docker load --input /tmp/fluence_latest.tar.gz
rm /tmp/fluence_latest.tar.gz
docker load --input /tmp/fluence_controller_latest.tar.gz
rm /tmp/fluence_controller_latest.tar.gz
docker image ls -a | grep fluence
- name: Create Kind Cluster
uses: helm/[email protected]
with:
cluster_name: kind
kubectl_version: v1.28.2
version: v0.20.0
config: ./.github/test-kind-config.yaml

- name: Load Docker Containers into Kind
env:
fluence: ${{ env.fluence_container }}
sidecar: ${{ env.sidecar_container }}
controller: ${{ env.controller_container }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
kind load docker-image ${fluence}
kind load docker-image ${sidecar}
kind load docker-image ${controller}
- name: Install Cert Manager
run: |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.1/cert-manager.yaml
sleep 10
- name: Test Fluence
run: /bin/bash ./.github/test.sh

- name: Tag Weekly Images
run: |
# YEAR-MONTH-DAY or #YYYY-MM-DD
tag=$(echo $(date +%Y-%m-%d))
echo "Tagging and releasing ${{ env.fluence_container}}:${tag}"
docker tag ${{ env.fluence_container }}:latest ${{ env.fluence_container }}:${tag}
echo "Tagging and releasing ${{ env.sidecar_container}}:${tag}"
docker tag ${{ env.sidecar_container }}:latest ${{ env.sidecar_container }}:${tag}
echo "Tagging and releasing ${{ env.controller_container}}:${tag}"
docker tag ${{ env.controller_container }}:latest ${{ env.controller_container }}:${tag}
# If we get here, tests pass, and we can deploy
- name: GHCR Login
if: (github.event_name != 'pull_request')
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
go-version: ^1.21

- name: Deploy Containers
if: (github.event_name != 'pull_request')
- name: Run Tests
run: |
docker push ${{ env.fluence_container }} --all-tags
docker push ${{ env.sidecar_container }} --all-tags
docker push ${{ env.controller_container }} --all-tags
cd src/fluence
make test
7 changes: 7 additions & 0 deletions src/fluence/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

.PHONY: all
all: test

.PHONY: test
test:
go test -v ./jgf/
2 changes: 1 addition & 1 deletion src/fluence/cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func main() {

// Fluxion GRPC
flux := fluxion.Fluxion{}
flux.InitFluxion(policy, label)
flux.InitFluxion(*policy, *label)

lis, err := net.Listen("tcp", port)
if err != nil {
Expand Down
Loading

0 comments on commit ae68c19

Please sign in to comment.